|
@@ -458,6 +458,33 @@ config RCU_FANOUT
|
|
|
Select a specific number if testing RCU itself.
|
|
|
Take the default if unsure.
|
|
|
|
|
|
+config RCU_FANOUT_LEAF
|
|
|
+ int "Tree-based hierarchical RCU leaf-level fanout value"
|
|
|
+ range 2 RCU_FANOUT if 64BIT
|
|
|
+ range 2 RCU_FANOUT if !64BIT
|
|
|
+ depends on TREE_RCU || TREE_PREEMPT_RCU
|
|
|
+ default 16
|
|
|
+ help
|
|
|
+ This option controls the leaf-level fanout of hierarchical
|
|
|
+ implementations of RCU, and allows trading off cache misses
|
|
|
+ against lock contention. Systems that synchronize their
|
|
|
+ scheduling-clock interrupts for energy-efficiency reasons will
|
|
|
+ want the default because the smaller leaf-level fanout keeps
|
|
|
+ lock contention levels acceptably low. Very large systems
|
|
|
+ (hundreds or thousands of CPUs) will instead want to set this
|
|
|
+ value to the maximum value possible in order to reduce the
|
|
|
+ number of cache misses incurred during RCU's grace-period
|
|
|
+ initialization. These systems tend to run CPU-bound, and thus
|
|
|
+ are not helped by synchronized interrupts, and thus tend to
|
|
|
+ skew them, which reduces lock contention enough that large
|
|
|
+ leaf-level fanouts work well.
|
|
|
+
|
|
|
+ Select a specific number if testing RCU itself.
|
|
|
+
|
|
|
+ Select the maximum permissible value for large systems.
|
|
|
+
|
|
|
+ Take the default if unsure.
|
|
|
+
|
|
|
config RCU_FANOUT_EXACT
|
|
|
bool "Disable tree-based hierarchical RCU auto-balancing"
|
|
|
depends on TREE_RCU || TREE_PREEMPT_RCU
|