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_uring
interface - xnvme: NVMe library with
io_uring
support - SPDK: Intel library focused on performant io, with
io_uring
support - libev: High performance event loop
- ioucontext:
io_uring
withucontext
fibers
- Seastar: Asynchronous event-driven framework
- liburing4cpp: Binding for
io_uring
with coroutines support - ubdsrv: Userspace block device driver
using
io_uring
- libunifex: Facebook prototype for cpp async programming model
- during: An
io_uring
implementation in pure Dlang
- tokio-uring: An
io_uring
backend fortokio
- io-uring: From the authors of
tokio
, withouttokio
dependency - nuclei: Reactor agnostic Proactive IO engine using
io_uring
- compio: A single threaded async runtime using
io_uring
on Linux if available. - rio: Pure rust
io_uring
library, unfortunately unmaintained - Ringbahn:
io_uring
library from Berlin. Unfortunately unmaintained.
- gain - A high-performance, lightweight
io_uring
networking framework written entirely in Go. - gouring: Amazing
io_uring
library in pure golang - iouring-go: Async interface for
io_uring
- Bun: Bun has support for
io_uring
- Nodejs: Issue tracking
io_uring
support - Deno: Issue tracking
io_uring
support
- 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_uring
bindings 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_uring
tagged questions and answers on stackoverflow