A new version number, new interfaces
Linux kernel 5.0, released in March 2019, marks a version number change that Linus Torvalds described as purely cosmetic — the 4.x counter had simply grown too large. But behind the round number lie substantial innovations in the interfaces between user space and kernel, innovations that address bottlenecks accumulated over nearly twenty-eight years of development.
The kernel’s progression remains steady: after the foundations laid with the 2.6 series and the adoption of time-based releases, every development cycle continues to refine critical areas — CPU, memory, I/O, networking — responding to the demands of ever-evolving hardware and workloads.
io_uring: async I/O without system call overhead
The most significant addition is io_uring, an asynchronous I/O interface designed by Jens Axboe to overcome the limitations of existing APIs. Traditional interfaces — synchronous read/write or the kernel’s aio (async I/O) — require a system call for every operation, and the cost of transitioning between user space and kernel becomes the dominant bottleneck in high-throughput workloads.
io_uring introduces two ring buffers in shared memory between application and kernel: a submission queue where the application inserts requests and a completion queue where the kernel deposits results. After initial setup, I/O operations proceed without further syscalls. The outcome is a dramatic reduction in overhead: in NVMe benchmarks, io_uring reaches throughput close to the hardware limit, surpassing aio by a significant factor.
Adiantum and encryption for everyone
Adiantum is an encryption algorithm developed by Google for devices lacking hardware AES instructions — typically smartphones and embedded devices with low-cost ARM processors. Adiantum uses ChaCha12 and NHPOLY1305 to deliver disk encryption with acceptable performance even on limited hardware, making full-disk encryption accessible to billions of devices that otherwise could not afford it.
Energy-aware scheduling
Energy-aware scheduling (EAS) integrates knowledge of the processor’s energy topology into the kernel. On ARM big.LITTLE systems and similar heterogeneous architectures, the scheduler can assign lightweight processes to low-power cores and reserve high-performance cores only when needed. The result is measurable energy savings without noticeable responsiveness sacrifices — a crucial goal for battery-powered devices.
Optimisation as a continuous process
With nearly three decades of development behind it, the Linux kernel demonstrates that optimisation is not a destination but a process. Each generation of hardware brings new constraints and new opportunities: io_uring rethinks I/O for modern storage, Adiantum extends security to budget devices, EAS adapts scheduling to the reality of heterogeneous processors.
Link: kernel.org
