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 71*1dc1e0b9SPaul E. McKenney depends on RCU_EXPERT 72*1dc1e0b9SPaul 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 85d5f177d3SPaul E. McKenney def_bool TASKS_RCU || TASKS_RUDE_RCU || TASKS_TRACE_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 1450af92d46SPaul E. McKenneyconfig RCU_STALL_COMMON 146b3e627d3SLai Jiangshan def_bool TREE_RCU 1470af92d46SPaul E. McKenney help 1480af92d46SPaul E. McKenney This option enables RCU CPU stall code that is common between 1490af92d46SPaul E. McKenney the TINY and TREE variants of RCU. The purpose is to allow 1500af92d46SPaul E. McKenney the tiny variants to disable RCU CPU stall warnings, while 1510af92d46SPaul E. McKenney making these warnings mandatory for the tree variants. 1520af92d46SPaul E. McKenney 1530af92d46SPaul E. McKenneyconfig RCU_NEED_SEGCBLIST 1549b073de1SPaul E. McKenney def_bool ( TREE_RCU || TREE_SRCU || TASKS_RCU_GENERIC ) 1550af92d46SPaul E. McKenney 1560af92d46SPaul E. McKenneyconfig RCU_FANOUT 1570af92d46SPaul E. McKenney int "Tree-based hierarchical RCU fanout value" 1580af92d46SPaul E. McKenney range 2 64 if 64BIT 1590af92d46SPaul E. McKenney range 2 32 if !64BIT 160b3e627d3SLai Jiangshan depends on TREE_RCU && RCU_EXPERT 1610af92d46SPaul E. McKenney default 64 if 64BIT 1620af92d46SPaul E. McKenney default 32 if !64BIT 1630af92d46SPaul E. McKenney help 1640af92d46SPaul E. McKenney This option controls the fanout of hierarchical implementations 1650af92d46SPaul E. McKenney of RCU, allowing RCU to work efficiently on machines with 1660af92d46SPaul E. McKenney large numbers of CPUs. This value must be at least the fourth 1670af92d46SPaul E. McKenney root of NR_CPUS, which allows NR_CPUS to be insanely large. 1680af92d46SPaul E. McKenney The default value of RCU_FANOUT should be used for production 1690af92d46SPaul E. McKenney systems, but if you are stress-testing the RCU implementation 1700af92d46SPaul E. McKenney itself, small RCU_FANOUT values allow you to test large-system 1710af92d46SPaul E. McKenney code paths on small(er) systems. 1720af92d46SPaul E. McKenney 1730af92d46SPaul E. McKenney Select a specific number if testing RCU itself. 1740af92d46SPaul E. McKenney Take the default if unsure. 1750af92d46SPaul E. McKenney 1760af92d46SPaul E. McKenneyconfig RCU_FANOUT_LEAF 1770af92d46SPaul E. McKenney int "Tree-based hierarchical RCU leaf-level fanout value" 178dc126918SPaul E. McKenney range 2 64 if 64BIT && !RCU_STRICT_GRACE_PERIOD 179dc126918SPaul E. McKenney range 2 32 if !64BIT && !RCU_STRICT_GRACE_PERIOD 180dc126918SPaul E. McKenney range 2 3 if RCU_STRICT_GRACE_PERIOD 181b3e627d3SLai Jiangshan depends on TREE_RCU && RCU_EXPERT 182dc126918SPaul E. McKenney default 16 if !RCU_STRICT_GRACE_PERIOD 183dc126918SPaul E. McKenney default 2 if RCU_STRICT_GRACE_PERIOD 1840af92d46SPaul E. McKenney help 1850af92d46SPaul E. McKenney This option controls the leaf-level fanout of hierarchical 1860af92d46SPaul E. McKenney implementations of RCU, and allows trading off cache misses 1870af92d46SPaul E. McKenney against lock contention. Systems that synchronize their 1880af92d46SPaul E. McKenney scheduling-clock interrupts for energy-efficiency reasons will 1890af92d46SPaul E. McKenney want the default because the smaller leaf-level fanout keeps 1900af92d46SPaul E. McKenney lock contention levels acceptably low. Very large systems 1910af92d46SPaul E. McKenney (hundreds or thousands of CPUs) will instead want to set this 1920af92d46SPaul E. McKenney value to the maximum value possible in order to reduce the 1930af92d46SPaul E. McKenney number of cache misses incurred during RCU's grace-period 1940af92d46SPaul E. McKenney initialization. These systems tend to run CPU-bound, and thus 1950af92d46SPaul E. McKenney are not helped by synchronized interrupts, and thus tend to 1960af92d46SPaul E. McKenney skew them, which reduces lock contention enough that large 1970af92d46SPaul E. McKenney leaf-level fanouts work well. That said, setting leaf-level 1980af92d46SPaul E. McKenney fanout to a large number will likely cause problematic 1990af92d46SPaul E. McKenney lock contention on the leaf-level rcu_node structures unless 2000af92d46SPaul E. McKenney you boot with the skew_tick kernel parameter. 2010af92d46SPaul E. McKenney 2020af92d46SPaul E. McKenney Select a specific number if testing RCU itself. 2030af92d46SPaul E. McKenney 2040af92d46SPaul E. McKenney Select the maximum permissible value for large systems, but 2050af92d46SPaul E. McKenney please understand that you may also need to set the skew_tick 2060af92d46SPaul E. McKenney kernel boot parameter to avoid contention on the rcu_node 2070af92d46SPaul E. McKenney structure's locks. 2080af92d46SPaul E. McKenney 2090af92d46SPaul E. McKenney Take the default if unsure. 2100af92d46SPaul E. McKenney 2110af92d46SPaul E. McKenneyconfig RCU_BOOST 2120af92d46SPaul E. McKenney bool "Enable RCU priority boosting" 2132341bc4aSSebastian Andrzej Siewior depends on (RT_MUTEXES && PREEMPT_RCU && RCU_EXPERT) || PREEMPT_RT 2142341bc4aSSebastian Andrzej Siewior default y if PREEMPT_RT 2150af92d46SPaul E. McKenney help 2160af92d46SPaul E. McKenney This option boosts the priority of preempted RCU readers that 2170af92d46SPaul E. McKenney block the current preemptible RCU grace period for too long. 2180af92d46SPaul E. McKenney This option also prevents heavy loads from blocking RCU 2198c1cf2daSPaul E. McKenney callback invocation. 2200af92d46SPaul E. McKenney 2210af92d46SPaul E. McKenney Say Y here if you are working with real-time apps or heavy loads 2220af92d46SPaul E. McKenney Say N here if you are unsure. 2230af92d46SPaul E. McKenney 2240af92d46SPaul E. McKenneyconfig RCU_BOOST_DELAY 2250af92d46SPaul E. McKenney int "Milliseconds to delay boosting after RCU grace-period start" 2260af92d46SPaul E. McKenney range 0 3000 2270af92d46SPaul E. McKenney depends on RCU_BOOST 2280af92d46SPaul E. McKenney default 500 2290af92d46SPaul E. McKenney help 2300af92d46SPaul E. McKenney This option specifies the time to wait after the beginning of 2310af92d46SPaul E. McKenney a given grace period before priority-boosting preempted RCU 2320af92d46SPaul E. McKenney readers blocking that grace period. Note that any RCU reader 2330af92d46SPaul E. McKenney blocking an expedited RCU grace period is boosted immediately. 2340af92d46SPaul E. McKenney 2350af92d46SPaul E. McKenney Accept the default if unsure. 2360af92d46SPaul E. McKenney 2379621fbeeSKalesh Singhconfig RCU_EXP_KTHREAD 2389621fbeeSKalesh Singh bool "Perform RCU expedited work in a real-time kthread" 2399621fbeeSKalesh Singh depends on RCU_BOOST && RCU_EXPERT 2409621fbeeSKalesh Singh default !PREEMPT_RT && NR_CPUS <= 32 2419621fbeeSKalesh Singh help 2429621fbeeSKalesh Singh Use this option to further reduce the latencies of expedited 2439621fbeeSKalesh Singh grace periods at the expense of being more disruptive. 2449621fbeeSKalesh Singh 2459621fbeeSKalesh Singh This option is disabled by default on PREEMPT_RT=y kernels which 2469621fbeeSKalesh Singh disable expedited grace periods after boot by unconditionally 2479621fbeeSKalesh Singh setting rcupdate.rcu_normal_after_boot=1. 2489621fbeeSKalesh Singh 2499621fbeeSKalesh Singh Accept the default if unsure. 2509621fbeeSKalesh Singh 2510af92d46SPaul E. McKenneyconfig RCU_NOCB_CPU 2520af92d46SPaul E. McKenney bool "Offload RCU callback processing from boot-selected CPUs" 253b3e627d3SLai Jiangshan depends on TREE_RCU 2540af92d46SPaul E. McKenney depends on RCU_EXPERT || NO_HZ_FULL 2550af92d46SPaul E. McKenney default n 2560af92d46SPaul E. McKenney help 2570af92d46SPaul E. McKenney Use this option to reduce OS jitter for aggressive HPC or 2580af92d46SPaul E. McKenney real-time workloads. It can also be used to offload RCU 2590af92d46SPaul E. McKenney callback invocation to energy-efficient CPUs in battery-powered 260a3941517SNeeraj Upadhyay asymmetric multiprocessors. The price of this reduced jitter 261a3941517SNeeraj Upadhyay is that the overhead of call_rcu() increases and that some 262a3941517SNeeraj Upadhyay workloads will incur significant increases in context-switch 263a3941517SNeeraj Upadhyay rates. 2640af92d46SPaul E. McKenney 265f30e2582SPaul E. McKenney This option offloads callback invocation from the set of 266f30e2582SPaul E. McKenney CPUs specified at boot time by the rcu_nocbs parameter. 267f30e2582SPaul E. McKenney For each such CPU, a kthread ("rcuox/N") will be created to 268f30e2582SPaul E. McKenney invoke callbacks, where the "N" is the CPU being offloaded, 269f30e2582SPaul E. McKenney and where the "x" is "p" for RCU-preempt (PREEMPTION kernels) 270f30e2582SPaul E. McKenney and "s" for RCU-sched (!PREEMPTION kernels). This option 271f30e2582SPaul E. McKenney also creates another kthread for each sqrt(nr_cpu_ids) CPUs 272f30e2582SPaul E. McKenney ("rcuog/N", where N is the first CPU in that group to come 273f30e2582SPaul E. McKenney online), which handles grace periods for its group. Nothing 274f30e2582SPaul E. McKenney prevents these kthreads from running on the specified CPUs, 275f30e2582SPaul E. McKenney but (1) the kthreads may be preempted between each callback, 276f30e2582SPaul E. McKenney and (2) affinity or cgroups can be used to force the kthreads 277f30e2582SPaul E. McKenney to run on whatever set of CPUs is desired. 278f30e2582SPaul E. McKenney 279f30e2582SPaul E. McKenney The sqrt(nr_cpu_ids) grouping may be overridden using the 280f30e2582SPaul E. McKenney rcutree.rcu_nocb_gp_stride kernel boot parameter. This can 281f30e2582SPaul E. McKenney be especially helpful for smaller numbers of CPUs, where 282f30e2582SPaul E. McKenney sqrt(nr_cpu_ids) can be a bit of a blunt instrument. 2830af92d46SPaul E. McKenney 284a3941517SNeeraj Upadhyay Say Y here if you need reduced OS jitter, despite added overhead. 2850af92d46SPaul E. McKenney Say N here if you are unsure. 2860af92d46SPaul E. McKenney 287b37a667cSJoel Fernandesconfig RCU_NOCB_CPU_DEFAULT_ALL 288b37a667cSJoel Fernandes bool "Offload RCU callback processing from all CPUs by default" 289b37a667cSJoel Fernandes depends on RCU_NOCB_CPU 290b37a667cSJoel Fernandes default n 291b37a667cSJoel Fernandes help 292b37a667cSJoel Fernandes Use this option to offload callback processing from all CPUs 293b37a667cSJoel Fernandes by default, in the absence of the rcu_nocbs or nohz_full boot 294b37a667cSJoel Fernandes parameter. This also avoids the need to use any boot parameters 295b37a667cSJoel Fernandes to achieve the effect of offloading all CPUs on boot. 296b37a667cSJoel Fernandes 297b37a667cSJoel Fernandes Say Y here if you want offload all CPUs by default on boot. 298b37a667cSJoel Fernandes Say N here if you are unsure. 299b37a667cSJoel Fernandes 3008f489b4dSUladzislau Rezki (Sony)config RCU_NOCB_CPU_CB_BOOST 3018f489b4dSUladzislau Rezki (Sony) bool "Offload RCU callback from real-time kthread" 3028f489b4dSUladzislau Rezki (Sony) depends on RCU_NOCB_CPU && RCU_BOOST 3038f489b4dSUladzislau Rezki (Sony) default y if PREEMPT_RT 3048f489b4dSUladzislau Rezki (Sony) help 3058f489b4dSUladzislau Rezki (Sony) Use this option to invoke offloaded callbacks as SCHED_FIFO 3068f489b4dSUladzislau Rezki (Sony) to avoid starvation by heavy SCHED_OTHER background load. 3078f489b4dSUladzislau Rezki (Sony) Of course, running as SCHED_FIFO during callback floods will 3088f489b4dSUladzislau Rezki (Sony) cause the rcuo[ps] kthreads to monopolize the CPU for hundreds 3098f489b4dSUladzislau Rezki (Sony) of milliseconds or more. Therefore, when enabling this option, 3108f489b4dSUladzislau Rezki (Sony) it is your responsibility to ensure that latency-sensitive 3118f489b4dSUladzislau Rezki (Sony) tasks either run with higher priority or run on some other CPU. 3128f489b4dSUladzislau Rezki (Sony) 3138f489b4dSUladzislau Rezki (Sony) Say Y here if you want to set RT priority for offloading kthreads. 3148f489b4dSUladzislau Rezki (Sony) Say N here if you are building a !PREEMPT_RT kernel and are unsure. 3158f489b4dSUladzislau Rezki (Sony) 3169ae58d7bSPaul E. McKenneyconfig TASKS_TRACE_RCU_READ_MB 3179ae58d7bSPaul E. McKenney bool "Tasks Trace RCU readers use memory barriers in user and idle" 31840c1278aSPaul E. McKenney depends on RCU_EXPERT && TASKS_TRACE_RCU 3199ae58d7bSPaul E. McKenney default PREEMPT_RT || NR_CPUS < 8 3209ae58d7bSPaul E. McKenney help 3219ae58d7bSPaul E. McKenney Use this option to further reduce the number of IPIs sent 3229ae58d7bSPaul E. McKenney to CPUs executing in userspace or idle during tasks trace 3239ae58d7bSPaul E. McKenney RCU grace periods. Given that a reasonable setting of 3249ae58d7bSPaul E. McKenney the rcupdate.rcu_task_ipi_delay kernel boot parameter 3259ae58d7bSPaul E. McKenney eliminates such IPIs for many workloads, proper setting 3269ae58d7bSPaul E. McKenney of this Kconfig option is important mostly for aggressive 3279ae58d7bSPaul E. McKenney real-time installations and for battery-powered devices, 3289ae58d7bSPaul E. McKenney hence the default chosen above. 3299ae58d7bSPaul E. McKenney 3309ae58d7bSPaul E. McKenney Say Y here if you hate IPIs. 3319ae58d7bSPaul E. McKenney Say N here if you hate read-side memory barriers. 3329ae58d7bSPaul E. McKenney Take the default if you are unsure. 3339ae58d7bSPaul E. McKenney 3343cb278e7SJoel Fernandes (Google)config RCU_LAZY 3353cb278e7SJoel Fernandes (Google) bool "RCU callback lazy invocation functionality" 3363cb278e7SJoel Fernandes (Google) depends on RCU_NOCB_CPU 3373cb278e7SJoel Fernandes (Google) default n 3383cb278e7SJoel Fernandes (Google) help 33981a208c5SPaul E. McKenney To save power, batch RCU callbacks and delay starting the 34081a208c5SPaul E. McKenney corresponding grace period for multiple seconds. The grace 34181a208c5SPaul E. McKenney period will be started after this delay, in case of memory 34281a208c5SPaul E. McKenney pressure, or if the corresponding CPU's callback list grows 34381a208c5SPaul E. McKenney too large. 3443cb278e7SJoel Fernandes (Google) 34581a208c5SPaul E. McKenney These delays happen only on rcu_nocbs CPUs, that is, CPUs 34681a208c5SPaul E. McKenney whose callbacks have been offloaded. 3477f66f099SQais Yousef 34881a208c5SPaul E. McKenney Use the rcutree.enable_rcu_lazy=0 kernel-boot parameter to 34981a208c5SPaul E. McKenney globally disable these delays. 3507f66f099SQais Yousef 3517f66f099SQais Yousefconfig RCU_LAZY_DEFAULT_OFF 3527f66f099SQais Yousef bool "Turn RCU lazy invocation off by default" 3537f66f099SQais Yousef depends on RCU_LAZY 3547f66f099SQais Yousef default n 3557f66f099SQais Yousef help 35681a208c5SPaul E. McKenney Build the kernel with CONFIG_RCU_LAZY=y, but cause the kernel 35781a208c5SPaul E. McKenney to boot with these energy-efficiency delays disabled. Use the 35881a208c5SPaul E. McKenney rcutree.enable_rcu_lazy=0 kernel-boot parameter to override 35981a208c5SPaul E. McKenney the this option at boot time, thus re-enabling these delays. 3607f66f099SQais Yousef 361f51164a8SPaul E. McKenneyconfig RCU_DOUBLE_CHECK_CB_TIME 362f51164a8SPaul E. McKenney bool "RCU callback-batch backup time check" 363f51164a8SPaul E. McKenney depends on RCU_EXPERT 364f51164a8SPaul E. McKenney default n 365f51164a8SPaul E. McKenney help 366f51164a8SPaul E. McKenney Use this option to provide more precise enforcement of the 367f51164a8SPaul E. McKenney rcutree.rcu_resched_ns module parameter in situations where 368f51164a8SPaul E. McKenney a single RCU callback might run for hundreds of microseconds, 369f51164a8SPaul E. McKenney thus defeating the 32-callback batching used to amortize the 370f51164a8SPaul E. McKenney cost of the fine-grained but expensive local_clock() function. 371f51164a8SPaul E. McKenney 372f51164a8SPaul E. McKenney This option rounds rcutree.rcu_resched_ns up to the next 373f51164a8SPaul E. McKenney jiffy, and overrides the 32-callback batching if this limit 374f51164a8SPaul E. McKenney is exceeded. 375f51164a8SPaul E. McKenney 376f51164a8SPaul E. McKenney Say Y here if you need tighter callback-limit enforcement. 377f51164a8SPaul E. McKenney Say N here if you are unsure. 378f51164a8SPaul E. McKenney 3790af92d46SPaul E. McKenneyendmenu # "RCU Subsystem" 380