加载中...

io_uring 是 Jens Axboe 开发、Linux 5.1(2019 年)引入的新一代异步 I/O 接口。它解决了旧 AIO(libaio)只支持 O_DIRECT 文件、接口笨重、部分场景仍会阻塞等长期痛点,目标是为文件与网络 I/O 提供统一、真正异步且高效的系统级接口。
io_uring 的核心是用户态与内核共享的两个环形队列:提交队列 SQ 与完成队列 CQ。应用将请求填入提交队列,内核处理完毕后将结果放入完成队列,双方通过内存读写而非系统调用交换数据,一次 io_uring_enter 可批量提交与收割大量请求;配合 SQPOLL 内核轮询模式甚至可以做到零系统调用提交。它还支持注册固定缓冲区、操作链、超时以及网络操作,liburing 库封装了易用接口。
RocksDB、QEMU、PostgreSQL、Netty 及多种 Rust 运行时已支持 io_uring。由于接口面大、内核实现复杂,它也成为漏洞高发区,Google 曾因安全原因在部分产品环境限制其使用,但社区仍持续加固并扩展其能力。

登录 后参与讨论
暂无讨论,来发表第一条评论吧