[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190801230744.GA19115@linux.ibm.com>
Date: Thu, 1 Aug 2019 16:07:44 -0700
From: "Paul E. McKenney" <paulmck@...ux.ibm.com>
To: rcu@...r.kernel.org
Cc: linux-kernel@...r.kernel.org, mingo@...nel.org,
jiangshanlai@...il.com, dipankar@...ibm.com,
akpm@...ux-foundation.org, mathieu.desnoyers@...icios.com,
josh@...htriplett.org, tglx@...utronix.de, peterz@...radead.org,
rostedt@...dmis.org, dhowells@...hat.com, edumazet@...gle.com,
fweisbec@...il.com, oleg@...hat.com, joel@...lfernandes.org
Subject: [PATCH tip/core/rcu 0/18] No-CBs cblist updates for v5.3-rc2
Hello!
This series reduces memory footprint (RCU callbacks posted by no-CBs CPUs)
by causing the no-CBs CPUs to use the existing ->cblist segmented callback
list. This allows these callbacks to take advantage of RCU grace periods
that were started by something other than the corresponding rcuog kthread:
1. Use separate flag to indicate disabled ->cblist.
2. Use separate flag to indicate offloaded ->cblist.
3. Add checks for offloaded callback processing.
4. Make rcutree_migrate_callbacks() start at leaf rcu_node structure.
5. Check for deferred nocb wakeups before nohz_full early exit.
6. Remove deferred wakeup checks for extended quiescent states.
7. Allow lockless use of rcu_segcblist_restempty().
8. Allow lockless use of rcu_segcblist_empty().
9. Leave ->cblist enabled for no-CBs CPUs.
10. Use rcu_segcblist for no-CBs CPUs.
11. Remove obsolete nocb_head and nocb_tail fields.
12. Remove obsolete nocb_q_count and nocb_q_count_lazy fields.
13. Remove obsolete nocb_cb_tail and nocb_cb_head fields.
14. Remove obsolete nocb_gp_head and nocb_gp_tail fields.
15. Use build-time no-CBs check in rcu_do_batch().
16. Use build-time no-CBs check in rcu_core().
17. Use build-time no-CBs check in rcu_pending().
18. Suppress uninitialized false-positive in nocb_gp_wait().
Thanx, Paul
------------------------------------------------------------------------
include/linux/rcu_segcblist.h | 2
include/trace/events/rcu.h | 1
kernel/rcu/rcu_segcblist.c | 64 +++-
kernel/rcu/rcu_segcblist.h | 16 -
kernel/rcu/tree.c | 188 +++++++------
kernel/rcu/tree.h | 29 --
kernel/rcu/tree_plugin.h | 588 ++++++++++++++----------------------------
7 files changed, 374 insertions(+), 514 deletions(-)
Powered by blists - more mailing lists