Linux 5.1 引入的 io_uring 为高性能异步 I/O
提供了全新的编程范式。本系列文章将系统介绍这一技术的原理与实践。
目录
- 介绍 Submission Queue (SQ) 和 Completion Queue (CQ)
- 理解 Proactor 模式与 Zero Copy
- 为什么它比 AIO 更好?
- 系统调用开销对比
- 内存拷贝与上下文切换
- Reactor (epoll) vs Proactor (io_uring) 的本质区别
- 从
io_uring_queue_init到io_uring_submit - 编写第一个 io_uring 文件读取程序
- 网络编程实战:Accept, Read, Write 链式处理
- Context 管理与 user_data 技巧
- SQPOLL (0 Syscall)
- Fixed Files & Fixed Buffers
- Provided Buffers (IOSQE_BUFFER_SELECT)
- Libevent 2.2+ 的 io_uring backend
- 集成现状与性能评估
- 无阻塞快路径(Fast Path)与延迟的博弈
- 海量空闲连接的内存占用的隐性成本
- 多线程安全与生态复杂度
- Golang 运行时与 io_uring 的冲突与解决方案
- CGO 封装 vs 纯 Go 实现的权衡
- 内存固定、注册缓冲区与 SQPoll 工程实践
- 开源项目解析与避坑指南
- GDB、rr、strace、bpftrace、perf、Sanitizer 的分层调试方法
- 事件驱动程序的内存、并发与状态机诊断
- 让 epoll/io_uring 代码本身更易调试的工程模式
- io_uring 线程安全模型:SQ/CQ 的 SPSC 协议与 liburing 的线程安全边界
- 四种多线程架构模式对比:Thread-per-Ring、Shared Ring、Submit/Reap 分离、SQPOLL
- 实战:Thread-per-Ring + SO_REUSEPORT 多线程 Echo Server 与 NUMA 优化
延伸阅读
- Lord of the io_uring (外部链接)
- liburing GitHub Repository (外部链接)
相关文章
- Zero Copy 的脏真相:它什么时候反而更慢 — sendfile/splice/io_uring 零拷贝的隐藏成本与适用边界
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【io_uring 系列】io_uring 核心原理:Linux 异步 I/O 的新纪元
深入解析 Linux io_uring 的核心机制:提交队列 (SQ)、完成队列 (CQ) 与零拷贝技术,理解它如何重塑高性能网络编程。
【io_uring 系列】巅峰对决:io_uring vs epoll 性能与架构对比
全方位对比 io_uring 与 epoll:从系统调用开销、内存管理到编程模型,分析 io_uring 在高性能 I/O 场景中的优势与局限。
【io_uring 系列】liburing 基础 API 详解:从 Hello World 到文件 I/O
手把手教你使用 liburing 编写第一个 io_uring 程序。详解 io_uring_queue_init, io_uring_submit 等核心 API 的使用流程。
【io_uring 系列】实战:基于 io_uring 的 TCP Echo Server
深入网络编程,实现一个异步 TCP 服务器。学习如何使用 user_data 管理连接上下文,处理 Accept, Read, Write 链式调用。