Evaluating Linux storage APIs for use in QEMU/KVM

Scheduled: Friday, September 25, 2009 from 10:00 – 10:45am in Salon E


Discussing limitations of current userspace storage APIs for use in QEMU/KVM.


KVM is a Linux kernel module that exposes hardware virtualization support to userspace. QEMU is a full system simulator that runs as a user space process and emulates/virtualizes many types of machines including a standard PC. Together, KVM and QEMU enable Linux to act as a hypervisor.

As a hypervisor, I/O performance is a weak area today in Linux. Since all I/O for guests are generated from QEMU, we are largely limited by the I/O interfaces provided by the Linux kernel to userspace. The current set of storage I/O interfaces have proven to not map well to QEMU’s requirements.

This talk will cover how we are currently using the storage I/O interfaces provided by Linux. It will focus on the mechanisms to generate multiple asynchonrous, scatter/gather I/O requests to buffered and non-buffered files along with physical devices. It will also cover topics like request tagging and barriers.

The goal of the talk will be to generate discussion about proposed future interfaces (syslets, acalls, etc.) and to discuss whether current interfaces like linux-aio are at all salvagable.

Virtualization is perhaps one of the more demanding userspace I/O workloads available so it serves as a particularly good canary in evaluating future I/O interfaces.


storage, userspace, io, virtualizatoin


  • Biography

    Anthony Liguori works in IBM’s Linux Technology Center and is currently a maintainer of QEMU. Anthony also maintains the virtio-pci Linux kernel module which provides paravirtual IO support for QEMU/KVM guests. Anthony previously worked on Xen and in his free time maintains gtk-vnc.

Leave a private comment to organizers about this proposal