All of lore.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,
	eric.dumazet@gmail.com, darren@dvhart.com, fweisbec@gmail.com,
	sbw@mit.edu, patches@linaro.org
Subject: [PATCH tip/core/rcu 0/22] v2 Improvements to rcu_barrier() and RT response on big systems
Date: Fri, 22 Jun 2012 08:16:55 -0700	[thread overview]
Message-ID: <20120622151655.GA6249@linux.vnet.ibm.com> (raw)

Hello!

This patch series contains improvements to the rcu_barrier() family
of primitives and to latency for large systems.  These are in a
single series due to conflicts that would otherwise occur.  This is an
update from version 1 posted at: https://lkml.org/lkml/2012/6/15/509.
The individual patches are as follows:

1.	Allow the value for RCU_FANOUT_LEAF to be increased (but not
	decreased!) via a boot-time parameter, in turn allowing a
	default kernel build to be adjusted for low RCU grace-period
	initialization latency on a large system.
2.	Stop flagging a four-level rcu_node hierarchy as "experimental".
3.	Work around the new default NR_CPUS=4096 by checking the
	boot-time-computed nr_cpu_ids, allowing this to override
	NR_CPUS.  This again reduces RCU grace-period initialization
	latency for kernels built with large NR_CPUS running on small
	systems.
4.	Shrink a macro argument to keep lines under 80 characters.
5.	Add a pointer in the rcu_state structure to the corresponding
	member of the call_rcu() family of functions in preparation
	for increasing rcu_barrier() concurrency.
6.	Move _rcu_barrier()'s rcu_head structures to the per-CPU
	per-RCU-flavor rcu_data structures so that different flavors
	of rcu_barrier() do not need to contend for the rcu_head
	structures.
7.	Move rcu_barrier()'s rcu_barrier_cpu_count global variable to
	a new ->barrier_cpu_count field in the rcu_state structure, so
	that different flavors of rcu_barrier() do not need to contend
	for this variable.
8.	Move rcu_barrier()'s rcu_barrier_completion global variable to
	a new ->barrier_completion field in the rcu_state structure, so
	that different flavors of rcu_barrier() do not need to contend
	for this variable.
9.	Move rcu_barrier()'s rcu_barrier_mutex global variable to
	a new ->barrier_mutex field in the rcu_state structure, so that
	different flavors of rcu_barrier() do not need to contend for
	this variable.
10.	Remove redundant initialization to zero of the rcu_state structure's
	->n_force_qs and ->n_force_qs_ngp fields.
11.	Introduce counter scheme to allow multiple concurrent executions
	of a given flavor of rcu_barrier() to share work.
12.	Add event tracing for _rcu_barrier().
13.	Add debugfs tracing for _rcu_barrier().
14.	Remove unnecessary per-CPU variable argument from
	__rcu_process_callbacks().
15.	Introduce for_each_rcu_flavor() iterator and use it.  This provides
	a nicer way to iterate through the RCU flavors to do per-flavor
	processing.
16.	Apply the for_each_rcu_flavor() iterator to debugfs tracing.
17.	Remove dead-code gcc helper from code that is no longer ever dead.
18.	Move RCU grace-period initialization into a kthread.
19.	Allow RCU grace-period initialization to be preempted, including
	cond_resched() preemption points for CONFIG_PREEMPT=n systems.
20.	Move RCU grace-period cleanup into a kthread.
21.	Allow RCU grace-period cleanup to be preempted, including
	cond_resched() preemption points for CONFIG_PREEMPT=n systems.
22.	Prevent offline CPUs from executing RCU core code.

Changes from version 1:

o	Apply review comments from Josh Triplett and Steven Rostedt.
o	Added patches 18-22 to reduce scheduling-latency spikes from
	RCU initialization and cleanup on large systems.

							Thanx, Paul

 b/Documentation/kernel-parameters.txt |    5 
 b/include/trace/events/rcu.h          |   45 ++
 b/kernel/rcutree.c                    |   97 +++++
 b/kernel/rcutree.h                    |   23 -
 b/kernel/rcutree_plugin.h             |    2 
 b/kernel/rcutree_trace.c              |    2 
 kernel/rcutree.c                      |  555 +++++++++++++++++++++-------------
 kernel/rcutree.h                      |   25 +
 kernel/rcutree_plugin.h               |  128 -------
 kernel/rcutree_trace.c                |  155 +++++----
 10 files changed, 604 insertions(+), 433 deletions(-)


             reply	other threads:[~2012-06-22 15:26 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-22 15:16 Paul E. McKenney [this message]
2012-06-22 15:17 ` [PATCH tip/core/rcu 01/22] rcu: Control RCU_FANOUT_LEAF from boot-time parameter Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 02/22] rcu: Four-level hierarchy is no longer experimental Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 03/22] rcu: Size rcu_node tree from nr_cpu_ids rather than NR_CPUS Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 04/22] rcu: Prevent excessive line length in RCU_STATE_INITIALIZER() Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 05/22] rcu: Place pointer to call_rcu() in rcu_data structure Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 06/22] rcu: Move _rcu_barrier()'s rcu_head structures to rcu_data structures Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 07/22] rcu: Move rcu_barrier_cpu_count to rcu_state structure Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 08/22] rcu: Move rcu_barrier_completion " Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 09/22] rcu: Move rcu_barrier_mutex " Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 10/22] rcu: Remove needless initialization Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 11/22] rcu: Increase rcu_barrier() concurrency Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 12/22] rcu: Add tracing for _rcu_barrier() Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 13/22] rcu: Add rcu_barrier() statistics to debugfs tracing Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 14/22] rcu: Remove unneeded __rcu_process_callbacks() argument Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 15/22] rcu: Introduce for_each_rcu_flavor() and use it Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 16/22] rcu: Use for_each_rcu_flavor() in TREE_RCU tracing Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 17/22] rcu: RCU_SAVE_DYNTICK code no longer ever dead Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 18/22] rcu: Move RCU grace-period initialization into a kthread Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 19/22] rcu: Allow RCU grace-period initialization to be preempted Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 20/22] rcu: Move RCU grace-period cleanup into kthread Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 21/22] rcu: Allow RCU grace-period cleanup to be preempted Paul E. McKenney
2012-06-22 15:17   ` [PATCH tip/core/rcu 22/22] rcu: Prevent offline CPUs from executing RCU core code Paul E. McKenney
2012-07-01  6:19   ` [PATCH tip/core/rcu 01/22] rcu: Control RCU_FANOUT_LEAF from boot-time parameter Rusty Russell
2012-07-01  7:17     ` Josh Triplett
2012-07-01 12:52       ` Paul E. McKenney
2012-07-01 17:45         ` Josh Triplett

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=20120622151655.GA6249@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=eric.dumazet@gmail.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=patches@linaro.org \
    --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 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.