小红花·文摘
  • 首页
  • AI Tokens🪙
  • 排行榜🏆
  • 直播
  • FAQ

本文为SPDK用户态存储栈系列首篇,定位其相对内核NVMe与io_uring的生态位,提出五条坐标系(I/O路径、线程消息、设备独占、bdev、远端控制面)作为排障语言,并规划16篇阅读路线,强调用户态轮询栈的CPU税与运维代价。

【SPDK 用户态存储】用户态存储全景:从 Reactor 到 NVMe-oF 的坐标系

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-08-13T00:00:00Z

本文对比SPDK用户态、内核NVMe块层及O_DIRECT+io_uring三条存储路径,强调选型需基于机制差异而非速度排名。SPDK适合NVMe-oF目标或用户态后端,内核路径利于系统共置,io_uring优化应用自管缓存。迁移需考虑设备独占、CPU核税、配置与观测成本,并建议可回滚演练。最终选择应依据硬件实测与运维能力,而非追求技术先进。

【SPDK 用户态存储】对照内核路径:SPDK、内核 NVMe 与 O_DIRECT+io_uring

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-08-13T00:00:00Z

本文为SPDK用户态存储系列终章,通过排除树指导选型:无用户态需求用内核NVMe,需高IOPS用O_DIRECT+io_uring,能付核税且需target/vhost则选SPDK。强调机制差异而非跑分,列出阅读路径、开放问题(如ZNS、DPU卸载),并建议将决策写入架构记录,重跑排除树时禁止仅贴跑分截图。

【SPDK 用户态存储】选型收束:机制排除树与系列开放问题

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-08-13T00:00:00Z

本文比较了 Linux 中的两种 I/O 处理机制:epoll 和 io_uring。epoll 适用于高并发场景,但需要多次系统调用;io_uring 通过共享环形队列减少系统调用次数,适合高吞吐量需求。尽管 io_uring 有优势,但在低版本内核或现有生态系统中,epoll 仍然是更合适的选择。选择应基于具体需求和环境。

Linux 异步 I/O:epoll 与 io_uring 对比

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-06-21T00:00:00Z

本文探讨了将O_DIRECT与io_uring组合使用的技术路径,旨在解决数据库和块存储引擎中的双重缓冲与系统调用开销问题。文章详细分析了组合使用的决策边界、O_DIRECT的对齐约束、io_uring固定缓冲区的注册方法及其与O_DIRECT叠加时的注意事项。通过实测对比了三种写路径的性能,指出register_buffers组合在特定环境下可能失败,强调需在目标内核上验证。最后提供了工程检查清单和选型建议,帮助读者在实际应用中做出正确决策。

【存储工程】O_DIRECT 与 io_uring:固定缓冲区、register_buffers 与工程选型

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-06-12T00:00:00Z
拉蒂西亚·阿夫罗特:一位审稿人的诞生

Lucas Draescher 提交的 PostgreSQL 补丁修复了 io_method=io_uring 的文件描述符泄漏问题。该补丁经过多次修订,未得到审查。作者建议在等待审查时主动审查他人补丁,以促进社区互动。补丁经过测试,确认问题真实存在,修复后文件描述符计数保持稳定,代码清晰,符合 PostgreSQL 规范。

拉蒂西亚·阿夫罗特:一位审稿人的诞生

Planet PostgreSQL Planet PostgreSQL · 2026-06-05T00:00:00Z

epoll是Linux网络服务器的核心I/O多路复用机制,通过红黑树管理fd、就绪链表和回调机制实现高效事件通知。支持LT(水平触发)和ET(边缘触发)模式,EPOLLEXCLUSIVE解决惊群问题,EPOLLONESHOT保证单线程处理。相比select/poll,epoll仅遍历就绪fd,性能更优。io_uring是补充而非替代,适用于文件I/O和极致性能场景。

【操作系统百科】epoll 内部

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-05-19T00:00:00Z

io_uring 是 Linux 5.1 引入的异步 I/O 框架,利用共享内存环形缓冲区减少系统调用开销,支持多种文件和网络操作。核心数据结构包括提交队列(SQE)和完成队列(CQE),通过 SQPOLL 和 IOPOLL 等模式优化性能。注册文件描述符和缓冲区可减少重复开销,io-wq 处理阻塞操作。安全模型仍在演进,建议在生产环境中限制非特权用户使用。

【操作系统百科】io_uring 内核内部

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-05-18T00:00:00Z

本文讨论了在高并发网络服务中使用io_uring的多线程架构,推荐采用“每个工作线程一个ring”的Thread-per-Ring模式,并结合SO_REUSEPORT进行连接分流,以提升性能和简化代码。文章分析了多线程的线程安全问题,介绍了四种多线程架构模式及其优缺点,强调了内存管理和CPU亲和性的重要性,并提供了多线程Echo Server的实现示例,展示了如何有效利用io_uring进行高效的网络编程。

io_uring 多线程编程模式:从线程安全到架构选型

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-03-14T00:00:00Z
io_uring 核心原理:Linux 异步 I/O 的新纪元

io_uring 是 Linux 5.1 引入的新异步 I/O 接口,旨在解决 epoll 的性能瓶颈。它通过双环形缓冲区减少系统调用和内存拷贝,支持网络和磁盘 I/O,提升高频 I/O 性能,简化编程模型,推动 Linux I/O 的未来发展。

