2026-07-12 03:36:28 +02:00
Links and Resources
===================
Topic: Kernel and IO
--------------------
2026-08-25 05:13:00 +02:00
Background: Asynchronous IO
~~~~~~~~~~~~~~~~~~~~~~~~~~~
- https://www.kegel.com/c10k.html[The C10k problem]: a very frequently quoted (and actually
quite old page (2003-2011) that analyses the problem of serving more than 10k requests from a server,
the bottlenecks and possible solution strategies.
- https://dreamsongs.com/WorseIsBetter.html[The crux with »worse is better«]. This is a summary
by Richard P. Gabriel himself, looking back, and he still has not made up his mind if _worse is better_.
The tension between the »*Berkely*« (or »New Jersy«) style and the »*MIT* style« helps to understand
design choices taken in the original design of Unix -- and with the advent of fast SSDs and finally
an interface like `io_uring` in the Linux kernel, all these unresolved questions are coming back
to haunt us.
2026-07-12 03:36:28 +02:00
2026-08-25 05:13:00 +02:00
* https://dreamsongs.com/Files/WorseIsBetterPositionPaper.pdf[Back to the Future: Is Worse (Still) Better?]
* https://dreamsongs.com/Files/ProWorseIsBetterPosition.pdf[Back to the Future: Worse (Still) is Better!]
2026-07-12 03:36:28 +02:00
2026-08-25 05:13:00 +02:00
History of io_uring
~~~~~~~~~~~~~~~~~~~
- https://web.archive.org/web/20251010072644/https://kernel.dk/io_uring.pdf[Whitepaper(2019): Efficient IO with io_uring]
- https://lwn.net/Articles/810414/[LWN.net: The rapid growth of io_uring]
- https://web.archive.org/web/20200421163135/https://thenewstack.io/how-io_uring-and-ebpf-will-revolutionize-programming-in-linux/[2020: io_uring and eBPF will revolutionize programming in linux]
2026-07-12 03:36:28 +02:00
IO_URING
--------
Introduction
~~~~~~~~~~~~
* https://unixism.net/loti/[»Lord of the uring«]
2026-08-25 05:13:00 +02:00
* https://towardsdev.com/io-uring-vs-epoll-syscall-overhead-linux-performance-a3d7fcc6c9b9?gi=e429808ce081[The Linux I/O Interface That Finally Makes Sense]
* https://lwn.net/Articles/776703/[LWN.2019: Ringing in a new asynchronous I/O API] (explains the low-level API)
2026-07-12 03:36:28 +02:00
Reference
~~~~~~~~~
2026-08-25 05:13:00 +02:00
* https://man7.org/linux/man-pages/man7/io_uring.7.html[Manpage (low-level API)]
2026-07-12 03:36:28 +02:00
* https://unixism.net/loti/ref-liburing/index.html[Overview (liburing)]
** https://unixism.net/loti/ref-liburing/submission.html[Submission and Submission helpers]
** Liburing provides _submission helpers_ for common Kernel IO calls...
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_nop[io_uring_prep_nop]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_read[io_uring_prep_read]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_write[io_uring_prep_write]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_readv[io_uring_prep_readv]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_read_fixed[io_uring_prep_read_fixed]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_writev[io_uring_prep_writev]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_write_fixed[io_uring_prep_write_fixed]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_fsync[io_uring_prep_fsync]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_close[io_uring_prep_close]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_openat[io_uring_prep_openat]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_openat2[io_uring_prep_openat2]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_fallocate[io_uring_prep_fallocate]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_statx[io_uring_prep_statx]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_fadvise[io_uring_prep_fadvise]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_madvise[io_uring_prep_madvise]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_splice[io_uring_prep_splice]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_recvmsg[io_uring_prep_recvmsg]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_sendmsg[io_uring_prep_sendmsg]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_recv[io_uring_prep_recv]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_send[io_uring_prep_send]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_accept[io_uring_prep_accept]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_connect[io_uring_prep_connect]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_epoll_ctl[io_uring_prep_epoll_ctl]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_poll_add[io_uring_prep_poll_add]
- https://unixism.net/loti/ref-liburing/submission.html#c.io_uring_prep_poll_remove[io_uring_prep_poll_remove]