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