4 ms·
In my tests, for NVMe storage I/O I found io_uring was slower than a well-optimised userspace thread pool. Perhaps the newer kernel is faster, or there is some
by jlokier 5y ago
In my tests, for NVMe storage I/O I found io_uring was slower than a well-optimised userspace thread pool.
Perhaps the newer kernel is faster, or there is some subtlety in the io_uring queueing parameters that I need to tune better.
- dataflow 5y agoMaybe you're doing large I/Os whereas their benchmarks are doing small random I/Os (like 4K). Are you measuring IOPS or throughout?
- jlokier 5y agoMeasuring IOPS of random, small reads (4kiB, O_DIRECT, single NVMe). (It's for optimising a database engine doing random lookups, but the benchmark is just random reads, no other logic.) Just now I have tested 1,133 kIOPs with threads and 598 kIOPS with io_uring. The SQE queue depth for io_uring and max threads for thread test are set the same, 512. I'd like to think this is due to a particularly well-optimised thread pool :-)