Linux 6.6 Lands "Pretty Juicy" IOmap Improvements, Lower Latency With IO_uring

Written by Michael Larabel in Linux Storage on 29 August 2023 at 08:15 AM EDT. 9 Comments
LINUX STORAGE
Among the exciting early pull requests to land in the new Linux 6.6 kernel cycle are some nice improvements to the IOmap code that should yield some substantive I/O benefits with this new kernel.

The work carried out over the summer to improve the sync iomap Direct I/O performance has been merged. The patch series explained:
"iomap always punts async dio write completions to a workqueue, which has a cost in terms of efficiency (now you need an unrelated worker to process it) and latency (now you're bouncing a completion through an async worker, which is a classic slowdown scenario).

Even for writes that should, in theory, be able to complete inline, if we race with truncate or need to invalidate pages post completion, we cannot sanely be in IRQ context as the locking types don't allow for that.
...
This is good for up to a 37% improvement in throughput/latency for low queue depth IO, patch 5 has the details.

If we need to do real work at completion time, iomap will clear the IOMAP_DIO_DEFER_COMP flag.

This work came about when Andres tested low queue depth dio writes for postgres and compared it to doing sync dio writes, showing that the async processing slows us down a lot."

Linux storage expert and IO_uring lead developer Jens Axboe previously described this performance work as "pretty juicy" for the kernel.

Linux 6.6 iomap


The IOmap improvements have now been merged for Linux 6.6.
"We've got some big changes for this release -- I'm very happy to be landing willy's work to enable large folios for the page cache for general read and write IOs when the fs can make contiguous space allocations, and Ritesh's work to track sub-folio dirty state to eliminate the write amplification problems inherent in using large folios.

As a bonus, io_uring can now process write completions in the caller's context instead of bouncing through a workqueue, which should reduce io latency dramatically. IOWs, XFS should see a nice performance bump for both IO paths."

With this work, the new EEVDF scheduler, various CPU improvements, and other new kernel features, Linux 6.6 is gearing up to be a very exciting autumn 2023 kernel release.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week