A system that manages selective application of multiple virtualization techniques implemented in a virtual machine monitor to optimize execution performance of a virtualized computer, said system comprising:
- a) a virtual machine that executes on one or more processors and that encapsulates a guest operating system, wherein execution of said guest operating system is subject to incurring a predetermined set of virtualization exceptions;
- and
- b) a virtual machine monitor that executes on one or more processors and that implements first and second virtualization support subsystems that each provide for comprehensive handling of said predetermined set of virtualization exceptions, wherein said first and second virtualization support subsystems incur different virtualization overhead costs in handling said predetermined set of virtualization exceptions, said first virtualization support subsystem a binary translation-based virtualization system and said second virtualization support system a hardware-based virtualization system,
- said virtual machine monitor including a virtualization selection control enabling selection between said first and second virtualization support subsystems for use by said virtual machine monitor in handling said predetermined set of virtualization exceptions,
- said virtual machine monitor further including a performance monitor that computes the relative virtualization overhead costs incurred by said virtual machine monitor in using said first and second virtualization support subsystems for an actual set of virtualization exceptions incurred in the execution of said guest operating system over a first defined interval, said performance monitor computing relative virtualization overhead costs dependent on the actual composition of virtualization exceptions within said actual set of virtualization exceptions,
- said virtualization selection control being responsive to said performance monitor for selecting between said first and second virtualization support subsystems for handling by said virtual machine monitor said predetermined set of virtualization exceptions over a second defined interval, said virtualization selection control selecting between said first and second virtualization support subsystems determined by the relative minimum virtualization overhead cost computed for said first and second virtualization support subsystems, said virtualization selection control selecting between said first and second virtualization support subsystems further based on the absolute difference in the computed virtualization overhead costs and the virtualization overhead cost incurred by said virtual machine monitor in switching between said first and second virtualization support subsystems, said virtualization selection control selecting between
- said first virtualization support subsystem, wherein said guest operating system is executed at a deprivileged level, said virtual machine monitor is executed at a privileged level, and a binary translator unit implemented in said virtual machine monitor is employed to handle said predetermined set of virtualization exceptions, and
- said second virtualization support subsystem, wherein said guest operating system is executed at a first privileged level, said virtual machine monitor is executed at a second privileged level, and a hardware-based virtualization trap handler is employed to handle said predetermined set of virtualization exceptions.