io_uring 核心原理:Linux 异步 I/O 的新纪元

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

在 Linux 网络编程中,epoll 已使用近 20 年,而 io_uring 的出现改变了这一局面。两者在架构、性能和适用场景上存在显著差异:epoll 依赖频繁的系统调用,适合遗留系统和低活跃连接;io_uring 通过批处理和零拷贝提升性能,更适合高性能需求和新项目。

巅峰对决:io_uring vs epoll 性能与架构对比

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

liburing 提供了更友好的 API 来使用 io_uring,简化了内存管理和请求处理。使用 liburing 的流程包括初始化、获取请求、提交、等待完成和处理结果。示例代码展示了一个简单的 cat 命令,适合高并发场景。

【io_uring】liburing 基础 API 详解:从 Hello World 到文件 I/O

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

本文介绍了如何使用 io_uring 实现 TCP Echo Server。与传统同步模型不同,io_uring 通过状态机管理连接状态,并通过回调链式处理异步操作。代码示例展示了连接、数据读取和写入的处理,并强调了内存管理的重要性。

实战:基于 io_uring 的 TCP Echo Server

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

io_uring通过SQPOLL、固定文件和提供缓冲区等特性,显著提升I/O性能,减少系统调用开销,优化内核资源管理。

io_uring 高级特性:榨干性能极限

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

Libevent 2.2(Alpha)版本引入了实验性的 io_uring 后端,结合了 Reactor 和 Proactor 模式。虽然目前主要使用 io_uring 的 POLL_ADD 操作,尚未完全发挥其异步能力,但已能减少系统调用。该后端仍处于实验阶段,未来有望支持真正的 Proactor 模式,以提升性能。

Libevent 对 io_uring 的支持现状

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

Linux 5.1 引入的 io_uring 技术彻底改变了高性能 I/O 的方式。文章探讨了 io_uring 的核心概念、异步 I/O 的优势,以及与 AIO 和 epoll 的比较,并介绍了如何使用 liburing API 进行文件 I/O 和网络编程。

io_uring 系列文章

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

本文讨论了io_uring的缺点与局限性,指出在某些场景下epoll更为优越。io_uring在低延迟和内存占用方面表现不佳,尤其在高并发和海量连接时。此外,编程复杂度和调试难度较高,生态和安全性问题也需考虑。选择技术时应根据具体需求,避免盲目追新。

反思与打破神话:为何特定场景 epoll 比 io_uring 更高效

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

在高性能系统编程中,Linux的io_uring模型通过将I/O操作从“询问就绪”转变为“提交后通知”,降低了内核与用户态的交互成本。Go语言在集成io_uring时面临调度、内存安全和接口兼容性等挑战,建议使用liburing与CGO进行初步集成以验证性能收益。资源管理和请求生命周期控制是主要难点,尤其在高并发场景下。

Go 如何集成 io_uring:从 CGO 封装到纯 Go 实现

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z
Postgres 17与18的基准测试

PlanetScale Postgres 18引入了io_method配置选项,显著提升了磁盘I/O控制。基准测试显示,Postgres 18在不同I/O设置下的性能优于17版本,尤其在本地NVMe驱动上。io_uring在高并发场景下表现良好,但在低并发时效果不佳。整体而言,Postgres 18带来了显著的I/O改进和灵活性。

Postgres 17与18的基准测试

PlanetScale - Blog PlanetScale - Blog · 2025-10-14T00:00:00Z
汉斯-尤尔根·肖宁:PostgreSQL 18:通过AIO提升I/O性能

PostgreSQL 18引入异步I/O(AIO),允许数据库在等待数据时进行计算,从而提升性能。AIO支持三种I/O模式,推荐使用io_uring。测试表明,AIO在大规模操作中显著降低延迟,尤其在顺序扫描时效果明显。

汉斯-尤尔根·肖宁:PostgreSQL 18:通过AIO提升I/O性能

Planet PostgreSQL Planet PostgreSQL · 2025-09-19T05:00:05Z
  • <<
  • <
  • 1 (current)
  • 2
  • >
  • >>
👤 个人中心
在公众号发送验证码完成验证
登录验证
在本设备完成一次验证即可继续使用

完成下面两步后,将自动完成登录并继续当前操作。

1 关注公众号
小红花技术领袖公众号二维码
小红花技术领袖
如果当前 App 无法识别二维码,请在微信搜索并关注该公众号
2 发送验证码
在公众号对话中发送下面 4 位验证码
友情链接: MOGE.AI 九胧科技 1tok 菜鸟教程 Remio.AI DeekSeek连连 53AI 神龙海外代理IP IPIPGO全球代理IP 东波哥的博客 匡优考试在线考试系统 开源服务指南 蓝莺IM Solo 独立开发者社区 AI酷站导航 极客Fun 我爱水煮鱼 周报生成器 He3.app 简单简历 白鲸出海 T沙龙 职友集 TechParty 蟒周刊 Best AI Music Generator 模力方舟 Gitee AI

小红花技术领袖俱乐部
小红花·文摘:汇聚分发优质内容
小红花技术领袖俱乐部
Copyright © 2021-
粤ICP备2022094092号-1
公众号 小红花技术领袖俱乐部公众号二维码
视频号 小红花技术领袖俱乐部视频号二维码