Check out my first novel, midnight's simulacra!

Io uring: Difference between revisions

From dankwiki
No edit summary
Tags: mobile web edit mobile edit
No edit summary
Tags: mobile web edit mobile edit
Line 1: Line 1:
<tt>io_uring</tt>, introduced in 2019 by Jens Axboe, is a system for providing the kernel with a schedule of system calls, and receiving the results as they're generated. It combines asynchronous I/O, system call polybatching, and flexible buffer management, and is IMHO the most substantial development in the [[Linux_APIs|Linux I/O model]] since Berkeley sockets.
<tt>io_uring</tt>, introduced in 2019 by Jens Axboe, is a system for providing the kernel with a schedule of system calls, and receiving the results as they're generated. It combines asynchronous I/O, system call polybatching, and flexible buffer management, and is IMHO the most substantial development in the [[Linux_APIs|Linux I/O model]] since Berkeley sockets:
 
* Asynchronous I/O without the large copy overheads and restrictions of POSIX AIO (no more <tt>O_DIRECT</tt>, etc.)
* System call batching across distinct system calls (not just <tt>readv()</tt> and <tt>recvmmsg()</tt>)
** Whole sequences of distinct system calls can be strung together
* Provide a buffer pool, and they'll be used as needed


==Links==
==Links==
* [https://kernel.dk/io_uring.pdf Efficient IO with io_uring]
* [https://kernel.dk/io_uring.pdf Efficient IO with io_uring]
* [https://unixism.net/loti/index.html Lord of the io_uring]
* [https://unixism.net/loti/index.html Lord of the io_uring]

Revision as of 09:40, 4 April 2022

io_uring, introduced in 2019 by Jens Axboe, is a system for providing the kernel with a schedule of system calls, and receiving the results as they're generated. It combines asynchronous I/O, system call polybatching, and flexible buffer management, and is IMHO the most substantial development in the Linux I/O model since Berkeley sockets:

  • Asynchronous I/O without the large copy overheads and restrictions of POSIX AIO (no more O_DIRECT, etc.)
  • System call batching across distinct system calls (not just readv() and recvmmsg())
    • Whole sequences of distinct system calls can be strung together
  • Provide a buffer pool, and they'll be used as needed

Links