3 prompt "Preemption Model"
7 bool "No Forced Preemption (Server)"
9 This is the traditional Linux preemption model, geared towards
10 throughput. It will still provide good latencies most of the
11 time, but there are no guarantees and occasional longer delays
14 Select this option if you are building a kernel for a server or
15 scientific/computation system, or if you want to maximize the
16 raw processing power of the kernel, irrespective of scheduling
19 config PREEMPT_VOLUNTARY
20 bool "Voluntary Kernel Preemption (Desktop)"
22 This option reduces the latency of the kernel by adding more
23 "explicit preemption points" to the kernel code. These new
24 preemption points have been selected to reduce the maximum
25 latency of rescheduling, providing faster application reactions,
26 at the cost of slightly lower throughput.
28 This allows reaction to interactive events by allowing a
29 low priority process to voluntarily preempt itself even if it
30 is in kernel mode executing a system call. This allows
31 applications to run more 'smoothly' even when the system is
34 Select this if you are building a kernel for a desktop system.
37 bool "Preemptible Kernel (Low-Latency Desktop)"
39 This option reduces the latency of the kernel by making
40 all kernel code (that is not executing in a critical section)
41 preemptible. This allows reaction to interactive events by
42 permitting a low priority process to be preempted involuntarily
43 even if it is in kernel mode executing a system call and would
44 otherwise not be about to reach a natural preemption point.
45 This allows applications to run more 'smoothly' even when the
46 system is under load, at the cost of slightly lower throughput
47 and a slight runtime overhead to kernel code.
49 Select this if you are building a kernel for a desktop or
50 embedded system with latency requirements in the milliseconds
56 prompt "RCU Implementation"
62 This option selects the classic RCU implementation that is
63 designed for best read-side performance on non-realtime
66 Select this option if you are unsure.
69 bool "Tree-based hierarchical RCU"
71 This option selects the RCU implementation that is
72 designed for very large SMP system with hundreds or
76 bool "Preemptible RCU"
79 This option reduces the latency of the kernel by making certain
80 RCU sections preemptible. Normally RCU code is non-preemptible, if
81 this option is selected then read-only RCU sections become
82 preemptible. This helps latency, but may expose bugs due to
83 now-naive assumptions about each RCU read-side critical section
84 remaining on a given CPU through its execution.
89 bool "Enable tracing for RCU"
90 depends on TREE_RCU || PREEMPT_RCU
92 This option provides tracing in RCU which presents stats
93 in debugfs for debugging RCU implementation.
95 Say Y here if you want to enable RCU tracing
96 Say N if you are unsure.
99 int "Tree-based hierarchical RCU fanout value"
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.
112 Select a specific number if testing RCU itself.
113 Take the default if unsure.
115 config RCU_FANOUT_EXACT
116 bool "Disable tree-based hierarchical RCU auto-balancing"
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.
125 Without RCU_FANOUT_EXACT, the code will balance the hierarchy.