0.前提
io_uring
是 2019 年 Linux 5.1 内核首次引入的高性能 异步 I/O 框架,能显著加速 I/O 密集型应用的性能。
但如果你的应用已经在使用 传统 Linux AIO 了,并且使用方式恰当, 那 io_uring
并不会带来太大的性能提升 —— 根据原文测试(以及我们 自己的复现),即便打开高级特性,也只有 5%。
除非你真的需要这 5% 的额外性能,否则 切换成 io_uring
代价可能也挺大,因为要 重写应用来适配 io_uring
(或者让依赖的平台或框架去适配,总之需要改代码)
性能跟传统 AIO 差不多,那为什么还称 io_uring
为革命性技术呢?
-
它首先和最大的贡献在于:统一了 Linux 异步 I/O 框架,
- Linux AIO 只支持 direct I/O 模式的存储文件 (storage file),而且主要用在数据库这一细分领域;
io_uring
支持存储文件和网络文件(network sockets),也支持更多的异步系统调用 (accept/openat/stat/...
),而非仅限于read/write