School of Computer Science and Engineering
University of New South Wales
Sydney 2052 Australia
National ICT Australia, Sydney,
Australia
Open Kernel Labs, Sydney, Australia
Universität Karlsruhe, Germany
Despite its current popularity, para-virtualization has an enormous cost. Its deviation from the platform architecture abandons many of the benefits of traditional virtualization: stable and well-defined platform interfaces, hypervisor neutrality, operating system neutrality, and upgrade neutrality—in sum, modularity. Additionally, para-virtualization has a significant engineering cost. These limitations are accepted as inevitable for significantly better performance, and for the ability to provide virtualization-like behavior on non-virtualizable hardware such as x86.
Virtualization and its modularity solve many systems problems, and when combined with the performance of para-virtualization become even more compelling. We show how to achieve both together. We still modify the guest operating system, but according to a set of design principles that avoids lock-in, which we call soft layering. Additionally, our approach is highly automated and thus reduces the implementation and maintenance burden of para-virtualization, which is especially useful for enabling obsoleted operating systems. We demonstrate soft layering on x86 and Itanium: we can load a single Linux binary on a variety of hypervisors (and thus substitute virtual machine environments and their enhancements), while achieving essentially the same performance as para-virtualization with less effort.
@inproceedings{LeVasseur_UYCCLH_08,
publisher = {IEEE Computer Society Press},
author = {Joshua LeVasseur and Volkmar Uhlig and Yaowei Yang and Matthew Chapman and Peter Chubb and Ben
Leslie and Gernot Heiser},
title = {Pre-virtualization: soft layering for virtual machines},
booktitle = {Proceedings of the 13th IEEE Asia-Pacific Computer Systems Architecture Conference},
address = {Hsinchu, Taiwan},
year = {2008},
month = {Aug},
editor = {Y-C Chung and J Morris},
pages = {1--9}
}