Virtualization has recently gained popularity largely due to its promise in increasing utilization, improving availability and enhancing security. Very often, the role of computer systems needs to change as the business environment changes. Initially, the system may only need to host one operating system and seek full execution speed. Later, it may be required to add other functionalities such as allowing easy software/hardware maintenance, surviving system failures and hosting multiple operating systems. Virtualization allows these functionalities to be supported easily and effectively. However, virtualization techniques generally incur non-negligible performance penalty. Fortunately, many virtualization- enabled features such as online software/hardware maintenance and fault tolerance do not require virtualization standby all the time. Based on this observation, this paper proposes a technique, called Self-virtualization, which provides the operating system with the capability to turn on and off virtualization on demand, without disturbing running applications. This technique enables computer systems to reap most benefits from virtualization without sacrificing performance. This paper presents the design and implementation of Mercury, a working prototype based on Linux and Xen virtual machine monitor. The performance measurement shows that Mercury incurs very little overhead: about 0.2 ms on 3 GHz Xeon CPU to complete a mode switch, and negligible performance degradation compared to Linux.
Bibliographical noteFunding Information:
Regular Paper This work was supported by the National Nature Science Foundation of China under Grant Nos. 61003002 and 90818015, the Science and Technology Commission of Shanghai under Grant No. 10511500100, Fundamental Research Funds for the Central Universities in China, and Shanghai Leading Academic Discipline Project under Grant No. B114. ∗Corresponding Author ©2012 Springer Science + Business Media, LLC & Science Press, China
Copyright 2012 Elsevier B.V., All rights reserved.
- Dynamic virtualization