小红花·文摘
  • 首页
  • AI Tokens🪙
  • 排行榜🏆
  • 直播
  • FAQ
Dify.AI
沉浸式翻译 immersive translate

文章梳理异步I/O的两大范式:就绪型(epoll/kqueue,对应Reactor)与完成型(io_uring/IOCP,对应Proactor),并从推进模型与栈模型两个维度分析主流语言:Rust的无栈Future与epoll契合,接入io_uring需转移缓冲区所有权;Go用有栈协程封装epoll;Zig以Fiber原生对齐io_uring;C#的async/await源于IOCP。最后给出选型建议。

异步 I/O 的两种范式:Readiness 与 Completion

刘家财的个人网站 刘家财的个人网站 · 2026-10-27T03:00:00Z

作者重跑BadgerDB仓颉移植版基准,推翻原有三条结论:并发写实际比Go慢约2.6倍而非1.3倍,原因是两侧规模相差1300倍;FFI memcmp因约70纳秒调用开销,在随机key下反比逐字节比较慢18倍;io_uring在小文件场景慢2–6倍,但大写入高并发时可快1.1–1.6倍。错误源于规模未对齐、输入分布不匹配及结论超出证据边界。

把 BadgerDB 移植到仓颉(三):重跑基准,三个结论翻了

东方星痕 东方星痕 · 2026-10-12T02:00:00Z
当你的集合超出内存容量时

Qdrant向量数据库通过量化与重打分机制应对向量集合超出内存的情况:量化在内存保留压缩副本,原始向量移至磁盘;TurboQuant通过旋转向量均匀分布误差,bits4为常用默认值;重打分读取原始向量修正压缩误差,但增加磁盘读取开销。测试表明,1比特量化配合重打分和过采样可将召回率从0.605恢复至0.951,接近float32基线。建议固定量化副本、原始向量冷存储,并启用io_uring异步读取。

当你的集合超出内存容量时

Qdrant - Vector Database Qdrant - Vector Database · 2026-08-23T21:00:00Z

本文为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
  • <<
  • <
  • 1 (current)
  • 2
  • >
  • >>
👤 个人中心
在公众号发送验证码完成验证
登录验证
在本设备完成一次验证即可继续使用

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

1 关注公众号
小红花技术领袖公众号二维码
小红花技术领袖
如果当前 App 无法识别二维码,请在微信搜索并关注该公众号
2 发送验证码
在公众号对话中发送下面 4 位验证码
小红花技术领袖俱乐部
小红花·文摘:汇聚分发优质内容
小红花技术领袖俱乐部
Copyright © 2021-
粤ICP备2022094092号-1
公众号 小红花技术领袖俱乐部公众号二维码
视频号 小红花技术领袖俱乐部视频号二维码