paper

kvm: the Linux Virtual Machine Monitor

  • Authors:

📜 Abstract

Virtualization is a hot topic in operating systems these days. It is useful in many scenarios: server consolidation, virtual test environments, and for Linux enthusiasts who still can not decide which distribution is best. Recently, hardware vendors of commodity x86 processors have added virtualization extensions to the instruction set that can be utilized to write relatively simple virtual machine monitors. The Kernel-based Virtual Machine, or kvm, is a new Linux subsystem which leverages these virtualization extensions to add a virtual machine monitor (or hypervisor) capability to Linux. Using kvm, one can create and run multiple virtual machines. These virtual machines appear as normal Linux processes and integrate seamlessly with the rest of the system.

✨ Summary

Summary

The paper presents KVM as a Linux-integrated virtual machine monitor that uses Intel VT or AMD-V hardware virtualization extensions. It describes the /dev/kvm ioctl interface, the triply nested user/kernel/guest execution model, architecture-specific support for Intel and AMD virtualization, shadow page-table management, userspace I/O emulation through QEMU, interrupt injection, framebuffer handling, and dirty-page tracking for live migration. The authors emphasize that integrating virtualization into Linux enables reuse of Linux process management, scheduling, memory management, NUMA, and timer facilities. At the time of publication, SMP guests, paravirtualized devices, deeper memory-management integration, scheduler awareness, newer virtualization hardware, and additional architectures remained future work. (kernel.org)

Influence

The paper is an early architectural description of KVM and is subsequently cited by virtualization and systems research, including work on virtualized I/O and hybrid runtime systems. (usenix.org) The Linux kernel’s current KVM documentation preserves the paper’s central interface model: userspace opens /dev/kvm and controls virtual machines and vCPUs through file descriptors and ioctls, while the API has expanded across multiple architectures and device models. (kernel.org) The paper therefore contributed to the technical foundation and terminology for the KVM architecture that continues to be developed in the Linux kernel.