[$] An end to uniprocessor configurations https://lwn.net/Articles/1023575/ #tech #linux
Discussion
Here's a summary of the article:
---
End of Uniprocessor-Only Support in Linux Kernel Scheduler
Initially, the Linux kernel supported only single-processor (uniprocessor) systems due to the lack of access to multiprocessor hardware. Early kernel versions (1.0 and 1.2) had no Symmetric Multiprocessing (SMP) support. SMP support began appearing in version 1.3.31 (1995), and stabilized by version 2.0 (1996), but was considered "big iron" — rare and expensive at the time.
To prevent performance regressions on the more common uniprocessor systems, developers used #ifdef CONFIG_SMP and macro tricks to separate SMP and UP code paths. This dual-path system has remained for nearly 30 years.
In 2025, SMP systems are the norm — even most low-end systems run SMP-capable kernels. Ingo Molnar has proposed a 43-part patch series to:
Remove special-case uniprocessor support.
Simplify the scheduler by eliminating ~175 #ifdef CONFIG_SMP blocks.
Clean up nearly 1,000 lines of legacy code.
Molnar admits a ~5% performance loss on UP systems using SMP-only kernels, and a 0.3% increase in kernel text size, but argues that such costs are acceptable in today's hardware landscape.
He suggests that if anyone wants to optimize for UP again, they should prove the value through patches. So far, there’s been no opposition — uniprocessor systems have become rare, and the Linux community seems ready to let go of that legacy.
---
Let me know if you want this in a simpler format (like bullet points or visual timeline).