Details
-
Improvement
-
Resolution: Done
-
Minor
-
None
-
None
-
None
-
9223372036854775807
Description
Kernels since 5.1 have implemented the io_uring interface (https://kernel.dk/io_uring.pdf) for efficient asynchronous IO submission to storage. According to posted results, io_uring is on-par with SPDK doing all of the IO in userspace. The io_uring interface is intended to replace the older libaio interface.
With the recent performance improvements for libaio AIO/DIO, it should be possible to use the io_uring interfaces in a similar manner.
I don't think many applications are using this interface yet, but since it provides a significant improvement over libaio it will likely become used in performance-oriented applications.
I got first test resutls and comparison of libaio and ut_ring with fio.
Tested Configuration
Test workload (1 thread, QD=1 to 256, 4K random read)
Here is results.
The good news, at least io_uring didn't break Lustre
, but I didn't see huge performance benefit single thread standpoint (with many QDs case). I will play a bit and more collect more results.