io_uring 到底是什么?

What exactly is io_uring?

最近我在不同的论坛上看到了这个。据我阅读一些论坛讨论可以看出,这与输入和输出有关。 io_uring 到底是什么?

io_uring 是一个(截至 2019 年年中的新版本)Linux 内核接口,可让您高效地异步发送和接收数据。它最初是为块设备和文件设计的,但后来获得了处理网络套接字等东西的能力。

epoll() 不同,它是围绕完成模型而不是准备模型构建的。这是可取的,因为其他操作系统已成功使用完成模型一段时间。 io_uring 为 Linux 提供了一些有竞争力和完整的东西,没有 drawbacks the previous Linux AIO interface has

io_uring 的作者写了一个标题为 Efficient IO with io_uring which discusses its usage in a technical fashion. A gentler introduction is provided by the Lord of the io_uring guide. You can read ScyllaDB developer Glauber Costa proselytize it in How io_uring and eBPF Will Revolutionize Programming in Linux. Lastly, LWN.net has written about io_uring many times 的 PDF 文档。

(不要脸的外挂:我写了一个更链接的answer on the "Is there really no asynchronous block I/O on Linux?"问题)