io_uring is considered one of the most revolutionary interfaces
for the linux kernel, find out why.
In this repository we try to collect examples, tutorials and documentation about this amazing project, to raise awarness and knowledge.
Tutorials about io_uring
- io_uring and networking in 2023: tutorial written by Jens Axboe, the creator of
io_uring
- Lord of the
io_uring: Amazing collection of tutorials with deep explanations, unfortunately not updated often.
Libraries for using io_uring
- liburing: Helper to interact with the kernel
io_uringinterface - xnvme: NVMe library with
io_uringsupport - SPDK: Intel library focused on performant io, with
io_uringsupport - libev: High performance event loop
- ioucontext:
io_uringwithucontextfibers
- Seastar: Asynchronous event-driven framework
- liburing4cpp: Binding for
io_uringwith coroutines support - ubdsrv: Userspace block device driver
using
io_uring - libunifex: Facebook prototype for cpp async programming model
- during: An
io_uringimplementation in pure Dlang
- tokio-uring: An
io_uringbackend fortokio - io-uring: From the authors of
tokio, withouttokiodependency - nuclei: Reactor agnostic Proactive IO engine using
io_uring - compio: A single threaded async runtime using
io_uringon Linux if available. - rio: Pure rust
io_uringlibrary, unfortunately unmaintained - Ringbahn:
io_uringlibrary from Berlin. Unfortunately unmaintained.
- rio - AIO network library based on
io_uring, non CGO, and following standard library usage design patterns. - gain - A high-performance, lightweight
io_uringnetworking framework written entirely in Go. - gouring: Amazing
io_uringlibrary in pure golang - iouring-go: Async interface for
io_uring
- Bun: Bun has support for
io_uring - Nodejs: Issue tracking
io_uringsupport - Deno: Issue tracking
io_uringsupport
- Jasyncfio: Async io library
- nio_uring: Async io library
- Netty transport
- PanamaUring :Use java Panama ffi api to provide io_uring binding for java without using jni binding, while unifying the models of file IO and network IO, and providing an easy-to-use asynchronous IO API
- kuring: Async io library
- ocaml-uring:
io_uringbindings for OCaml
Projects using io_uring
- ClickHouse
- Postgres (experimental)
- questdb
- Scylladb
- Yottastore
Articles about io_uring
- Why you should use
io_uring - Efficient IO with
io_uring - Ringing in a new asynchronous I/O API
- How io_uring and eBPF Will Revolutionize Programming in Linux
- Experiments with io_uring
- IO_uring Fixed Buffer Versus Non-Fixed Buffer Performance Comparison on NVMe
- Missing manuals - io_uring worker pool
- io_uring in Android OTA: Linux plumbers conference 2022 presentation
- A journey to io_uring, AIO and modern storage devices: includes experiments on Optane storage
Other resources about io_uring
- IRC channel:
discussions about
io_uring. You can find the archives here - Mailing list: The official dev mailing list of
io_uring - Stackoverflow:
io_uringtagged questions and answers on stackoverflow