| From: |
| "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> |
| To: |
| linux-kernel@vger.kernel.org |
| Subject: |
| [PATCH tip/core/rcu 0/2] v2 Add callback-free CPUs |
| Date: |
| Tue, 30 Oct 2012 20:45:52 -0700 |
| Message-ID: |
| <20121031034552.GA1999@linux.vnet.ibm.com> |
| 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, patches@linaro.org,
joe.korty@ccur.com |
| Archive-link: |
| Article, Thread
|
Hello!
RCU callback execution can add significant OS jitter and also can
degrade scheduling latency. This commit therefore adds the ability
for selected CPUs ("rcu_nocbs=" boot parameter) to have their callbacks
offloaded to kthreads, inspired by Joe Korty's and Jim Houston's JRCU.
If the "rcu_nocb_poll" boot parameter is also specified, these kthreads
will do polling, removing the need for the offloaded CPUs to do wakeups.
At least one CPU must be doing normal callback processing: currently CPU
0 cannot be selected as a no-CBs CPU. In addition, attempts to offline
the last normal-CBs CPU will fail.
Changes since v1 (https://lkml.org/lkml/2012/9/5/572):
1. Contains fixes for a few problems located by Fengguang Wu's
kbuild test robot.
2. Counters are now atomic_long_t rather than atomic_t, as
suggested by Peter Zijlstra.
3. The rcu_nocbs= kernel boot parameter is now documented.
4. Fixed a bug introduced by commit c96ea7cf (Avoid spurious
RCU CPU stall warnings) that resulted in boot-time NULL-pointer
dereferences (reported by Paul Gortmaker).
4. Account for normal and offloaded callbacks separately, so that
offloading is represented in debugfs output.
The patches in this series are as follows:
1. Offload RCU callbacks based on boot-time kernel parameter.
2. Account for normal and offloaded callbacks separately, so that
offloading is represented in debugfs output.
Thanx, Paul
b/Documentation/kernel-parameters.txt | 5
b/include/trace/events/rcu.h | 1
b/init/Kconfig | 19 +
b/kernel/rcutree.c | 63 ++++-
b/kernel/rcutree.h | 48 ++++
b/kernel/rcutree_plugin.h | 399 +++++++++++++++++++++++++++++++++-
b/kernel/rcutree_trace.c | 12 -
7 files changed, 528 insertions(+), 19 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/