KVM Forum 2025

Making io_uring pervasive in QEMU
2025-09-04 , Room 2

In 2019 Linux introduced io_uring as an asynchronous I/O interface that minimizes system call overhead. Since then io_uring has expanded beyond file I/O to become a general-purpose asynchronous system call interface. This presentation discusses recent changes and the next steps for QEMU's io_uring support.

As more Linux kernel features are exposed through io_uring, QEMU components will increasingly need to call it. This led to the development of the new QEMU aio_add_sqe() API that allows custom io_uring operations to be submitted and integrates with QEMU's event loop.

Making io_uring accessible in the event loop also led to enabling io_uring-based file descriptor monitoring in QEMU's event loop. Instead of using ppoll(2) or epoll(7) to wait for events, io_uring can drive the whole event loop.

Come find out about the challenges and performance of these changes, as well as use cases for io_uring in QEMU. This talk is for developers interested in using io_uring themselves in QEMU as well as anyone learning more generally about how applications can take advantage io_uring.