简体   繁体   English

io_uring 到底是什么?

[英]What exactly is io_uring?

Recently I've been seeing this in different forums.最近我在不同的论坛上看到了这个。 As far as I can tell from reading some forum discussions it is something to do with input and output.据我从阅读一些论坛讨论中可以看出,这与输入和 output 有关。 What exactly is io_uring? io_uring 到底是什么?

io_uring is a (new as of mid 2019) Linux kernel interface to efficiently allow you to send and receive data asynchronously. io_uring是一个(自 2019 年年中新增)Linux kernel 接口,可让您高效地异步发送和接收数据。 It was originally designed to target block devices and files but has since gained the ability to work with things like network sockets.它最初设计用于块设备和文件,但后来获得了使用网络 sockets 之类的东西的能力。

Unlike something like epoll() , it is built around a completion model rather than a readiness model.epoll()之类的不同,它是围绕完成 model 而不是准备就绪 model 构建的。 This is desirable because other operating systems have used the completion model successfully for some time.这是可取的,因为其他操作系统已成功使用完成 model 一段时间。 io_uring provides something competitive and complete for Linux without the drawbacks the previous Linux AIO interface has . io_uring为 Linux 提供了具有竞争力和完整的功能,而没有以前的 Linux AIO 接口所具有的缺点

The author of io_uring has written a PDF document titled Efficient IO with io_uring which discusses its usage in a technical fashion. io_uring的作者编写了 PDF 文档,标题为Efficient IO with io_uring ,以技术方式讨论了它的用法。 A gentler introduction is provided by the Lord of the io_uring guide. io_uring指南之主提供了较为温和的介绍。 You can read ScyllaDB developer Glauber Costa proselytize it in How io_uring and eBPF Will Revolutionize Programming in Linux .您可以在 Linux 中的io_uring 和 eBPF 如何彻底改变编程中阅读 ScyllaDB 开发人员 Glauber Costa 对其进行宣传。 Lastly, LWN.net has written about io_uring many times .最后, LWN.net 多次写过关于io_uring的文章

(Shameless plug: I've written a more linky answer on the "Is there really no asynchronous block I/O on Linux?" question) (无耻的插件:我在“Linux 上真的没有异步块 I/O 吗?”问题上写了一个更链接的答案)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM