ESA/390 interpretive-execution architecture, foundation for VM/ESA
IBM Systems Journal
Xen and the art of virtualization
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
A comparison of software and hardware techniques for x86 virtualization
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
Analysis of the Intel Pentium's ability to support a secure virtual machine monitor
SSYM'00 Proceedings of the 9th conference on USENIX Security Symposium - Volume 9
Accelerating two-dimensional page walks for virtualized systems
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
GPU virtualization on VMware's hosted I/O architecture
ACM SIGOPS Operating Systems Review
The evolution of an x86 virtual machine monitor
ACM SIGOPS Operating Systems Review
The turtles project: design and implementation of nested virtualization
OSDI'10 Proceedings of the 9th USENIX conference on Operating systems design and implementation
ELI: bare-metal performance for I/O virtualization
ASPLOS XVII Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems
Efficient virtualization on embedded power architecture® platforms
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
Streaming as a hypervisor service
Proceedings of the 7th international workshop on Virtualization technologies in distributed computing
SPIDER: stealthy binary program instrumentation and debugging via hardware virtualization
Proceedings of the 29th Annual Computer Security Applications Conference
Speeding up packet I/O in virtual machines
ANCS '13 Proceedings of the ninth ACM/IEEE symposium on Architectures for networking and communications systems
KVM/ARM: the design and implementation of the linux ARM hypervisor
Proceedings of the 19th international conference on Architectural support for programming languages and operating systems
VSwapper: a memory swapper for virtualized environments
Proceedings of the 19th international conference on Architectural support for programming languages and operating systems
Delegating OpenGL commands to host for hardware support in virtualized environments
Proceedings of the 8th International Conference on Ubiquitous Information Management and Communication
Virtual asymmetric multiprocessor for interactive performance of consolidated desktops
Proceedings of the 10th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
ClickOS and the art of network function virtualization
NSDI'14 Proceedings of the 11th USENIX Conference on Networked Systems Design and Implementation
Hi-index | 0.00 |
On modern processors, hardware-assisted virtualization outperforms binary translation for most workloads. But hardware virtualization has a potential problem: virtualization exits are expensive. While hardware virtualization executes guest instructions at native speed, guest/VMM transitions can sap performance. Hardware designers attacked this problem both by reducing guest/VMM transition costs and by adding architectural extensions such as nested paging support to avoid exits. This paper proposes complementary software techniques for reducing the exit frequency. In the simplest form, our VMM inspects guest code dynamically to detect back-to-back pairs of instructions that both exit. By handling a pair of instructions when the first one exits, we save 50% of the transition costs. Then, we generalize from pairs to clusters of instructions that may include loops and other control flow. We use a binary translator to generate, and cache, custom translations for handling exits. The analysis cost is paid once, when the translation is generated, but amortized over all future executions. Our techniques have been fully implemented and validated in recent versions of VMware products. We show that clusters consistently reduce the number of exits for all examined workloads. When execution is dominated by exit costs, this translates into measurable runtime improvements. Most importantly, clusters enable substantial gains for nested virtual machines, delivering speedups as high as 1.52×. Intuitively, this result stems from the fact that transitions between the inner guest and VMM are extremely costly, as they are implemented in software by the outer VMM.