Hacker News·5 min read·hard

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

R
rzk
We Replaced MMAP with Io_uring in Our Rust Query Engine. It Got Slower
AI Summary

Engineers at Conviva detail their experience attempting to optimize a Rust-based query engine by replacing mmap with io_uring. They discovered that the change resulted in performance degradation due to unexpected page-cache thrashing under high concurrency.

Why it matters

This provides valuable technical insight into the limitations of low-level I/O optimizations in high-performance data processing systems.

Dive DeeperCreate a free account to unlock

In the beginning, there was mmap. It was convenient: it let us lazily read huge numbers of Arrow IPC files from disk without managing memory ourselves. It fit our file format perfectly — Arrow IPC’s layout is designed for zero-copy random access, and mmap gives you exactly that.

Then we deployed to production, ran real concurrent query loads, and mmap became a real problem.

Continue reading on Headlinne

Create a free account to read the full article.

Read full article →
technologybusiness

Get smarter about the news

Sign up free for a feed built around what you actually care about, Dive Deeper research on any story, and the full text of every article.

Create free account

Already have an account? Sign in