Back to the Club's homepage

Nested x86 Virtualization - Muli Ben-Yehuda


Server virtualization has been widely adopted by the market, and the number of servers running virtual machines is increasing daily. As machine virtualization gains popularity, the hypervisor itself, along with its management stack, becomes a basic and required part of the system. The next natural evolution phase in the virtualization abstraction chain is to view the hypervisor as part of the user workload, and to be able to run multiple hypervisors inside virtual machines, each with its own set of nested guest virtual machines.

We present an analysis of nested virtualization in hardware platforms with only a single level of hardware virtualization support such as the x86 platform. We then present an architecture for extending a single level of memory management virtualization support to handle nested virtualization, which is critical for high performance. Building on this, we then present the first implementation of high-performance nested virtualization on Intel x86-based systems. Our implementation is part of the Linux/KVM hypervisor, can run multiple other hypervisors (e.g., VMware's) and can achieve performance that is within 5% of single-level (non-nested) virtualization.

The talk will begin by covering the basics of single-level x86 virtualization (CPU, MMU, and I/O). Some familiarity with Linux and KVM is assumed, but is not mandatory. Source code will be shown.

Joint work with Ben-Ami Yassour, Orit Wasserman, Abel Gordon, Zvi Dubitzki, Michael Factor (IBM Research -- Haifa), Mike Day, and Anthony Liguori (IBM Linux Technology Center).

Back to the Club's homepage