We Replaced mmap with io_uring in Our Rust Query Engine. It Got Slower
Summary
A production case study of replacing mmap with io_uring in Conviva's Rust query engine. The authors find that while io_uring reduces major page faults by bypassing the kernel page cache, overall performance can degrade due to minor faults, memory copying in Arrow, and IO coordination complexity. The post chronicles experiments, measured bottlenecks, and initial architectural lessons, with a plan for future improvements and a deeper follow-up post.