Software Techniques for Avoiding Hardware Virtualization Exits
On modern processors, hardware-assisted virtualization outperforms classical 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, the authors' VMM inspects guest code dynamically to detect back-to-back pairs of instructions that both exit.