This article needs additional citations for verification. (July 2013) (Learn how and when to remove this template message)
In computing, paravirtualization is a virtualization technique that presents to virtual machines a software interface, which is similar yet not identical to the underlying hardware-software interface.
The intent of the modified interface is to reduce the portion of the guest's execution time spent performing operations which are substantially more difficult to run in a virtual environment compared to a non-virtualized environment. The paravirtualization provides specially defined 'hooks' to allow the guest(s) and host to request and acknowledge these tasks, which would otherwise be executed in the virtual domain (where execution performance is worse). A successful paravirtualized platform may allow the virtual machine monitor (VMM) to be simpler (by relocating execution of critical tasks from the virtual domain to the host domain), and/or reduce the overall performance degradation of machine-execution inside the virtual-guest.
Paravirtualization requires the guest operating system to be explicitly ported for the para-API — a conventional OS distribution that is not paravirtualization-aware cannot be run on top of a paravirtualizing VMM. However, even in cases where the operating system cannot be modified, components may be available that enable many of the significant performance advantages of paravirtualization. For example, the Xen Windows GPLPV project provides a kit of paravirtualization-aware device drivers, licensed under the terms of the GPL, that are intended to be installed into a Microsoft Windows virtual-guest running on the Xen hypervisor.
Paravirtualization is a new term for an old idea. IBM's VM operating system has offered such a facility since 1972 (and earlier as CP-67). In the VM world, this is designated a "DIAGNOSE code", because it uses an instruction code used normally only by hardware maintenance software and thus undefined.
The Parallels Workstation operating system calls its equivalent a "hypercall". All are the same thing: a system call to the hypervisor below. Such calls require support in the "guest" operating system, which has to have hypervisor-specific code to make such calls.
The term "paravirtualization" was first used in the research literature in association with the Denali Virtual Machine Manager. The term is also used to describe the Xen, L4, TRANGO, VMware, Wind River and XtratuM hypervisors. All these projects use or can use paravirtualization techniques to support high performance virtual machines on x86 hardware by implementing a virtual machine that does not implement the hard-to-virtualize parts of the actual x86 instruction set.
A hypervisor provides the virtualization of the underlying computer system. In full virtualization, a guest operating system runs unmodified on a hypervisor. However, improved performance and efficiency is achieved by having the guest operating system communicate with the hypervisor. By allowing the guest operating system to indicate its intent to the hypervisor, each can cooperate to obtain better performance when running in a virtual machine. This type of communication is referred to as paravirtualization.
In 2005, VMware proposed a paravirtualization interface, the Virtual Machine Interface (VMI), as a communication mechanism between the guest operating system and the hypervisor. This interface enabled transparent paravirtualization in which a single binary version of the operating system can run either on native hardware or on a hypervisor in paravirtualized mode. As AMD and Intel CPUs added support for more efficient hardware-assisted virtualization, the standard became obsoleted and VMI support was removed from Linux kernel in 2.6.37 and from VMware products in 2011.
Linux paravirtualization support
At the USENIX conference in 2006 in Boston, Massachusetts, a number of Linux development vendors (including IBM, VMware, Xen, and Red Hat) collaborated on an alternative form of paravirtualization, initially developed by the Xen group, called "paravirt-ops". The paravirt-ops code (often shortened to pv-ops) was included in the mainline Linux kernel as of the 2.6.23 version, and provides a hypervisor-agnostic interface between the hypervisor and guest kernels. Distribution support for pv-ops guest kernels appeared starting with Ubuntu 7.04 and RedHat 9. Xen hypervisors based on any 2.6.24 or later kernel support pv-ops guests, as does VMware's Workstation product beginning with version 6. VirtualBox also supports it from version 5.0.
- Operating system-level virtualization
- Logical Domains (LDOM)
- Logical partition (LPAR)
- "Installing signed GPLPV drivers in Windows Xen instances". Univention Wiki. Retrieved 2013-04-10.
The GPLPV driver is a driver for Microsoft Windows, which enables Windows DomU systems virtualised in Xen to access the network and block drivers of the Xen Dom0. This provides a significant performance and reliability gain over the standard devices emulated by Xen/Qemu/Kvm.
- "VM History and Heritage". IBM. Retrieved 2007-10-10.
- A. Whitaker; M. Shaw; S. D. Gribble (2002). ""Denali: Lightweight Virtual Machines for Distributed and Networked Applications"". University of Washington Technical Report.
- Strobl, Marius (2013). Virtualization for Reliable Embedded Systems. Munich: GRIN Publishing GmbH. p. 54,63. ISBN 978-3-656-49071-5.
- "kernel/git/torvalds/linux.git - Linux kernel source tree". Git.kernel.org. Retrieved 2017-03-03.
- "Update: Support for guest OS paravirtualization using VMware VMI to be retired from new products in 2010-2011 - Guest OS Install Guide - VMware Blogs". Blogs.vmware.com. 2009-09-22. Retrieved 2017-03-03.
- "XenParavirtOps - Xen". Wiki.xenproject.org. Retrieved 2017-03-03.
- "VMware Introduces Support for Cross-Platform Paravirtualization - VMware". VMware. 16 May 2008. Archived from the original on 13 April 2011.
- Anandtech - Hardware Virtualization: the Nuts and Bolts Technical article on paravirtualization