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 did a quickly test of io_uring on local NVME device and ext4 filesystem:
This is to NVME device directly:
We could see iops burst very well with same fio command as Ihara's above fio.
However, if we compared results on ext4:
It looks io_uring did not help on filesystem, it makes me think io_uring might not help on Lustre too, it might be only helpful in
some cases that target device is really low latency, however network filesystem might not be the case?