High-Performance DBMSs with io_uring: When and How to use it

📅 2025-12-04
📈 Citations: 0
Influential: 0
📄 PDF
🤖 AI Summary
This work investigates how modern database systems can achieve low-overhead, high-throughput I/O via the Linux io_uring interface. Focusing on two representative workloads—storage-intensive buffer management and network-intensive analytical processing—we propose and empirically validate systematic design principles for integrating io_uring into databases. Our methodology centers on three key mechanisms: persistent buffer registration, passthrough I/O, and a unified I/O–network programming model, rigorously analyzing their end-to-end performance impact. Innovatively, we co-design asynchronous batched I/O, zero-copy passthrough, and architecture-level coordination to establish a portable I/O optimization framework. We implement this approach in PostgreSQL and demonstrate a 14% throughput improvement under realistic workloads. To our knowledge, this is the first systematic study to empirically confirm that fine-grained, kernel-level I/O primitive optimizations yield substantial, measurable gains at the full-system level.

Technology Category

Application Category

📝 Abstract
We study how modern database systems can leverage the Linux io_uring interface for efficient, low-overhead I/O. io_uring is an asynchronous system call batching interface that unifies storage and network operations, addressing limitations of existing Linux I/O interfaces. However, naively replacing traditional I/O interfaces with io_uring does not necessarily yield performance benefits. To demonstrate when io_uring delivers the greatest benefits and how to use it effectively in modern database systems, we evaluate it in two use cases: Integrating io_uring into a storage-bound buffer manager and using it for high-throughput data shuffling in network-bound analytical workloads. We further analyze how advanced io_uring features, such as registered buffers and passthrough I/O, affect end-to-end performance. Our study shows when low-level optimizations translate into tangible system-wide gains and how architectural choices influence these benefits. Building on these insights, we derive practical guidelines for designing I/O-intensive systems using io_uring and validate their effectiveness in a case study of PostgreSQL's recent io_uring integration, where applying our guidelines yields a performance improvement of 14%.
Problem

Research questions and friction points this paper is trying to address.

Evaluating io_uring for efficient database I/O operations
Determining when io_uring benefits storage and network workloads
Providing guidelines for integrating io_uring in DBMSs
Innovation

Methods, ideas, or system contributions that make the work stand out.

Leveraging io_uring for asynchronous I/O batching
Evaluating io_uring in storage and network workloads
Applying guidelines for performance gains in PostgreSQL
🔎 Similar Papers
No similar papers found.