io_uring
A high-performance asynchronous I/O interface introduced in the Linux 5.1 kernel, progressively moving toward Proactor semantics and providing more efficient asynchronous I/O capabilities than epoll.
Timeline (last 90 days)
Linux kernel version iterations may add or remove system calls or change parameter semantics, for example adding io_uring-related calls, deprecating old calls, or adjusting parameter structures.
Betelgeuse uses a RAM victim cache plus an io_uring pager to reduce physical NVMe reads from about 71 MB/token to 12.43 MB/token.
io_uring implements batch I/O communication between user space and kernel space via two ring buffers: the submission queue (SQ) and the completion queue (CQ).
The performance advantage of io_uring is built on a model of batch submission and asynchronous completion, making it best suited for handling a large number of concurrent I/O requests simultaneously.
A team that built a query engine in Rust found that system performance actually became slower after replacing the traditional MMAP solution with io_uring.
Using io_uring typically requires pre-allocating read buffers, which may introduce additional memory allocation and data copy costs.
When the query engine's access pattern consists of relatively random, small-batch reads, io_uring's batch processing advantage cannot be leveraged and instead introduces additional overhead.
io_uring is an asynchronous I/O framework introduced in Linux 5.1.
All Facts (8)
Linux kernel version iterations may add or remove system calls or change parameter semantics, for example adding io_uring-related calls, deprecating old calls, or adjusting parameter structures.
50%UnverifiedBetelgeuse uses a RAM victim cache plus an io_uring pager to reduce physical NVMe reads from about 71 MB/token to 12.43 MB/token.
50%Unverifiedio_uring implements batch I/O communication between user space and kernel space via two ring buffers: the submission queue (SQ) and the completion queue (CQ).
50%UnverifiedThe performance advantage of io_uring is built on a model of batch submission and asynchronous completion, making it best suited for handling a large number of concurrent I/O requests simultaneously.
50%UnverifiedA team that built a query engine in Rust found that system performance actually became slower after replacing the traditional MMAP solution with io_uring.
50%UnverifiedUsing io_uring typically requires pre-allocating read buffers, which may introduce additional memory allocation and data copy costs.
50%UnverifiedWhen the query engine's access pattern consists of relatively random, small-batch reads, io_uring's batch processing advantage cannot be leveraged and instead introduces additional overhead.
50%Unverifiedio_uring is an asynchronous I/O framework introduced in Linux 5.1.
50%