[PATCH 1/1] sched: Restore PREEMPT_NONE as default

Salvatore Dipietro
2026-04-03T19:20:52Z

Commit 7dadeaa6e851 ("sched: Further restrict the preemption
modes") changed the default preemption model to PREEMPT_LAZY on
architectures that support it and made PREEMPT_NONE depend on
ARCH_NO_PREEMPT.

This causes a 0.51x throughput regression on PostgreSQL pgbench
(simple-update) with 1024 clients on a 96-vCPU Graviton4 arm64
system. Perf profiling shows 55% of CPU time spinning in
PostgreSQL's userspace spinlock (s_lock()) under PREEMPT_LAZY.

Restore PREEMPT_NONE as the default preemption model, remove
the ARCH_NO_PREEMPT dependency from PREEMPT_NONE, and remove
the ARCH_HAS_PREEMPT_LAZY restriction from PREEMPT_VOLUNTARY.

Fixes: 7dadeaa6e851 ("sched: Further restrict the preemption modes")
Signed-off-by: Salvatore Dipietro <dipiets@amazon.it>
---
kernel/Kconfig.preempt | 3 ---
1 file changed, 3 deletions(-)

diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index 88c594c6d7fc..da326800c1c9 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -16,13 +16,11 @@ config ARCH_HAS_PREEMPT_LAZY

choice
prompt "Preemption Model"
- default PREEMPT_LAZY if ARCH_HAS_PREEMPT_LAZY
default PREEMPT_NONE

config PREEMPT_NONE
bool "No Forced Preemption (Server)"
depends on !PREEMPT_RT
- depends on ARCH_NO_PREEMPT
select PREEMPT_NONE_BUILD if !PREEMPT_DYNAMIC
help
This is the traditional Linux preemption model, geared towards
@@ -37,7 +35,6 @@ config PREEMPT_NONE

config PREEMPT_VOLUNTARY
bool "Voluntary Kernel Preemption (Desktop)"
- depends on !ARCH_HAS_PREEMPT_LAZY
depends on !ARCH_NO_PREEMPT
depends on !PREEMPT_RT
select PREEMPT_VOLUNTARY_BUILD if !PREEMPT_DYNAMIC
--
2.50.1 (Apple Git-155)

AMAZON DEVELOPMENT CENTER ITALY SRL, viale Monte Grappa 3/5, 20124 Milano, Italia, Registro delle Imprese di Milano Monza Brianza Lodi REA n. 2504859, Capitale Sociale: 10.000 EUR i.v., Cod. Fisc. e P.IVA 10100050961, Societa con Socio Unico