aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorPaul E. McKenney <paul.mckenney@linaro.org>2012-08-20 00:35:53 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2012-11-16 13:05:56 -0500
commit3fbfbf7a3b66ec424042d909f14ba2ddf4372ea8 (patch)
treecc364c320a6e23927ecc154a8ef8021dc7d1a9e8 /init
parentaac1cda34b84a9411d6b8d18c3658f094c834911 (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 'init')
-rw-r--r--init/Kconfig22
1 files changed, 22 insertions, 0 deletions
diff --git a/init/Kconfig b/init/Kconfig
index ec62139207d3..5ac6ee094225 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -654,6 +654,28 @@ config RCU_BOOST_DELAY
654 654
655 Accept the default if unsure. 655 Accept the default if unsure.
656 656
657config RCU_NOCB_CPU
658 bool "Offload RCU callback processing from boot-selected CPUs"
659 depends on TREE_RCU || TREE_PREEMPT_RCU
660 default n
661 help
662 Use this option to reduce OS jitter for aggressive HPC or
663 real-time workloads. It can also be used to offload RCU
664 callback invocation to energy-efficient CPUs in battery-powered
665 asymmetric multiprocessors.
666
667 This option offloads callback invocation from the set of
668 CPUs specified at boot time by the rcu_nocbs parameter.
669 For each such CPU, a kthread ("rcuoN") will be created to
670 invoke callbacks, where the "N" is the CPU being offloaded.
671 Nothing prevents this kthread from running on the specified
672 CPUs, but (1) the kthreads may be preempted between each
673 callback, and (2) affinity or cgroups can be used to force
674 the kthreads to run on whatever set of CPUs is desired.
675
676 Say Y here if you want reduced OS jitter on selected CPUs.
677 Say N here if you are unsure.
678
657endmenu # "RCU Subsystem" 679endmenu # "RCU Subsystem"
658 680
659config IKCONFIG 681config IKCONFIG