High Performance NVMe Virtualization with SPDK and vfio-user

Library Content Type:
Publish Date: 
Wednesday, September 29, 2021
Event Name: 
Event Track:

Presenting paravirtualized devices to virtual machines has historically required specialized drivers to be present in the guest operating system. The most popular example is virtio-blk or virtio-scsi. These devices can be constructed using either the host system operating system (KVM, for example, can emulate virtio-blk and virtio-scsi devices for use by the guest) or by a separate user-space process (the vhost-user protocol can connect to these targets, typically provided by SPDK). However, only Linux currently ships with virtio-blk and virtio-scsi drivers built-in. The BIOS does not typically have drivers available, making it impossible to boot from these devices, and operating systems like Windows need to have drivers installed separately. In this talk, we'll cover a new, standardized protocol for virtual machines to use to communicate with other processes that can be used to emulate any PCI device called vfio-user. This protocol will be supported by QEMU in an upcoming release. We'll then over how SPDK has used this new protocol to present paravirtualized NVMe devices to guests, allowing the guest BIOS and guest OS to load their existing NVMe drivers without modification to use these disks. We'll then close with some benchmarks demonstrating the extremely low overhead of this virtualization.

  • Understand the future approach to paravirtualized devices
  • Understand the overhead of paravirtualization
  • Note opportunities for leveraging this technology in other places

Watch video: