After reading this article and this article about current controversy between VMware and Xen on how to implement virtualization in the Linux kernel, I believe it’s meaningful to quote the original VMware proposal:
Unlike the full-virtualization techniques used in the traditional VMware products, paravirtualization is a technique where the operating system is modified to enlighten the hypervisor with timely knowledge about the operating system’s activities. Since the hypervisor now depends on the kernel to tell it about common idioms etc, it does not need to write protect OS objects such as page and descriptor tables as a solution based on full-virtualization needs.
This has two important effects (a) it shortens the critical path, since faulting is expensive on modern processors (b) by eliminating complex heuristics the hypervisor is simplified. While the former delivers performance, the latter is quite important too.
Not surprisingly, paravirtualization’s strength, ie that it encourages tighter communication between the kernel and the hypervisor, is also its
weakness. Unless the changes to the operating system are moderated, you can very quickly find yourself with a kernel that (a) looks and feels like a brand new kernel or (b) cannot run on native machines or on newer versions of the hypervisor without a full recompile. The former can impede innovation in the Linux kernel, and the latter can be a problem for software vendors.
VMware proposes VMI as a paravirtualization interface for Linux that
solves these problems.
- A VMI’fied Linux kernel runs unmodified on native hardware, and on many hypervisors, while simultaneously delivering on the performance promise of paravirtualization.
- VMI has a rich and low level interface, which allows the kernel to cope with future hardware evolution by querying for hardware capability. It is our expectation that a single kernel will run unmodified on both today’s processors with limited hardware virtualization support and also keep up with any evolution on the processor front.
- VMI Linux is a fairly clean interface, with distinct name spaces for objects from the kernel and the hypervisor. Nowhere do we mingle names from the hypervisor with that of the kernel. This separation allows innovation in the kernel to proceed at the same speed as always. For most kernel developers, a VMI kernel looks and feels like a regular Linux kernel.
- VMI Linux still supports “native” hypervisor device drivers, for example a hypervisor vendor’s own private network or block device drivers which are free to use any interface desired to communicate with the hypervisor.
Be sure to read the whole ongoing thread for having a complete picture of VMware and Xen positions.
If you are interested you can find the draft VMI documentation inside the thread here.