Enabling Efficient Hypervisor-as-a-Service Clouds with Ephemeral Virtualization

, , , , , and
The 12th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE'16)
Atlanta, GA,
Abstract. When considering a hypervisor, cloud providers must balance conflicting requirements for simple, secure code bases with more complex, feature-filled offerings. This paper introduces Dichotomy, a new two-layer cloud architecture in which the roles of the hypervisor are split. The cloud provider runs a lean hyperplexor that has the sole task of multiplexing hardware and running more substantial hypervisors (called featurevisors) that implement features. Cloud users choose featurevisors from a selection of lightlymodified hypervisors potentially offered by third-parties in an “as-a-service” model for each VM. Rather than running the featurevisor directly on the hyperplexor using nested virtualization, Dichotomy uses a new virtualization technique called ephemeral virtualization which efficiently (and repeatedly) transfers control of a VM between the hyperplexor and featurevisor using memory mapping techniques. Nesting overhead is only incurred when the VM is accessed by the featurevisor. We have implemented Dichotomy in KVM/QEMU and demonstrate average switching times of 80 ms, two to three orders of magnitude faster than live VM migration. We show that, for the featurevisor applications we evaluated, VMs hosted in Dichotomy deliver up to 12% better performance than those hosted on nested hypervisors, and continue to show benefit even when the featurevisor applications run as often as every 2.5 seconds
Keywords. Nested Virtualization, Hypervisors, Cloud
author = {Dan and Williams and Yaohui and Hu and Umesh and Deshpande and Piush K and Sinha and Nilton and Bila and Kartik and Gopalan and Hani and Jamjoom},
title = {{Enabling Efficient Hypervisor-as-a-Service Clouds with Ephemeral Virtualization}},
booktitle = {The 12th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution
Environments (VEE'16)},
address = {Atlanta, GA},
month = {April},
year = {2016}