diff options
author | Paul E. McKenney <paul.mckenney@linaro.org> | 2012-08-20 00:35:53 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2012-11-16 13:05:56 -0500 |
commit | 3fbfbf7a3b66ec424042d909f14ba2ddf4372ea8 (patch) | |
tree | cc364c320a6e23927ecc154a8ef8021dc7d1a9e8 /Documentation/kernel-parameters.txt | |
parent | aac1cda34b84a9411d6b8d18c3658f094c834911 (diff) |
rcu: Add callback-free CPUs
RCU callback execution can add significant OS jitter and also can
degrade both scheduling latency and, in asymmetric multiprocessors,
energy efficiency. This commit therefore adds the ability for selected
CPUs ("rcu_nocbs=" boot parameter) to have their callbacks offloaded
to kthreads. 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.
This feature was inspired by Jim Houston's and Joe Korty's JRCU, and
this commit includes fixes to problems located by Fengguang Wu's
kbuild test robot.
[ paulmck: Added gfp.h include file as suggested by Fengguang Wu. ]
Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'Documentation/kernel-parameters.txt')
-rw-r--r-- | Documentation/kernel-parameters.txt | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 9776f068306b..9d2e5cb3a95f 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -2394,6 +2394,27 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2394 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes | 2394 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes |
2395 | See Documentation/blockdev/ramdisk.txt. | 2395 | See Documentation/blockdev/ramdisk.txt. |
2396 | 2396 | ||
2397 | rcu_nocbs= [KNL,BOOT] | ||
2398 | In kernels built with CONFIG_RCU_NOCB_CPU=y, set | ||
2399 | the specified list of CPUs to be no-callback CPUs. | ||
2400 | Invocation of these CPUs' RCU callbacks will | ||
2401 | be offloaded to "rcuoN" kthreads created for | ||
2402 | that purpose. This reduces OS jitter on the | ||
2403 | offloaded CPUs, which can be useful for HPC and | ||
2404 | real-time workloads. It can also improve energy | ||
2405 | efficiency for asymmetric multiprocessors. | ||
2406 | |||
2407 | rcu_nocbs_poll [KNL,BOOT] | ||
2408 | Rather than requiring that offloaded CPUs | ||
2409 | (specified by rcu_nocbs= above) explicitly | ||
2410 | awaken the corresponding "rcuoN" kthreads, | ||
2411 | make these kthreads poll for callbacks. | ||
2412 | This improves the real-time response for the | ||
2413 | offloaded CPUs by relieving them of the need to | ||
2414 | wake up the corresponding kthread, but degrades | ||
2415 | energy efficiency by requiring that the kthreads | ||
2416 | periodically wake up to do the polling. | ||
2417 | |||
2397 | rcutree.blimit= [KNL,BOOT] | 2418 | rcutree.blimit= [KNL,BOOT] |
2398 | Set maximum number of finished RCU callbacks to process | 2419 | Set maximum number of finished RCU callbacks to process |
2399 | in one batch. | 2420 | in one batch. |