aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/Kconfig.preempt
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/Kconfig.preempt')
-rw-r--r--kernel/Kconfig.preempt62
1 files changed, 56 insertions, 6 deletions
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index 9fdba03dc1fc..463f29743ea0 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -52,10 +52,29 @@ config PREEMPT
52 52
53endchoice 53endchoice
54 54
55choice
56 prompt "RCU Implementation"
57 default CLASSIC_RCU
58
59config CLASSIC_RCU
60 bool "Classic RCU"
61 help
62 This option selects the classic RCU implementation that is
63 designed for best read-side performance on non-realtime
64 systems.
65
66 Select this option if you are unsure.
67
68config TREE_RCU
69 bool "Tree-based hierarchical RCU"
70 help
71 This option selects the RCU implementation that is
72 designed for very large SMP system with hundreds or
73 thousands of CPUs.
74
55config PREEMPT_RCU 75config PREEMPT_RCU
56 bool "Preemptible RCU" 76 bool "Preemptible RCU"
57 depends on PREEMPT 77 depends on PREEMPT
58 default n
59 help 78 help
60 This option reduces the latency of the kernel by making certain 79 This option reduces the latency of the kernel by making certain
61 RCU sections preemptible. Normally RCU code is non-preemptible, if 80 RCU sections preemptible. Normally RCU code is non-preemptible, if
@@ -64,16 +83,47 @@ config PREEMPT_RCU
64 now-naive assumptions about each RCU read-side critical section 83 now-naive assumptions about each RCU read-side critical section
65 remaining on a given CPU through its execution. 84 remaining on a given CPU through its execution.
66 85
67 Say N if you are unsure. 86endchoice
68 87
69config RCU_TRACE 88config RCU_TRACE
70 bool "Enable tracing for RCU - currently stats in debugfs" 89 bool "Enable tracing for RCU"
71 depends on PREEMPT_RCU 90 depends on TREE_RCU || PREEMPT_RCU
72 select DEBUG_FS
73 default y
74 help 91 help
75 This option provides tracing in RCU which presents stats 92 This option provides tracing in RCU which presents stats
76 in debugfs for debugging RCU implementation. 93 in debugfs for debugging RCU implementation.
77 94
78 Say Y here if you want to enable RCU tracing 95 Say Y here if you want to enable RCU tracing
79 Say N if you are unsure. 96 Say N if you are unsure.
97
98config RCU_FANOUT
99 int "Tree-based hierarchical RCU fanout value"
100 range 2 64 if 64BIT
101 range 2 32 if !64BIT
102 depends on TREE_RCU
103 default 64 if 64BIT
104 default 32 if !64BIT
105 help
106 This option controls the fanout of hierarchical implementations
107 of RCU, allowing RCU to work efficiently on machines with
108 large numbers of CPUs. This value must be at least the cube
109 root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
110 systems and up to 262,144 for 64-bit systems.
111
112 Select a specific number if testing RCU itself.
113 Take the default if unsure.
114
115config RCU_FANOUT_EXACT
116 bool "Disable tree-based hierarchical RCU auto-balancing"
117 depends on TREE_RCU
118 default n
119 help
120 This option forces use of the exact RCU_FANOUT value specified,
121 regardless of imbalances in the hierarchy. This is useful for
122 testing RCU itself, and might one day be useful on systems with
123 strong NUMA behavior.
124
125 Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
126
127 Say n if unsure.
128
129