linux/kernel/Kconfig.preempt
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0-only
   2
   3choice
   4        prompt "Preemption Model"
   5        default PREEMPT_NONE
   6
   7config PREEMPT_NONE
   8        bool "No Forced Preemption (Server)"
   9        help
  10          This is the traditional Linux preemption model, geared towards
  11          throughput. It will still provide good latencies most of the
  12          time, but there are no guarantees and occasional longer delays
  13          are possible.
  14
  15          Select this option if you are building a kernel for a server or
  16          scientific/computation system, or if you want to maximize the
  17          raw processing power of the kernel, irrespective of scheduling
  18          latencies.
  19
  20config PREEMPT_VOLUNTARY
  21        bool "Voluntary Kernel Preemption (Desktop)"
  22        depends on !ARCH_NO_PREEMPT
  23        help
  24          This option reduces the latency of the kernel by adding more
  25          "explicit preemption points" to the kernel code. These new
  26          preemption points have been selected to reduce the maximum
  27          latency of rescheduling, providing faster application reactions,
  28          at the cost of slightly lower throughput.
  29
  30          This allows reaction to interactive events by allowing a
  31          low priority process to voluntarily preempt itself even if it
  32          is in kernel mode executing a system call. This allows
  33          applications to run more 'smoothly' even when the system is
  34          under load.
  35
  36          Select this if you are building a kernel for a desktop system.
  37
  38config PREEMPT
  39        bool "Preemptible Kernel (Low-Latency Desktop)"
  40        depends on !ARCH_NO_PREEMPT
  41        select PREEMPTION
  42        select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK
  43        help
  44          This option reduces the latency of the kernel by making
  45          all kernel code (that is not executing in a critical section)
  46          preemptible.  This allows reaction to interactive events by
  47          permitting a low priority process to be preempted involuntarily
  48          even if it is in kernel mode executing a system call and would
  49          otherwise not be about to reach a natural preemption point.
  50          This allows applications to run more 'smoothly' even when the
  51          system is under load, at the cost of slightly lower throughput
  52          and a slight runtime overhead to kernel code.
  53
  54          Select this if you are building a kernel for a desktop or
  55          embedded system with latency requirements in the milliseconds
  56          range.
  57
  58config PREEMPT_RT
  59        bool "Fully Preemptible Kernel (Real-Time)"
  60        depends on EXPERT && ARCH_SUPPORTS_RT
  61        select PREEMPTION
  62        help
  63          This option turns the kernel into a real-time kernel by replacing
  64          various locking primitives (spinlocks, rwlocks, etc.) with
  65          preemptible priority-inheritance aware variants, enforcing
  66          interrupt threading and introducing mechanisms to break up long
  67          non-preemptible sections. This makes the kernel, except for very
  68          low level and critical code pathes (entry code, scheduler, low
  69          level interrupt handling) fully preemptible and brings most
  70          execution contexts under scheduler control.
  71
  72          Select this if you are building a kernel for systems which
  73          require real-time guarantees.
  74
  75endchoice
  76
  77config PREEMPT_COUNT
  78       bool
  79
  80config PREEMPTION
  81       bool
  82       select PREEMPT_COUNT
  83