VMWare takes advantage of a seldom used but immensely impressive technology, virtualization. Virtual machines set up a sandbox that to the guest operating system seems like a perfectly normal piece of hardware. Normally, abstracting a second system from the host OS takes a fair amount of horsepower. Hardware vendors have met this challenge by supporting, essentially, multiple computing environments on the same chip. The host OS can switch contexts from one to the other, allowing the virtual machine direct access to features that would normally have to be emulated or simulated. To demonstrate this, here’s a brief video showing the difference in startup speed between the two technologies:
As demonstrated in the video, there is a drastic improvement of boot time. Boot time dropped 294 seconds, to 26 seconds, a 1130% performance increase!
Given that boot times are largely dependent on I/O speed, we’ll next demonstrate how CPU-centric operations are impacted by virtualization, which should give us an idea of how real-world applications would be impacted.
The following benchmark is based on Dhrystone 2.1 test suite. The test system was an Intel Core i7, quadcore 2.8ghz machine running VMWare 4.0.4 under Windows 7. Five billion iterations were run per target. The “HW Virtualization” column had the Preferred Virtualization engine in VMWare set to “Automatic”, whereas the “No Virtualization” column had the Preferred Virtualization engine set to “Binary translation”, with acceleration turned off.
This correlates almost perfectly with the difference in boot speed, approximately one order of magnitude, or 10x. I’d like to note however, this isn’t precisely fair, given that binary translation may be accelerated even on machines without explicit virtualization acceleration. Though it does go to demonstrate just how powerful the technology can be.
How To: Enable Virtualization
While not a new technology, virtualization does not exist on all hardware. If you have a desktop PC made in the last 7 years, chances are your CPU has it. However, if you’re developing on a laptop, you’ll have to refer to your chip maker’s user manual, or have a look online for whether your CPU supports the technology. It is likely you will have to turn virtualization on in your motherboard’s BIOS. Refer to your motherboard’s manual for instructions on how to do this.
Once you’ve enabled virtualization on your motherboard, check your Virtual Machine Settings in VMWare, and under the Processors section, confirm that the Virtualization Engine is set to Automatic, and “Disable acceleration for binary translation” is unchecked, as seen here.