
IO_uring was a big feature of Linux 5.1 though still needs to become more widely adopted. In working on using IO_uring, a developer discovered that I/O submission time drops terribly when registering a large fixed buffer and I/O is being done on the latter pages of that buffer.
Linux I/O expert and also IO_uring developer Jens Axboe found the cause to be the iteration of bvecs to find the buffer they need, but in reality it can be made much more efficient based upon existing information to find that offset within the buffer.
With this fix, reading at the start of the buffer is around 10% faster but if reading towards the end is a much greater benefit to this fix... Originally it would take 1039879 ns while now has dropped to just 1377 ns. Or, yes, "about an 755x improvement for the tail page."
This is the fix posted on Saturday for IO_uring and will hopefully soon make it to the mainline kernel tree.
19 Comments