xref: /linux/kernel/Kconfig.preempt (revision f8cbd99bd3a023db8d6356d19a5f6f539d367327)
1cc19ca86SIngo Molnar
2*f8cbd99bSIngo Molnarchoice
3*f8cbd99bSIngo Molnar	prompt "Preemption Model"
4*f8cbd99bSIngo Molnar	default PREEMPT_NONE
5*f8cbd99bSIngo Molnar
6*f8cbd99bSIngo Molnarconfig PREEMPT_NONE
7*f8cbd99bSIngo Molnar	bool "No Forced Preemption (Server)"
8cc19ca86SIngo Molnar	help
9*f8cbd99bSIngo Molnar	  This is the traditional Linux preemption model, geared towards
10*f8cbd99bSIngo Molnar	  throughput. It will still provide good latencies most of the
11*f8cbd99bSIngo Molnar	  time, but there are no guarantees and occasional longer delays
12*f8cbd99bSIngo Molnar	  are possible.
13*f8cbd99bSIngo Molnar
14*f8cbd99bSIngo Molnar	  Select this option if you are building a kernel for a server or
15*f8cbd99bSIngo Molnar	  scientific/computation system, or if you want to maximize the
16*f8cbd99bSIngo Molnar	  raw processing power of the kernel, irrespective of scheduling
17*f8cbd99bSIngo Molnar	  latencies.
18*f8cbd99bSIngo Molnar
19*f8cbd99bSIngo Molnarconfig PREEMPT_VOLUNTARY
20*f8cbd99bSIngo Molnar	bool "Voluntary Kernel Preemption (Desktop)"
21*f8cbd99bSIngo Molnar	help
22*f8cbd99bSIngo Molnar	  This option reduces the latency of the kernel by adding more
23*f8cbd99bSIngo Molnar	  "explicit preemption points" to the kernel code. These new
24*f8cbd99bSIngo Molnar	  preemption points have been selected to reduce the maximum
25*f8cbd99bSIngo Molnar	  latency of rescheduling, providing faster application reactions,
26*f8cbd99bSIngo Molnar	  at the cost of slighly lower throughput.
27*f8cbd99bSIngo Molnar
28*f8cbd99bSIngo Molnar	  This allows reaction to interactive events by allowing a
29*f8cbd99bSIngo Molnar	  low priority process to voluntarily preempt itself even if it
30*f8cbd99bSIngo Molnar	  is in kernel mode executing a system call. This allows
31*f8cbd99bSIngo Molnar	  applications to run more 'smoothly' even when the system is
32cc19ca86SIngo Molnar	  under load.
33cc19ca86SIngo Molnar
34*f8cbd99bSIngo Molnar	  Select this if you are building a kernel for a desktop system.
35*f8cbd99bSIngo Molnar
36*f8cbd99bSIngo Molnarconfig PREEMPT
37*f8cbd99bSIngo Molnar	bool "Preemptible Kernel (Low-Latency Desktop)"
38*f8cbd99bSIngo Molnar	help
39*f8cbd99bSIngo Molnar	  This option reduces the latency of the kernel by making
40*f8cbd99bSIngo Molnar	  all kernel code (that is not executing in a critical section)
41*f8cbd99bSIngo Molnar	  preemptible.  This allows reaction to interactive events by
42*f8cbd99bSIngo Molnar	  permitting a low priority process to be preempted involuntarily
43*f8cbd99bSIngo Molnar	  even if it is in kernel mode executing a system call and would
44*f8cbd99bSIngo Molnar	  otherwise not be about to reach a natural preemption point.
45*f8cbd99bSIngo Molnar	  This allows applications to run more 'smoothly' even when the
46*f8cbd99bSIngo Molnar	  system is under load, at the cost of slighly lower throughput
47*f8cbd99bSIngo Molnar	  and a slight runtime overhead to kernel code.
48*f8cbd99bSIngo Molnar
49*f8cbd99bSIngo Molnar	  Select this if you are building a kernel for a desktop or
50*f8cbd99bSIngo Molnar	  embedded system with latency requirements in the milliseconds
51*f8cbd99bSIngo Molnar	  range.
52*f8cbd99bSIngo Molnar
53*f8cbd99bSIngo Molnarendchoice
54cc19ca86SIngo Molnar
55cc19ca86SIngo Molnarconfig PREEMPT_BKL
56cc19ca86SIngo Molnar	bool "Preempt The Big Kernel Lock"
57f704f56aSIngo Molnar	depends on SMP || PREEMPT
58cc19ca86SIngo Molnar	default y
59cc19ca86SIngo Molnar	help
60cc19ca86SIngo Molnar	  This option reduces the latency of the kernel by making the
61cc19ca86SIngo Molnar	  big kernel lock preemptible.
62cc19ca86SIngo Molnar
63cc19ca86SIngo Molnar	  Say Y here if you are building a kernel for a desktop system.
64cc19ca86SIngo Molnar	  Say N if you are unsure.
65cc19ca86SIngo Molnar
66