Restoring PREEMPT_NONE to 7.x kernels
Prior to 7.x kernels, you had the option of configuring a non-preemptive kernel. 7.x and later removed this for x86 architecture, but this can be a loss for high core count CPUs and work loads where throughput is important.
I run a 8200 user Friendica node https://friendica.eskimo.com, also on the same box a Hubzilla https://hubzilla.eskimo.com, a Mastodon https://mastodon.eskimo.com, a pixelfed, https://pixelfed.eskimo.com, a yacy federated search engine, https://yacy.eskimo.com, and a Nextcloud, https://nextcloud.eskimo.com, on an i9-10980xe 18 core 36 thread machine all cores overclocked at 4.5 Ghz, with 256GB of RAM.
Computationally this chip is strong but it does not have good memory I/O, only four channels and in theory 26400 MT/S, I've got this one memory overclocked as well at 32000 MT/S, but still this is inadequate for this much compute. Consequently for best performance it's important to keep the cache hot and minimize unnecessary context switches and so the lack of PREEMPT_NONE in 7.x and later roughly cut the performance in half.
I tried all sorts of legitimate things to fix this, unsuccessfully, so ultimately I made a minor kernel hack to restore the previous functionality. I figured the code for non-preemption still had to be in the kernel based upon the fact that some architectures are incapable of preemption. And so found in kernel/Kconfig.preempt that they had disabled it for x86, I simply took that architecture specific disable out to restore that functionality and it is working well. I confronted the developers over this and basically got a well then stick with 6.18 or fuck off response. I didn't find this very friendly but since the Linux kernel is open sourced, I could and did fix myself, and now I am sharing my minor patch that I developed with you so that if you have a similar situation this option becomes available to you.
To apply this patch, cd to the kernel source tree root and run patch -p1 < /path/to/preempt.patch
diff -rupN linux-7.2.9/kernel/Kconfig.preempt linux-7.2.9+acso+preempt/kernel/Kconfig.preempt
--- linux-7.2.9/kernel/Kconfig.preempt 2026-10-03 03:43:16.000000000 -0700
+++ linux-7.2.9+acso+preempt/kernel/Kconfig.preempt 2026-10-08 19:44:45.644031224 -0700
@@ -22,7 +22,6 @@ choice
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
