public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: mingo@elte.hu, laijs@cn.fujitsu.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
	josh@joshtriplett.org, niv@us.ibm.com, tglx@linutronix.de,
	peterz@infradead.org, rostedt@goodmis.org,
	Valdis.Kletnieks@vt.edu, dhowells@redhat.com,
	edumazet@google.com, darren@dvhart.com, fweisbec@gmail.com,
	sbw@mit.edu
Subject: [PATCH tip/core/rcu 0/15] v3 RCU idle/no-CB changes for 3.10
Date: Mon, 18 Mar 2013 14:36:08 -0700	[thread overview]
Message-ID: <20130318213608.GA20296@linux.vnet.ibm.com> (raw)

Hello!

This series contains changes to RCU_FAST_NO_HZ idle entry/exit and also
removes restrictions on no-CBs CPUs.

1.	Remove restrictions on no-CBs CPUs.
2.	Allow some control of no-CBs CPUs at kernel-build time.  The option
	of most interest is probably the one that makes -all- CPUs be
	no-CBs CPUs.
3.	Introduce proper blocking to grace-period waits for no-CBs CPUs.
4.	Add event tracing for no-CBs CPU callback registration.
5.	Add event tracing for no-CBs CPU grace periods.
6.	Distinguish the no-CBs kthreads for the various RCU flavors.
	Without this patch, CPU 0 would have up to three kthreads all
	named "rcuo0", which is less than optimal.  These kthreads
	are now named "rcuob/0", "rcuop/0", and "rcuos/0".
7.	Export RCU_FAST_NO_HZ parameters to sysfs to allow run-time
	adjustment.
8.	Re-introduce callback acceleration during grace-period cleanup.
	Now that the callbacks are associated with specific grace periods,
	such acceleration is idempotent, and it is now safe to accelerate
	more than needed.  (In contrast, in the past, too-frequent callback
	acceleration resulted in infrequent RCU failures.)
9.	Use the newly numbered callbacks to greatly reduce the CPU overhead
	incurred at idle entry by RCU_FAST_NO_HZ.  The fact that the
	callbacks are now numbered means that instead of repeatedly
	cranking the RCU state machine to try to get all callbacks
	invoked, we can instead rely on the numbering so that the CPU
	can take full advantage of any grace periods that elapse while
	it is asleep.  CPUs with callbacks still have limited sleep times,
	especially if they have at least one non-lazy callback queued.
10-15.	Allow CPUs to make known their need for future grace periods,
	which is also used to reduce the need for frenetic RCU
	state-machine cranking upon RCU_FAST_NO_HZ entry to idle.
	10.	Move the release of the root rcu_node structure's ->lock
		to then end of rcu_start_gp().
	11.	Repurpose no-CB's grace-period event tracing to that of
		future grace periods, which share no-CB's grace-period
		mechanism.
	12.	Move the release of the root rcu_node structure's ->lock
		to rcu_start_gp()'s callers.
	13.	Rename the rcu_node ->n_nocb_gp_requests field to
		->need_future_gp.
	14.	Abstract rcu_start_future_gp() from rcu_nocb_wait_gp()
		to that RCU_FAST_NO_HZ can use the no-CB CPUs mechanism
		for allowing a CPU to record its need for future grace
		periods.
	15.	Make rcu_accelerate_cbs() note the need for future
		grace periods, thus avoiding delays in starting grace
		periods that currently happen due to the CPUs needing
		those grace periods being out of action when the previous
		grace period ends.

Changes since v2:

o	Broke initial patch into smaller pieces.
o	Significant additional testing completed.

Changes since v1:

o	Fixed a deadlock in #1 spotted by Xie ChanglongX.
o	Updated #2 to bring the abbreviations in line with conventional
	per-CPU kthread naming.
o	Moved the first two patches into their own group.

								Thanx, Paul


 b/Documentation/kernel-parameters.txt |   35 -
 b/include/linux/rcupdate.h            |    1 
 b/include/trace/events/rcu.h          |   71 ++
 b/init/Kconfig                        |   71 ++
 b/kernel/rcutree.c                    |  279 +++++++---
 b/kernel/rcutree.h                    |   43 -
 b/kernel/rcutree_plugin.h             |  935 +++++++++++++---------------------
 b/kernel/rcutree_trace.c              |    2 
 8 files changed, 756 insertions(+), 681 deletions(-)


             reply	other threads:[~2013-03-18 21:36 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-18 21:36 Paul E. McKenney [this message]
2013-03-18 21:36 ` [PATCH tip/core/rcu 01/15] rcu: Remove restrictions on no-CBs CPUs Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 02/15] rcu: Provide compile-time control for " Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 03/15] rcu: Introduce proper blocking to no-CBs kthreads GP waits Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 04/15] rcu: Add event tracing for no-CBs CPUs' callback registration Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 05/15] rcu: Add event tracing for no-CBs CPUs' grace periods Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 06/15] rcu: Distinguish "rcuo" kthreads by RCU flavor Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 07/15] rcu: Export RCU_FAST_NO_HZ parameters to sysfs Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 08/15] rcu: Accelerate RCU callbacks at grace-period end Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 09/15] rcu: Make RCU_FAST_NO_HZ take advantage of numbered callbacks Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 10/15] rcu: Rearrange locking in rcu_start_gp() Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 11/15] rcu: Repurpose no-CBs event tracing to future-GP events Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 12/15] rcu: Push lock release to rcu_start_gp()'s callers Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 13/15] rcu: Rename n_nocb_gp_requests to need_future_gp Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 14/15] rcu: Abstract rcu_start_future_gp() from rcu_nocb_wait_gp() Paul E. McKenney
2013-03-18 21:36   ` [PATCH tip/core/rcu 15/15] rcu: Make rcu_accelerate_cbs() note need for future grace periods 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=20130318213608.GA20296@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=Valdis.Kletnieks@vt.edu \
    --cc=akpm@linux-foundation.org \
    --cc=darren@dvhart.com \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=edumazet@google.com \
    --cc=fweisbec@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@elte.hu \
    --cc=niv@us.ibm.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=sbw@mit.edu \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox