Details
-
Task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
Description
io_uring is fast and convenient. In contrast, Linux AIO has flaws: https://blog.cloudflare.com/io_submit-the-epoll-alternative-youve-never-heard-about/
liburing is a user space library which protects from writing a boiler plate code. https://github.com/axboe/liburing Let's use it.
Attachments
Issue Links
- causes
-
MDEV-25760 Assertion failure on io_uring_cqe_get_data() returning -EAGAIN
-
- Closed
-
-
MDEV-28441 liburing failure causes assertions
-
- Closed
-
- relates to
-
MDEV-24927 Install liburing-dev in the CI environments
-
- Closed
-
-
MDEV-26569 10.6 mariadbd error: io_uring_queue_init() failed with ENOSYS, and then asserts
-
- Closed
-
-
MDEV-26674 io_uring related hangs on the Linux kernel
-
- Closed
-
-
MDEV-29610 uring tmpfs InnoDB: IO Error: 125 during async write of X bytes, for file Y, returned 0
-
- Stalled
-
-
MDEV-26555 main.innodb_ext_key fatal assertion
-
- Closed
-
-
MDEV-36234 mysqld: io_uring_queue_init() failed with errno 1
-
- Open
-
Thank you. I tested this using an artificially small redo log, to get a
MDEV-23855‘horror scenario’ with frequent ‘furious flushing’ that would impact throughput and latency. I tested with both innodb_flush_log_at_trx_commit=0 and innodb_flush_log_at_trx_commit=1, as well as innodb_flush_method=fsync and innodb_flush_method=O_DIRECT (MDEV-24854). The results were consistent on my NVMe drive (INTEL SSDPED1D960GAY, Optane 960 series): liburing was always slightly better than libaio.On a SATA 3.0 HDD, the difference was more random and liburing could have been slightly slower at times. My 2-minute benchmark runs were probably simply too short to filter out randomness by averaging over a longer period of time. I can imagine that on rotational storage media, the performance depends on which sectors happen to be under the read/write head at the time of the request, in both dimensions (the spindle is rotating and the head is moving).