LINUX STORAGE
Following a presentation at last week’s Linux storage, file-system, memory management and BPF summit (LSFMM) in Croatia where Linux I/O overhead compared to the Storage Performance Development Kit (SPDK) was presented, Jens Axboe was motivated to pursue some new Linux kernel optimizations for greater per-core I/O performance. This lead IO_uring developer and Linux block maintainer has managed to achieve around a 60% increase to the per-core I/O performance with his latest patches.

Jens Axboe announced on X this weekend that he devised a proof-of-concept patch series while traveling back from LSFMM in Zagreb to increase the per-core storage performance by 50%. He later followed up with achieving a 60% per-core performance increase.

Axboe 60%

The proof-of-concept patches can be currently found via this “io_uring-io-slots” Git branch. Axboe explained of the work:

“Basically extends registered buffers to also have a struct bio ready to go, and have the buffers be DMA mapped upfront. Then O_DIRECT is basically just looking up the slot and submitting the bio directly…Normal registered buffers take the page referencing and mapping into userspace out of the hot path, the above branch merely extends that to avoid bio allocation and DMA map+unmap in the hot path for IO.”

The patches affect IO_uring, the NVMe PCI driver, and the block code of the Linux kernel. Hopefully these patches get worked into suitable for upstreaming into the mainline Linux kernel in the not too distant future.