UPDF AI

A Tale of Two Paths: Optimizing Paravirtualized Storage I/O with eBPF

Li Wang,Shi Qiu,6 Authors,Yiming Zhang

2025 · DOI: 10.1145/3760404
ACM Transactions on Storage · 0 Citations

TLDR

ExO is presented, an extension of virtio-blk for efficient KVM/QEMU-based storage paravirtualization that preserves the original slow I/O path of virtio-blk as a fallback, and uses eBPF to introduce an in-kernel fast path that directly queries the address mapping without switching to the user-space backend processing.

Abstract

KVM is the dominant VM hypervisor on Linux, and relies on QEMU to realize the backends of the virtio family of devices such as virtio-blk. However, KVM/QEMU-based paravirtualization prolongs the guest I/O path with multiple context switches. As fast NVMe storage devices have been widely used, the software overhead becomes non-negligible. To shorten the I/O path, virtio-blk’s variations, vhost-kernel-blk and vhost-user-blk, respectively perform all guest I/O processing in kernel and user spaces. Unfortunately, they essentially forsake the collaboration between KVM and QEMU, sacrifice important QEMU features including live migration, snapshots, and flexible image format support.

This paper presents EXO, an extension of virtio-blk for efficient KVM/QEMU-based storage paravirtualization. The insight is that no matter how complex the QEMU backend’s processing is, to handle a guest I/O request, the host storage stack only needs to know the request’s guest-to-host address mapping. Therefore, we preserve the original slow I/O path of virtio-blk as a fallback, and leverage eBPF to introduce an in-kernel fast path that directly queries the address mapping without switching to the user-space backend processing. Extensive evaluation shows that EXO achieves similar or even higher performance compared to the variations (vhost-kernel-blk/vhost-user-blk) of virtio-blk, while preserving virtio-blk’s flexibility, safety, and compatibility.