25
2025
06
18:58:50

io_uring 实例教程:系列文章

io_uring By Example: An Article Series

io_uring 是 Linux 系统中一种全新且巧妙的高性能异步 I/O 接口,它避免了 aio 系列 API 的诸多缺点。在这个由三篇文章组成的系列中,我们将探讨如何使用 io_uring 来完成 Linux 下最常见的编程任务。我们会编写一系列复杂度逐渐增加的程序,循序渐进地介绍 io_uring 的各项特性。虽然大部分情况下我们会使用 liburing 库,但在第一篇文章中,我们会探究原始的 io_uring 接口,以便从底层理解该接口。

本系列文章列表及内容概述

  • 第一篇:简介:在本文中,我们将对 io_uring 及其编程接口进行介绍。我们会创建 3 个版本的类 Unix cat 工具。第一个版本 regular_cat 是使用同步的 readv() 系统调用构建的,它将作为我们比较同步编程和异步编程的参考。第二个版本 cat_uring 在功能上与前一个示例相同,但使用的是 io_uring 的原始接口构建。在这一部分的最后一个版本 cat_liburing 则是使用 liburing 构建的,它为 io_uring 提供了更高级的接口。

  • 第二篇:多操作排队:前一个示例仅作为介绍,我们有意将其设计得较为简单,每次只对一个请求进行排队处理。在这一部分,我们将开发一个文件复制程序 cp_liburing,它能够对多个请求进行排队,这样 io_uring 就可以通过一次系统调用一次性处理所有请求。
  • 第三篇:在这一部分,我们将开发一个使用 io_uring 编写的简单 Web 服务器。这里要介绍的是 ZeroHTTPd,这是一个完全使用 io_uring 进行所有 I/O 操作的简单 Web 服务器。我们将了解如何使用 io_uring 对 accept()readv() 和 writev() 操作进行排队。

通过构建 ZeroHTTPd,我们将本系列内容推向高潮。

图片

ZeroHTTPd 索引页面


源代码

所有示例的完整源代码可在 Github 上获取。

https://github.com/shuveb/io_uring-by-example

关于内核版本的说明

io_uring 是一个相当新且发展迅速的内核子系统。请注意,对于 Web 服务器示例,你至少需要运行 5.5 版本的内核。在撰写本文时,大多数发行版尚未运行该版本或更新的版本。至于其他示例,我已经在运行 5.3 版本内核的机器上进行了测试,它们运行正常。Web 服务器示例是在基于 5.5.15 版本内核的 Arch Linux 上进行测试的。

关于作者

我叫 Shuveb Hussain,是这个专注于 Linux 的博客的作者。你可以在 Twitter 上关注我,我主要会发布与 Linux、性能、可扩展性和云技术相关的技术内容。

Src

https://unixism.net/2020/04/io-uring-by-example-article-series/




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://www.hqyman.cn/post/11893.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: