Kconfig.preempt 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. choice
  2. prompt "Preemption Model"
  3. default PREEMPT_NONE
  4. config PREEMPT_NONE
  5. bool "No Forced Preemption (Server)"
  6. help
  7. This is the traditional Linux preemption model, geared towards
  8. throughput. It will still provide good latencies most of the
  9. time, but there are no guarantees and occasional longer delays
  10. are possible.
  11. Select this option if you are building a kernel for a server or
  12. scientific/computation system, or if you want to maximize the
  13. raw processing power of the kernel, irrespective of scheduling
  14. latencies.
  15. config PREEMPT_VOLUNTARY
  16. bool "Voluntary Kernel Preemption (Desktop)"
  17. help
  18. This option reduces the latency of the kernel by adding more
  19. "explicit preemption points" to the kernel code. These new
  20. preemption points have been selected to reduce the maximum
  21. latency of rescheduling, providing faster application reactions,
  22. at the cost of slightly lower throughput.
  23. This allows reaction to interactive events by allowing a
  24. low priority process to voluntarily preempt itself even if it
  25. is in kernel mode executing a system call. This allows
  26. applications to run more 'smoothly' even when the system is
  27. under load.
  28. Select this if you are building a kernel for a desktop system.
  29. config PREEMPT
  30. bool "Preemptible Kernel (Low-Latency Desktop)"
  31. help
  32. This option reduces the latency of the kernel by making
  33. all kernel code (that is not executing in a critical section)
  34. preemptible. This allows reaction to interactive events by
  35. permitting a low priority process to be preempted involuntarily
  36. even if it is in kernel mode executing a system call and would
  37. otherwise not be about to reach a natural preemption point.
  38. This allows applications to run more 'smoothly' even when the
  39. system is under load, at the cost of slightly lower throughput
  40. and a slight runtime overhead to kernel code.
  41. Select this if you are building a kernel for a desktop or
  42. embedded system with latency requirements in the milliseconds
  43. range.
  44. endchoice
  45. choice
  46. prompt "RCU Implementation"
  47. default CLASSIC_RCU
  48. config CLASSIC_RCU
  49. bool "Classic RCU"
  50. help
  51. This option selects the classic RCU implementation that is
  52. designed for best read-side performance on non-realtime
  53. systems.
  54. Select this option if you are unsure.
  55. config TREE_RCU
  56. bool "Tree-based hierarchical RCU"
  57. help
  58. This option selects the RCU implementation that is
  59. designed for very large SMP system with hundreds or
  60. thousands of CPUs.
  61. config PREEMPT_RCU
  62. bool "Preemptible RCU"
  63. depends on PREEMPT
  64. help
  65. This option reduces the latency of the kernel by making certain
  66. RCU sections preemptible. Normally RCU code is non-preemptible, if
  67. this option is selected then read-only RCU sections become
  68. preemptible. This helps latency, but may expose bugs due to
  69. now-naive assumptions about each RCU read-side critical section
  70. remaining on a given CPU through its execution.
  71. endchoice
  72. config RCU_TRACE
  73. bool "Enable tracing for RCU"
  74. depends on TREE_RCU || PREEMPT_RCU
  75. help
  76. This option provides tracing in RCU which presents stats
  77. in debugfs for debugging RCU implementation.
  78. Say Y here if you want to enable RCU tracing
  79. Say N if you are unsure.
  80. config RCU_FANOUT
  81. int "Tree-based hierarchical RCU fanout value"
  82. range 2 64 if 64BIT
  83. range 2 32 if !64BIT
  84. depends on TREE_RCU
  85. default 64 if 64BIT
  86. default 32 if !64BIT
  87. help
  88. This option controls the fanout of hierarchical implementations
  89. of RCU, allowing RCU to work efficiently on machines with
  90. large numbers of CPUs. This value must be at least the cube
  91. root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
  92. systems and up to 262,144 for 64-bit systems.
  93. Select a specific number if testing RCU itself.
  94. Take the default if unsure.
  95. config RCU_FANOUT_EXACT
  96. bool "Disable tree-based hierarchical RCU auto-balancing"
  97. depends on TREE_RCU
  98. default n
  99. help
  100. This option forces use of the exact RCU_FANOUT value specified,
  101. regardless of imbalances in the hierarchy. This is useful for
  102. testing RCU itself, and might one day be useful on systems with
  103. strong NUMA behavior.
  104. Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
  105. Say n if unsure.