Paravirtualization

From Wikipedia, the free encyclopedia

Jump to: navigation, search

In computing, paravirtualization is a virtualization technique that presents a software interface to virtual machines that is similar but not identical to that of the underlying hardware.

The intent of the modified interface, is to reduce the portion of the guest's execution time spent performing "computationally expensive tasks," which refers to any operation which is 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.) Hence, 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 reduces 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 O/S distribution which is not paravirtualization aware cannot be run on top of a paravirtualized VMM.

[edit] History

Paravirtualization is a new term for an old idea. IBM's VM operating system has offered such a facility since 1972[1] (and earlier as CP-67). In the VM world, this is referred to as 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 monitor[2]. The term is also used to describe the Xen, L4, TRANGO, Wind River and XtratuM hypervisors. All these projects 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.

An example of using paravirtualization for performance, the virtual monitor can present the host operating system with an intelligent NIC with support for DMA-based sending of packets, even though the NIC on the real system lacks this capability. Sending packets is then done entirely by the virtual monitor and NIC interrupts may be processed by the monitor too. Since delivering interrupts to the host operating system is expensive, performance can improve.

[edit] References

  1. ^ "VM History and Heritage". IBM. http://www.vm.ibm.com/history/. Retrieved on 2007-10-10. 
  2. ^ A. Whitaker, M. Shaw, and S. D. Gribble, "Denali: Lightweight Virtual Machines for Distributed and Networked Applications", Univ. of Washington Technical Report 02-02-01, (2002). (Available from Denali publications, technical reports, and talks)

[edit] See also

Personal tools