All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.ibm.com>
To: rcu@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, mingo@kernel.org,
	jiangshanlai@gmail.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
	josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org,
	rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com,
	fweisbec@gmail.com, oleg@redhat.com, joel@joelfernandes.org
Subject: [PATCH tip/core/rcu 0/18] No-CBs cblist updates for v5.3-rc2
Date: Thu, 1 Aug 2019 16:07:44 -0700	[thread overview]
Message-ID: <20190801230744.GA19115@linux.ibm.com> (raw)

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(-)


             reply	other threads:[~2019-08-01 23:07 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-01 23:07 Paul E. McKenney [this message]
2019-08-01 23:07 ` [PATCH tip/core/rcu 01/18] rcu/nocb: Use separate flag to indicate disabled ->cblist Paul E. McKenney
2019-08-01 23:07 ` [PATCH tip/core/rcu 02/18] rcu/nocb: Use separate flag to indicate offloaded ->cblist Paul E. McKenney
2019-08-01 23:07 ` [PATCH tip/core/rcu 03/18] rcu/nocb: Add checks for offloaded callback processing Paul E. McKenney
2019-08-01 23:07 ` [PATCH tip/core/rcu 04/18] rcu/nocb: Make rcutree_migrate_callbacks() start at leaf rcu_node structure Paul E. McKenney
2019-08-01 23:07 ` [PATCH tip/core/rcu 05/18] rcu/nocb: Check for deferred nocb wakeups before nohz_full early exit Paul E. McKenney
2019-08-01 23:07 ` [PATCH tip/core/rcu 06/18] rcu/nocb: Remove deferred wakeup checks for extended quiescent states Paul E. McKenney
2019-08-01 23:07 ` [PATCH tip/core/rcu 07/18] rcu/nocb: Allow lockless use of rcu_segcblist_restempty() Paul E. McKenney
2019-08-01 23:08 ` [PATCH tip/core/rcu 08/18] rcu/nocb: Allow lockless use of rcu_segcblist_empty() Paul E. McKenney
2019-08-01 23:08 ` [PATCH tip/core/rcu 09/18] rcu/nocb: Leave ->cblist enabled for no-CBs CPUs Paul E. McKenney
2019-08-01 23:08 ` [PATCH tip/core/rcu 10/18] rcu/nocb: Use rcu_segcblist " Paul E. McKenney
2019-08-01 23:08 ` [PATCH tip/core/rcu 11/18] rcu/nocb: Remove obsolete nocb_head and nocb_tail fields Paul E. McKenney
2019-08-01 23:08 ` [PATCH tip/core/rcu 12/18] rcu/nocb: Remove obsolete nocb_q_count and nocb_q_count_lazy fields Paul E. McKenney
2019-08-01 23:08 ` [PATCH tip/core/rcu 13/18] rcu/nocb: Remove obsolete nocb_cb_tail and nocb_cb_head fields Paul E. McKenney
2019-08-01 23:08 ` [PATCH tip/core/rcu 14/18] rcu/nocb: Remove obsolete nocb_gp_head and nocb_gp_tail fields Paul E. McKenney
2019-08-01 23:08 ` [PATCH tip/core/rcu 15/18] rcu/nocb: Use build-time no-CBs check in rcu_do_batch() Paul E. McKenney
2019-08-01 23:08 ` [PATCH tip/core/rcu 16/18] rcu/nocb: Use build-time no-CBs check in rcu_core() Paul E. McKenney
2019-08-01 23:08 ` [PATCH tip/core/rcu 17/18] rcu/nocb: Use build-time no-CBs check in rcu_pending() Paul E. McKenney
2019-08-01 23:08 ` [PATCH tip/core/rcu 18/18] rcu/nocb: Suppress uninitialized false-positive in nocb_gp_wait() Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190801230744.GA19115@linux.ibm.com \
    --to=paulmck@linux.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=edumazet@google.com \
    --cc=fweisbec@gmail.com \
    --cc=jiangshanlai@gmail.com \
    --cc=joel@joelfernandes.org \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rcu@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.