Linux 5.1 引入的 io_uring 为高性能异步 I/O 提供了全新的编程范式。本系列文章将系统介绍这一技术的原理与实践。

目录

  1. io_uring 核心概念:全新的异步 I/O 架构
  • 介绍 Submission Queue (SQ) 和 Completion Queue (CQ)
  • 理解 Proactor 模式与 Zero Copy
  • 为什么它比 AIO 更好?
  1. io_uring vs epoll:性能与架构的较量
  • 系统调用开销对比
  • 内存拷贝与上下文切换
  • Reactor (epoll) vs Proactor (io_uring) 的本质区别
  1. liburing 基础 API 详解:从 Hello World 到文件 I/O
  • io_uring_queue_initio_uring_submit
  • 编写第一个 io_uring 文件读取程序
  1. 实战:基于 io_uring 的 TCP Echo Server
  • 网络编程实战:Accept, Read, Write 链式处理
  • Context 管理与 user_data 技巧
  1. 高级特性:榨干性能极限
  • SQPOLL (0 Syscall)
  • Fixed Files & Fixed Buffers
  • Provided Buffers (IOSQE_BUFFER_SELECT)
  1. Libevent 对 io_uring 的支持现状
  • Libevent 2.2+ 的 io_uring backend
  • 集成现状与性能评估
  1. 反思与打破神话:为何特定场景 epoll 比 io_uring 更高效
  • 无阻塞快路径(Fast Path)与延迟的博弈
  • 海量空闲连接的内存占用的隐性成本
  • 多线程安全与生态复杂度
  1. Go 如何集成 io_uring:从 CGO 封装到纯 Go 实现
  • Golang 运行时与 io_uring 的冲突与解决方案
  • CGO 封装 vs 纯 Go 实现的权衡
  • 内存固定、注册缓冲区与 SQPoll 工程实践
  • 开源项目解析与避坑指南
  1. 事件驱动代码的调试艺术:当回调成为迷宫
  • GDB、rr、strace、bpftrace、perf、Sanitizer 的分层调试方法
  • 事件驱动程序的内存、并发与状态机诊断
  • 让 epoll/io_uring 代码本身更易调试的工程模式
  1. io_uring 多线程编程模式:从线程安全到架构选型
  • io_uring 线程安全模型:SQ/CQ 的 SPSC 协议与 liburing 的线程安全边界
  • 四种多线程架构模式对比:Thread-per-Ring、Shared Ring、Submit/Reap 分离、SQPOLL
  • 实战:Thread-per-Ring + SO_REUSEPORT 多线程 Echo Server 与 NUMA 优化

延伸阅读


相关文章

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。