1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only 20af92d46SPaul E. McKenney# 30af92d46SPaul E. McKenney# RCU-related configuration options 40af92d46SPaul E. McKenney# 50af92d46SPaul E. McKenney 60af92d46SPaul E. McKenneymenu "RCU Subsystem" 70af92d46SPaul E. McKenney 80af92d46SPaul E. McKenneyconfig TREE_RCU 90af92d46SPaul E. McKenney bool 10b3e627d3SLai Jiangshan default y if SMP 11e67198ccSFrederic Weisbecker # Dynticks-idle tracking 12e67198ccSFrederic Weisbecker select CONTEXT_TRACKING_IDLE 130af92d46SPaul E. McKenney help 140af92d46SPaul E. McKenney This option selects the RCU implementation that is 150af92d46SPaul E. McKenney designed for very large SMP system with hundreds or 160af92d46SPaul E. McKenney thousands of CPUs. It also scales down nicely to 170af92d46SPaul E. McKenney smaller systems. 180af92d46SPaul E. McKenney 190af92d46SPaul E. McKenneyconfig PREEMPT_RCU 200af92d46SPaul E. McKenney bool 218437bb84SAnkur Arora default y if (PREEMPT || PREEMPT_RT || PREEMPT_DYNAMIC) 22b3e627d3SLai Jiangshan select TREE_RCU 230af92d46SPaul E. McKenney help 240af92d46SPaul E. McKenney This option selects the RCU implementation that is 250af92d46SPaul E. McKenney designed for very large SMP systems with hundreds or 260af92d46SPaul E. McKenney thousands of CPUs, but for which real-time response 270af92d46SPaul E. McKenney is also required. It also scales down nicely to 280af92d46SPaul E. McKenney smaller systems. 290af92d46SPaul E. McKenney 300af92d46SPaul E. McKenney Select this option if you are unsure. 310af92d46SPaul E. McKenney 320af92d46SPaul E. McKenneyconfig TINY_RCU 330af92d46SPaul E. McKenney bool 34c1ec7c15SPaul E. McKenney default y if !PREEMPT_RCU && !SMP 350af92d46SPaul E. McKenney help 360af92d46SPaul E. McKenney This option selects the RCU implementation that is 370af92d46SPaul E. McKenney designed for UP systems from which real-time response 380af92d46SPaul E. McKenney is not required. This option greatly reduces the 390af92d46SPaul E. McKenney memory footprint of RCU. 400af92d46SPaul E. McKenney 410af92d46SPaul E. McKenneyconfig RCU_EXPERT 420af92d46SPaul E. McKenney bool "Make expert-level adjustments to RCU configuration" 430af92d46SPaul E. McKenney default n 440af92d46SPaul E. McKenney help 450af92d46SPaul E. McKenney This option needs to be enabled if you wish to make 460af92d46SPaul E. McKenney expert-level adjustments to RCU configuration. By default, 470af92d46SPaul E. McKenney no such adjustments can be made, which has the often-beneficial 480af92d46SPaul E. McKenney side-effect of preventing "make oldconfig" from asking you all 490af92d46SPaul E. McKenney sorts of detailed questions about how you would like numerous 500af92d46SPaul E. McKenney obscure RCU options to be set up. 510af92d46SPaul E. McKenney 520af92d46SPaul E. McKenney Say Y if you need to make expert-level adjustments to RCU. 530af92d46SPaul E. McKenney 540af92d46SPaul E. McKenney Say N if you are unsure. 550af92d46SPaul E. McKenney 560af92d46SPaul E. McKenneyconfig TINY_SRCU 570af92d46SPaul E. McKenney bool 580cd7e350SPaul E. McKenney default y if TINY_RCU 590af92d46SPaul E. McKenney help 600af92d46SPaul E. McKenney This option selects the single-CPU non-preemptible version of SRCU. 610af92d46SPaul E. McKenney 620af92d46SPaul E. McKenneyconfig TREE_SRCU 630af92d46SPaul E. McKenney bool 640cd7e350SPaul E. McKenney default y if !TINY_RCU 650af92d46SPaul E. McKenney help 660af92d46SPaul E. McKenney This option selects the full-fledged version of SRCU. 670af92d46SPaul E. McKenney 68536e8b9bSPaul E. McKenneyconfig FORCE_NEED_SRCU_NMI_SAFE 69536e8b9bSPaul E. McKenney bool "Force selection of NEED_SRCU_NMI_SAFE" 70536e8b9bSPaul E. McKenney depends on !TINY_SRCU 711dc1e0b9SPaul E. McKenney depends on RCU_EXPERT 721dc1e0b9SPaul E. McKenney depends on ARCH_HAS_NMI_SAFE_THIS_CPU_OPS 73536e8b9bSPaul E. McKenney select NEED_SRCU_NMI_SAFE 74536e8b9bSPaul E. McKenney default n 75536e8b9bSPaul E. McKenney help 76536e8b9bSPaul E. McKenney This option forces selection of the NEED_SRCU_NMI_SAFE 77536e8b9bSPaul E. McKenney Kconfig option, allowing testing of srcu_read_lock_nmisafe() 78536e8b9bSPaul E. McKenney and srcu_read_unlock_nmisafe() on architectures (like x86) 79536e8b9bSPaul E. McKenney that select the ARCH_HAS_NMI_SAFE_THIS_CPU_OPS Kconfig option. 80536e8b9bSPaul E. McKenney 812e83b879SPaul E. McKenneyconfig NEED_SRCU_NMI_SAFE 822e83b879SPaul E. McKenney def_bool HAVE_NMI && !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && !TINY_SRCU 832e83b879SPaul E. McKenney 845873b8a9SPaul E. McKenneyconfig TASKS_RCU_GENERIC 85176a6aeaSPaul E. McKenney def_bool TASKS_RCU || TASKS_RUDE_RCU 865873b8a9SPaul E. McKenney help 875873b8a9SPaul E. McKenney This option enables generic infrastructure code supporting 885873b8a9SPaul E. McKenney task-based RCU implementations. Not for manual selection. 895873b8a9SPaul E. McKenney 903b6e1dd4SPaul E. McKenneyconfig FORCE_TASKS_RCU 913b6e1dd4SPaul E. McKenney bool "Force selection of TASKS_RCU" 923b6e1dd4SPaul E. McKenney depends on RCU_EXPERT 933b6e1dd4SPaul E. McKenney select TASKS_RCU 943b6e1dd4SPaul E. McKenney default n 950af92d46SPaul E. McKenney help 963b6e1dd4SPaul E. McKenney This option force-enables a task-based RCU implementation 973b6e1dd4SPaul E. McKenney that uses only voluntary context switch (not preemption!), 983b6e1dd4SPaul E. McKenney idle, and user-mode execution as quiescent states. Not for 993b6e1dd4SPaul E. McKenney manual selection in most cases. 1003b6e1dd4SPaul E. McKenney 1011b4e9fdfSPaul E. McKenneyconfig NEED_TASKS_RCU 1023b6e1dd4SPaul E. McKenney bool 1033b6e1dd4SPaul E. McKenney default n 1041b4e9fdfSPaul E. McKenney 1051b4e9fdfSPaul E. McKenneyconfig TASKS_RCU 1061b4e9fdfSPaul E. McKenney bool 1074dca1af4SAnkur Arora default NEED_TASKS_RCU && PREEMPTION 1083b6e1dd4SPaul E. McKenney select IRQ_WORK 1090af92d46SPaul E. McKenney 1104c3f7b0eSPaul E. McKenneyconfig FORCE_TASKS_RUDE_RCU 1114c3f7b0eSPaul E. McKenney bool "Force selection of Tasks Rude RCU" 1124c3f7b0eSPaul E. McKenney depends on RCU_EXPERT 1134c3f7b0eSPaul E. McKenney select TASKS_RUDE_RCU 1144c3f7b0eSPaul E. McKenney default n 115c84aad76SPaul E. McKenney help 1164c3f7b0eSPaul E. McKenney This option force-enables a task-based RCU implementation 1174c3f7b0eSPaul E. McKenney that uses only context switch (including preemption) and 1184c3f7b0eSPaul E. McKenney user-mode execution as quiescent states. It forces IPIs and 1194c3f7b0eSPaul E. McKenney context switches on all online CPUs, including idle ones, 1204c3f7b0eSPaul E. McKenney so use with caution. Not for manual selection in most cases. 1214c3f7b0eSPaul E. McKenney 1224c3f7b0eSPaul E. McKenneyconfig TASKS_RUDE_RCU 1234c3f7b0eSPaul E. McKenney bool 1244c3f7b0eSPaul E. McKenney default n 1254c3f7b0eSPaul E. McKenney select IRQ_WORK 126c84aad76SPaul E. McKenney 12740c1278aSPaul E. McKenneyconfig FORCE_TASKS_TRACE_RCU 12840c1278aSPaul E. McKenney bool "Force selection of Tasks Trace RCU" 12940c1278aSPaul E. McKenney depends on RCU_EXPERT 13040c1278aSPaul E. McKenney select TASKS_TRACE_RCU 13140c1278aSPaul E. McKenney default n 132d5f177d3SPaul E. McKenney help 133d5f177d3SPaul E. McKenney This option enables a task-based RCU implementation that uses 134d5f177d3SPaul E. McKenney explicit rcu_read_lock_trace() read-side markers, and allows 13540c1278aSPaul E. McKenney these readers to appear in the idle loop as well as on the 13640c1278aSPaul E. McKenney CPU hotplug code paths. It can force IPIs on online CPUs, 13740c1278aSPaul E. McKenney including idle ones, so use with caution. Not for manual 13840c1278aSPaul E. McKenney selection in most cases. 13940c1278aSPaul E. McKenney 14040c1278aSPaul E. McKenneyconfig TASKS_TRACE_RCU 14140c1278aSPaul E. McKenney bool 14240c1278aSPaul E. McKenney default n 14340c1278aSPaul E. McKenney select IRQ_WORK 144d5f177d3SPaul E. McKenney 145*1a72f4bbSPaul E. McKenneyconfig TASKS_TRACE_RCU_NO_MB 146*1a72f4bbSPaul E. McKenney bool "Override RCU Tasks Trace inclusion of read-side memory barriers" 147*1a72f4bbSPaul E. McKenney depends on RCU_EXPERT && TASKS_TRACE_RCU 148*1a72f4bbSPaul E. McKenney default ARCH_WANTS_NO_INSTR 149*1a72f4bbSPaul E. McKenney help 150*1a72f4bbSPaul E. McKenney This option prevents the use of read-side memory barriers in 151*1a72f4bbSPaul E. McKenney rcu_read_lock_tasks_trace() and rcu_read_unlock_tasks_trace() 152*1a72f4bbSPaul E. McKenney even in kernels built with CONFIG_ARCH_WANTS_NO_INSTR=n, that is, 153*1a72f4bbSPaul E. McKenney in kernels that do not have noinstr set up in entry/exit code. 154*1a72f4bbSPaul E. McKenney By setting this option, you are promising to carefully review 155*1a72f4bbSPaul E. McKenney use of ftrace, BPF, and friends to ensure that no tracing 156*1a72f4bbSPaul E. McKenney operation is attached to a function that runs in that portion 157*1a72f4bbSPaul E. McKenney of the entry/exit code that RCU does not watch, that is, 158*1a72f4bbSPaul E. McKenney where rcu_is_watching() returns false. Alternatively, you 159*1a72f4bbSPaul E. McKenney might choose to never remove traces except by rebooting. 160*1a72f4bbSPaul E. McKenney 161*1a72f4bbSPaul E. McKenney Those wishing to disable read-side memory barriers for an entire 162*1a72f4bbSPaul E. McKenney architecture can select this Kconfig option, hence the polarity. 163*1a72f4bbSPaul E. McKenney 164*1a72f4bbSPaul E. McKenney Say Y here if you need speed and will review use of tracing. 165*1a72f4bbSPaul E. McKenney Say N here for certain esoteric testing of RCU itself. 166*1a72f4bbSPaul E. McKenney Take the default if you are unsure. 167*1a72f4bbSPaul E. McKenney 1680af92d46SPaul E. McKenneyconfig RCU_STALL_COMMON 169b3e627d3SLai Jiangshan def_bool TREE_RCU 1700af92d46SPaul E. McKenney help 1710af92d46SPaul E. McKenney This option enables RCU CPU stall code that is common between 1720af92d46SPaul E. McKenney the TINY and TREE variants of RCU. The purpose is to allow 1730af92d46SPaul E. McKenney the tiny variants to disable RCU CPU stall warnings, while 1740af92d46SPaul E. McKenney making these warnings mandatory for the tree variants. 1750af92d46SPaul E. McKenney 1760af92d46SPaul E. McKenneyconfig RCU_NEED_SEGCBLIST 1779b073de1SPaul E. McKenney def_bool ( TREE_RCU || TREE_SRCU || TASKS_RCU_GENERIC ) 1780af92d46SPaul E. McKenney 1790af92d46SPaul E. McKenneyconfig RCU_FANOUT 1800af92d46SPaul E. McKenney int "Tree-based hierarchical RCU fanout value" 1810af92d46SPaul E. McKenney range 2 64 if 64BIT 1820af92d46SPaul E. McKenney range 2 32 if !64BIT 183b3e627d3SLai Jiangshan depends on TREE_RCU && RCU_EXPERT 1840af92d46SPaul E. McKenney default 64 if 64BIT 1850af92d46SPaul E. McKenney default 32 if !64BIT 1860af92d46SPaul E. McKenney help 1870af92d46SPaul E. McKenney This option controls the fanout of hierarchical implementations 1880af92d46SPaul E. McKenney of RCU, allowing RCU to work efficiently on machines with 1890af92d46SPaul E. McKenney large numbers of CPUs. This value must be at least the fourth 1900af92d46SPaul E. McKenney root of NR_CPUS, which allows NR_CPUS to be insanely large. 1910af92d46SPaul E. McKenney The default value of RCU_FANOUT should be used for production 1920af92d46SPaul E. McKenney systems, but if you are stress-testing the RCU implementation 1930af92d46SPaul E. McKenney itself, small RCU_FANOUT values allow you to test large-system 1940af92d46SPaul E. McKenney code paths on small(er) systems. 1950af92d46SPaul E. McKenney 1960af92d46SPaul E. McKenney Select a specific number if testing RCU itself. 1970af92d46SPaul E. McKenney Take the default if unsure. 1980af92d46SPaul E. McKenney 1990af92d46SPaul E. McKenneyconfig RCU_FANOUT_LEAF 2000af92d46SPaul E. McKenney int "Tree-based hierarchical RCU leaf-level fanout value" 201dc126918SPaul E. McKenney range 2 64 if 64BIT && !RCU_STRICT_GRACE_PERIOD 202dc126918SPaul E. McKenney range 2 32 if !64BIT && !RCU_STRICT_GRACE_PERIOD 203dc126918SPaul E. McKenney range 2 3 if RCU_STRICT_GRACE_PERIOD 204b3e627d3SLai Jiangshan depends on TREE_RCU && RCU_EXPERT 205dc126918SPaul E. McKenney default 16 if !RCU_STRICT_GRACE_PERIOD 206dc126918SPaul E. McKenney default 2 if RCU_STRICT_GRACE_PERIOD 2070af92d46SPaul E. McKenney help 2080af92d46SPaul E. McKenney This option controls the leaf-level fanout of hierarchical 2090af92d46SPaul E. McKenney implementations of RCU, and allows trading off cache misses 2100af92d46SPaul E. McKenney against lock contention. Systems that synchronize their 2110af92d46SPaul E. McKenney scheduling-clock interrupts for energy-efficiency reasons will 2120af92d46SPaul E. McKenney want the default because the smaller leaf-level fanout keeps 2130af92d46SPaul E. McKenney lock contention levels acceptably low. Very large systems 2140af92d46SPaul E. McKenney (hundreds or thousands of CPUs) will instead want to set this 2150af92d46SPaul E. McKenney value to the maximum value possible in order to reduce the 2160af92d46SPaul E. McKenney number of cache misses incurred during RCU's grace-period 2170af92d46SPaul E. McKenney initialization. These systems tend to run CPU-bound, and thus 2180af92d46SPaul E. McKenney are not helped by synchronized interrupts, and thus tend to 2190af92d46SPaul E. McKenney skew them, which reduces lock contention enough that large 2200af92d46SPaul E. McKenney leaf-level fanouts work well. That said, setting leaf-level 2210af92d46SPaul E. McKenney fanout to a large number will likely cause problematic 2220af92d46SPaul E. McKenney lock contention on the leaf-level rcu_node structures unless 2230af92d46SPaul E. McKenney you boot with the skew_tick kernel parameter. 2240af92d46SPaul E. McKenney 2250af92d46SPaul E. McKenney Select a specific number if testing RCU itself. 2260af92d46SPaul E. McKenney 2270af92d46SPaul E. McKenney Select the maximum permissible value for large systems, but 2280af92d46SPaul E. McKenney please understand that you may also need to set the skew_tick 2290af92d46SPaul E. McKenney kernel boot parameter to avoid contention on the rcu_node 2300af92d46SPaul E. McKenney structure's locks. 2310af92d46SPaul E. McKenney 2320af92d46SPaul E. McKenney Take the default if unsure. 2330af92d46SPaul E. McKenney 2340af92d46SPaul E. McKenneyconfig RCU_BOOST 2350af92d46SPaul E. McKenney bool "Enable RCU priority boosting" 2362341bc4aSSebastian Andrzej Siewior depends on (RT_MUTEXES && PREEMPT_RCU && RCU_EXPERT) || PREEMPT_RT 2372341bc4aSSebastian Andrzej Siewior default y if PREEMPT_RT 2380af92d46SPaul E. McKenney help 2390af92d46SPaul E. McKenney This option boosts the priority of preempted RCU readers that 2400af92d46SPaul E. McKenney block the current preemptible RCU grace period for too long. 2410af92d46SPaul E. McKenney This option also prevents heavy loads from blocking RCU 2428c1cf2daSPaul E. McKenney callback invocation. 2430af92d46SPaul E. McKenney 2440af92d46SPaul E. McKenney Say Y here if you are working with real-time apps or heavy loads 2450af92d46SPaul E. McKenney Say N here if you are unsure. 2460af92d46SPaul E. McKenney 2470af92d46SPaul E. McKenneyconfig RCU_BOOST_DELAY 2480af92d46SPaul E. McKenney int "Milliseconds to delay boosting after RCU grace-period start" 2490af92d46SPaul E. McKenney range 0 3000 2500af92d46SPaul E. McKenney depends on RCU_BOOST 2510af92d46SPaul E. McKenney default 500 2520af92d46SPaul E. McKenney help 2530af92d46SPaul E. McKenney This option specifies the time to wait after the beginning of 2540af92d46SPaul E. McKenney a given grace period before priority-boosting preempted RCU 2550af92d46SPaul E. McKenney readers blocking that grace period. Note that any RCU reader 2560af92d46SPaul E. McKenney blocking an expedited RCU grace period is boosted immediately. 2570af92d46SPaul E. McKenney 2580af92d46SPaul E. McKenney Accept the default if unsure. 2590af92d46SPaul E. McKenney 2609621fbeeSKalesh Singhconfig RCU_EXP_KTHREAD 2619621fbeeSKalesh Singh bool "Perform RCU expedited work in a real-time kthread" 2629621fbeeSKalesh Singh depends on RCU_BOOST && RCU_EXPERT 2639621fbeeSKalesh Singh default !PREEMPT_RT && NR_CPUS <= 32 2649621fbeeSKalesh Singh help 2659621fbeeSKalesh Singh Use this option to further reduce the latencies of expedited 2669621fbeeSKalesh Singh grace periods at the expense of being more disruptive. 2679621fbeeSKalesh Singh 2689621fbeeSKalesh Singh This option is disabled by default on PREEMPT_RT=y kernels which 2699621fbeeSKalesh Singh disable expedited grace periods after boot by unconditionally 2709621fbeeSKalesh Singh setting rcupdate.rcu_normal_after_boot=1. 2719621fbeeSKalesh Singh 2729621fbeeSKalesh Singh Accept the default if unsure. 2739621fbeeSKalesh Singh 2740af92d46SPaul E. McKenneyconfig RCU_NOCB_CPU 2750af92d46SPaul E. McKenney bool "Offload RCU callback processing from boot-selected CPUs" 276b3e627d3SLai Jiangshan depends on TREE_RCU 2770af92d46SPaul E. McKenney depends on RCU_EXPERT || NO_HZ_FULL 2780af92d46SPaul E. McKenney default n 2790af92d46SPaul E. McKenney help 2800af92d46SPaul E. McKenney Use this option to reduce OS jitter for aggressive HPC or 2810af92d46SPaul E. McKenney real-time workloads. It can also be used to offload RCU 2820af92d46SPaul E. McKenney callback invocation to energy-efficient CPUs in battery-powered 283a3941517SNeeraj Upadhyay asymmetric multiprocessors. The price of this reduced jitter 284a3941517SNeeraj Upadhyay is that the overhead of call_rcu() increases and that some 285a3941517SNeeraj Upadhyay workloads will incur significant increases in context-switch 286a3941517SNeeraj Upadhyay rates. 2870af92d46SPaul E. McKenney 288f30e2582SPaul E. McKenney This option offloads callback invocation from the set of 289f30e2582SPaul E. McKenney CPUs specified at boot time by the rcu_nocbs parameter. 290f30e2582SPaul E. McKenney For each such CPU, a kthread ("rcuox/N") will be created to 291f30e2582SPaul E. McKenney invoke callbacks, where the "N" is the CPU being offloaded, 292f30e2582SPaul E. McKenney and where the "x" is "p" for RCU-preempt (PREEMPTION kernels) 293f30e2582SPaul E. McKenney and "s" for RCU-sched (!PREEMPTION kernels). This option 294f30e2582SPaul E. McKenney also creates another kthread for each sqrt(nr_cpu_ids) CPUs 295f30e2582SPaul E. McKenney ("rcuog/N", where N is the first CPU in that group to come 296f30e2582SPaul E. McKenney online), which handles grace periods for its group. Nothing 297f30e2582SPaul E. McKenney prevents these kthreads from running on the specified CPUs, 298f30e2582SPaul E. McKenney but (1) the kthreads may be preempted between each callback, 299f30e2582SPaul E. McKenney and (2) affinity or cgroups can be used to force the kthreads 300f30e2582SPaul E. McKenney to run on whatever set of CPUs is desired. 301f30e2582SPaul E. McKenney 302f30e2582SPaul E. McKenney The sqrt(nr_cpu_ids) grouping may be overridden using the 303f30e2582SPaul E. McKenney rcutree.rcu_nocb_gp_stride kernel boot parameter. This can 304f30e2582SPaul E. McKenney be especially helpful for smaller numbers of CPUs, where 305f30e2582SPaul E. McKenney sqrt(nr_cpu_ids) can be a bit of a blunt instrument. 3060af92d46SPaul E. McKenney 307a3941517SNeeraj Upadhyay Say Y here if you need reduced OS jitter, despite added overhead. 3080af92d46SPaul E. McKenney Say N here if you are unsure. 3090af92d46SPaul E. McKenney 310b37a667cSJoel Fernandesconfig RCU_NOCB_CPU_DEFAULT_ALL 311b37a667cSJoel Fernandes bool "Offload RCU callback processing from all CPUs by default" 312b37a667cSJoel Fernandes depends on RCU_NOCB_CPU 313b37a667cSJoel Fernandes default n 314b37a667cSJoel Fernandes help 315b37a667cSJoel Fernandes Use this option to offload callback processing from all CPUs 316b37a667cSJoel Fernandes by default, in the absence of the rcu_nocbs or nohz_full boot 317b37a667cSJoel Fernandes parameter. This also avoids the need to use any boot parameters 318b37a667cSJoel Fernandes to achieve the effect of offloading all CPUs on boot. 319b37a667cSJoel Fernandes 320b37a667cSJoel Fernandes Say Y here if you want offload all CPUs by default on boot. 321b37a667cSJoel Fernandes Say N here if you are unsure. 322b37a667cSJoel Fernandes 3238f489b4dSUladzislau Rezki (Sony)config RCU_NOCB_CPU_CB_BOOST 3248f489b4dSUladzislau Rezki (Sony) bool "Offload RCU callback from real-time kthread" 3258f489b4dSUladzislau Rezki (Sony) depends on RCU_NOCB_CPU && RCU_BOOST 3268f489b4dSUladzislau Rezki (Sony) default y if PREEMPT_RT 3278f489b4dSUladzislau Rezki (Sony) help 3288f489b4dSUladzislau Rezki (Sony) Use this option to invoke offloaded callbacks as SCHED_FIFO 3298f489b4dSUladzislau Rezki (Sony) to avoid starvation by heavy SCHED_OTHER background load. 3308f489b4dSUladzislau Rezki (Sony) Of course, running as SCHED_FIFO during callback floods will 3318f489b4dSUladzislau Rezki (Sony) cause the rcuo[ps] kthreads to monopolize the CPU for hundreds 3328f489b4dSUladzislau Rezki (Sony) of milliseconds or more. Therefore, when enabling this option, 3338f489b4dSUladzislau Rezki (Sony) it is your responsibility to ensure that latency-sensitive 3348f489b4dSUladzislau Rezki (Sony) tasks either run with higher priority or run on some other CPU. 3358f489b4dSUladzislau Rezki (Sony) 3368f489b4dSUladzislau Rezki (Sony) Say Y here if you want to set RT priority for offloading kthreads. 3378f489b4dSUladzislau Rezki (Sony) Say N here if you are building a !PREEMPT_RT kernel and are unsure. 3388f489b4dSUladzislau Rezki (Sony) 3393cb278e7SJoel Fernandes (Google)config RCU_LAZY 3403cb278e7SJoel Fernandes (Google) bool "RCU callback lazy invocation functionality" 3413cb278e7SJoel Fernandes (Google) depends on RCU_NOCB_CPU 3423cb278e7SJoel Fernandes (Google) default n 3433cb278e7SJoel Fernandes (Google) help 34481a208c5SPaul E. McKenney To save power, batch RCU callbacks and delay starting the 34581a208c5SPaul E. McKenney corresponding grace period for multiple seconds. The grace 34681a208c5SPaul E. McKenney period will be started after this delay, in case of memory 34781a208c5SPaul E. McKenney pressure, or if the corresponding CPU's callback list grows 34881a208c5SPaul E. McKenney too large. 3493cb278e7SJoel Fernandes (Google) 35081a208c5SPaul E. McKenney These delays happen only on rcu_nocbs CPUs, that is, CPUs 35181a208c5SPaul E. McKenney whose callbacks have been offloaded. 3527f66f099SQais Yousef 35381a208c5SPaul E. McKenney Use the rcutree.enable_rcu_lazy=0 kernel-boot parameter to 35481a208c5SPaul E. McKenney globally disable these delays. 3557f66f099SQais Yousef 3567f66f099SQais Yousefconfig RCU_LAZY_DEFAULT_OFF 3577f66f099SQais Yousef bool "Turn RCU lazy invocation off by default" 3587f66f099SQais Yousef depends on RCU_LAZY 3597f66f099SQais Yousef default n 3607f66f099SQais Yousef help 36181a208c5SPaul E. McKenney Build the kernel with CONFIG_RCU_LAZY=y, but cause the kernel 36281a208c5SPaul E. McKenney to boot with these energy-efficiency delays disabled. Use the 36381a208c5SPaul E. McKenney rcutree.enable_rcu_lazy=0 kernel-boot parameter to override 36481a208c5SPaul E. McKenney the this option at boot time, thus re-enabling these delays. 3657f66f099SQais Yousef 366f51164a8SPaul E. McKenneyconfig RCU_DOUBLE_CHECK_CB_TIME 367f51164a8SPaul E. McKenney bool "RCU callback-batch backup time check" 368f51164a8SPaul E. McKenney depends on RCU_EXPERT 369f51164a8SPaul E. McKenney default n 370f51164a8SPaul E. McKenney help 371f51164a8SPaul E. McKenney Use this option to provide more precise enforcement of the 372f51164a8SPaul E. McKenney rcutree.rcu_resched_ns module parameter in situations where 373f51164a8SPaul E. McKenney a single RCU callback might run for hundreds of microseconds, 374f51164a8SPaul E. McKenney thus defeating the 32-callback batching used to amortize the 375f51164a8SPaul E. McKenney cost of the fine-grained but expensive local_clock() function. 376f51164a8SPaul E. McKenney 377f51164a8SPaul E. McKenney This option rounds rcutree.rcu_resched_ns up to the next 378f51164a8SPaul E. McKenney jiffy, and overrides the 32-callback batching if this limit 379f51164a8SPaul E. McKenney is exceeded. 380f51164a8SPaul E. McKenney 381f51164a8SPaul E. McKenney Say Y here if you need tighter callback-limit enforcement. 382f51164a8SPaul E. McKenney Say N here if you are unsure. 383f51164a8SPaul E. McKenney 3840af92d46SPaul E. McKenneyendmenu # "RCU Subsystem" 385