Tokio’s New io_uring-Based File I/O
summary
Tokio exposes an experimental io_uring backend for tokio::fs behind a feature flag (since 1.48) that switches tokio::fs to an io_uring backend and leaves existing code unchanged; it registers the io_uring FD with epoll so the runtime uses both mechanisms. Cancel safety is handled by retaining buffers until the kernel signals completion, avoiding use‑after‑free. Benchmarks show typical speedups but slowdowns with heavy short ops and many threads because a single io_uring instance creates mutex contention around ~100 threads. Future work includes public io_uring APIs and network support.
AI-written summary · about
chapters (6)
- 0:00Tokio’s io_uring support
- 1:40io_uring status and implementation
- 5:14Implementation caveats and resource management
- 9:09Performance vs thread pool
- 11:19Future work and improvements
- 15:21Q&A
related talks
29mI/O in Rust: the whole story
06mZero-copy Transfers with io_uring and Rust
32mTechniques for writing concurrent applications with asynchronous I/O
30mWriting High Performance Async IO Apps
05m“Using async-profiler to Find Tail Latency Issues”
45mKeynote | Actors with Tokio – a lesson in ownership
30mBack to the Futures
29mAsychronous programming in Rust
