As the Linux 7.2 kernel’s feature merge window closes and the release candidate cycle begins, developers are already lining up improvements for Linux 7.3 — and early highlights suggest a meaningful performance boost for modern NVMe SSDs.
The standout change comes from Fengnan Chang, an engineer at Bytedance, who identified a “significant bottleneck” in the Linux kernel’s IOmap framework when handling small direct I/O operations on PCIe Gen5 NVMe SSDs. During 4K random read workloads — a common stress test for high-speed storage — the CPU was spending excessive time on memory allocations and navigating the IOmap state machine, effectively throttling what the hardware was capable of delivering.
A Simpler Direct I/O Path
Chang’s solution introduces a “simple direct I/O path” for IOmap that bypasses much of the framework’s overhead when specific conditions are met:
- The I/O request size is smaller than or equal to the inode’s block size
- The inode is not encrypted (along with a few other limitations)
This streamlined path is used by filesystems that rely on IOmap, including EXT4 and XFS, two of Linux’s most widely deployed filesystems.
Benchmarks Show Tangible Gains
Testing on PCIe Gen5 NVMe SSDs revealed a jump from 1.92 million IOPS to 2.19 million IOPS in 4K random read workloads — a 14% improvement in raw throughput. Additional benchmarking showed up to 10% performance gains when using IO_uring (the modern asynchronous I/O interface) with EXT4 and XFS, with the most pronounced benefits appearing at higher queue depths — precisely the scenarios where modern NVMe SSDs are expected to shine.
The optimization matters most as storage hardware continues to outpace kernel infrastructure. PCIe Gen5 NVMe SSDs can already exceed 10 GB/s of bandwidth and deliver millions of IOPS, but kernel overhead can prevent applications from realizing that full potential, especially in latency-sensitive, small-block workloads like databases and virtualization.
Upstream Status and Timeline
The simple DIO path has already been merged into the VFS subsystem’s fvfs-7.3.iomap Git branch, and is now queued in vfs/vfs.git for the 7.3 development cycle. Assuming the usual kernel development cadence, Linux 7.3 will enter its feature merge window later this year, with a stable release expected early in 2027.
Source: Phoronix
