下一个 Linux 内核周期,将被称为 Linux 6.20 或更可能的是 Linux 7.0,预计会引入一些 IO_uring 改进以提升 IOPOLL 轮询性能。
IO_uring 的首席开发人员以及 Linux 块设备维护者 Jens Axboe 已经将一个补丁提交到 “for-7.0/io_uring” 分支中,以改进这个出色的异步 I/O 接口的 IOPOLL 轮询功能。Axboe 通过这个补丁解释道:
io_uring 通过单向链表管理已发出和待处理的 IOPOLL 读写请求。这种设计的一个缺点是,无法方便地从该链表中移除单个条目,因此 io_uring 只有在链表中 0..N-1 的请求都完成的情况下,才能完成第 N 个请求。对于同质化的 IO 操作,这可能不是问题,但如果同一环中有不同设备参与轮询,或者同一设备上有不同类型的 IO 操作被轮询,这可能会不必要地延迟某些请求的完成。
改用双向链表来处理 iopoll 完成操作,这样就可以方便地完成那些成功执行的请求。
对于终端用户来说,真正令人兴奋的是最终效果。字节跳动的 Fengnan Chang 最初提交了一个改进轮询模式的补丁,并分享了一些基准测试结果:

Linux 6.20~7.0 版本中的一项不错改进。
转自 Linux 7.0 Expected To Bring IO_uring IOPOLL Polling Improvements – Phoronix
Linuxeden开源社区