资讯

We Replaced MMAP with Io_uring in Our Rust Query Engine. It Got Slower

Hacker News·2026/9/11 05:26:58🔗 原文

📋总体概括

Conviva工程团队在其Rust查询引擎中尝试将MMAP替换为io_uring进行IO加速,结果性能反而下降。文章详细记录了迁移过程、测得的性能差异与原因分析:MMAP依赖内核页缓存与缺页机制,零拷贝读取在高热数据场景下极为高效;而io_uring虽减少了系统调用开销,但在查询负载下的内存拷贝、批处理复杂度和缓存失效使其得不偿失。这一案例说明新内核IO技术并非银弹,工程决策必须基于自身负载的基准测试。

关键信息

  • Conviva在其Rust查询引擎中把MMAP替换为io_uring,实测性能不升反降
  • MMAP的页缓存与零拷贝特性在其读多写少的查询负载下表现优异
  • io_uring引入了额外的内存拷贝与批处理管理开销,抵消了syscall节省
  • 文章完整公开了迁移过程与测试数据,供社区复现与讨论
  • 该案例登上Hacker News,引发9条评论讨论IO方案选型

🔥犀利点评

这是一篇难得的「打脸式」工程复盘。行业里人人都在吹io_uring是Linux IO的未来,Conviva用真实负载数据提醒大家:异步IO省下的syscall开销,可能远小于丢掉页缓存零拷贝路径的损失。数据库和查询引擎选IO方案,关键不是技术新旧,而是数据热度和访问模式——热数据常驻内存时MMAP几乎无懈可击。敢把负面结果发出来,比十个「性能提升300%」的营销文有价值得多。

本文由本站自动聚合,以下为原始来源:前往 Hacker News 阅读全文