- Notizen zum Publikum - Abschließende Dokumentation - Resourcen in die Lumiera-Website ingegriert
73 lines
4.9 KiB
Text
73 lines
4.9 KiB
Text
Links and Resources
|
|
===================
|
|
|
|
|
|
Topic: Kernel and IO
|
|
--------------------
|
|
|
|
|
|
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.
|
|
|
|
* 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!]
|
|
|
|
|
|
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]
|
|
|
|
|
|
IO_URING
|
|
--------
|
|
Introduction
|
|
~~~~~~~~~~~~
|
|
* https://unixism.net/loti/[»Lord of the uring«]
|
|
* 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)
|
|
|
|
|
|
Reference
|
|
~~~~~~~~~
|
|
* https://man7.org/linux/man-pages/man7/io_uring.7.html[Manpage (low-level API)]
|
|
* 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]
|