The next Linux kernel cycle, which will be known as Linux 6.20 or more than likely Linux 7.0, is expected to land some IO_uring improvements for better IOPOLL polling.
IO_uring lead developer and Linux block maintainer Jens Axboe has queued a patch into the “for-7.0/io_uring” branch for improving the IOPOLL polling for this wonderful asynchronous I/O interface. Axboe explains with the patch:
“io_uring manages issued and pending IOPOLL read/write requests in a singly linked list. One downside of that is that individual items cannot easily be removed from that list, and as a result, io_uring will only complete a completed request N in that list if 0..N-1 are also complete. For homogenous IO this isn’t necessarily an issue, but if different devices are involved in polling in the same ring, or if disparate IO from the same device is being polled for, this can defer completion of some requests unnecessarily.
Move to a doubly linked list for iopoll completions instead, making it possible to easily complete whatever requests that were polled done successfully.”
Where it gets exciting for end-users is the end result. Fengnan Chang of Bytedance originally posted a patch for improving the polling mode and shared some benchmark results:
A nice improvement on the way for Linux 6.20~7.0.
