An Introduction to Virtualization
by Liz van Dijk on October 28, 2008 2:00 AM EST- Posted in
- IT Computing
Hypervisors - the How and Why
We'll start at what is easily the most publicized - and at the same time least commonly understood - technology of them all: hypervisor-based virtualization. Technologies that fall into this category can be divided into two basic types: "bare metal" hypervisors (which are situated between the hardware and the OS layer) and the "software" hypervisors that act as a standalone application.
Our Hardware Virtualization article discusses the bare metal hypervisors in-depth, but essentially both kinds perform the same basic functions. A bare metal hypervisor passes instructions on to the actual hardware, while a software hypervisor passes them on to the host OS. It should be obvious which of the two provides us with the least overhead for the guest OS, but both technologies have very distinct uses.
Bare metal hypervisors are at this point the ultimate solution for running multiple virtual machines while retaining the highest level of isolation and flexibility possible. They minimize overhead by cutting out the middleman (a bulky pre-installed OS) and act as a kind of miniature OS themselves, right on top of the hardware. There are currently three main techniques applied in hypervisor technology.
One is based on Binary Translation, a technique used by VMware to fully translate every single call a virtual machine (VM) makes into one that is safe and non-intrusive on other VM's using the hardware. This requires the hypervisor to do the bulk of the work, but allows any OS to run next to any other OS in an unaltered state.
A second solution for virtualization comes straight out of Intel's and AMD's research labs, and is something we refer to as Hardware Virtualization. While Binary Translation (BT) is able to run quite well on a "conventional" hardware system, as virtualization spread throughout the IT landscape it was felt necessary to adapt hardware systems to better accommodate this rather drastic change in system layout. Both Intel and AMD have made changes to their products (Intel VT-x and AMD-V might ring a bell) to allow for a system that is able to run multiple VMs more naturally. It is not possible to use both hardware virtualization and BT at the same time, but there is another technology that allows improvements for both.
This technology is known as paravirtualization, and it relies on an OS that is altered to be "aware" of its virtualized state. These slightly changed VMs reduce the amount of work a hypervisor needs to do, by simply firing off only "safe" calls, so no translation is necessary. The fact that this form of virtualization requires actual changes to be made to the source code of an OS used to greatly limit its use, but since Microsoft has picked it up (and made it possible to use with Windows Server 2008), it has been getting a lot more attention. The technology can be used in conjunction with either BT or HW virtualization, but is also able to stand on its own, without the use of either.
Again, more in-depth explanations of each of the above technologies can be found in our Hardware Virtualization article.
Examples of popular bare metal hypervisors are VMware's ESX, Microsoft's Hyper-V and various Xen-based products implemented by several companies (among others, Novell and Citrix). Software like VirtualBox, Microsoft VirtualPC and VMware Server and Workstation can be classified as software hypervisors.
14 Comments
View All Comments
Ralphik - Wednesday, October 29, 2008 - link
Hello everybody,I have installed a virtual Win98 on my computer, which is running WinXP. The problem I have is that there are no GeForce7 and higher drivers available for such old Windows platforms - has anyone got a tip or a cracked driver that I could use? It now has a completely useless S3 Virge driver installed . . .
Jovec - Friday, October 31, 2008 - link
Unless I'm missing something (new), your Win98 running in your VM will not see your GeForce video card, or indeed any of the actual hardware in your computer. It just sees the virtual hardware provided by your VM software - typically an emulated basic VGA video adapter and AC'97 sound. VM software emulates an emulates an entire virtual computer on your host PC, but does not use the physical hardware natively.In short, you are not going to get Geforce level graphics power in your Win98 VM.
stmok - Wednesday, October 29, 2008 - link
"Could it be that these two pieces of software are using related techniques for their 3D acceleration? Stay tuned, as we will definitely be looking into this in further research!"=> Parallels took Wine's 3D acceleration component. More specifically, they took the translator that allowed one to translate OpenGL calls to DirectX and vice versa.
There was a minor issue about this when Parallels are not compliant with the open source license of Wine. But that was settled when Parallels complied with the LGPL two weeks later.
=> http://parallelsvirtualization.blogspot.com/2007/0...">http://parallelsvirtualization.blogspot...2007/07/...
=> http://en.wikipedia.org/wiki/Parallels_Desktop_for...">http://en.wikipedia.org/wiki/Parallels_Desktop_for...
What annoys me, is that they never bothered with adding 3D Acceleration support in the Linux version of Parallels. The only option is the very current release of VMware Workstation. (Version 6.5 has technology implemented from their VMware Fusion product).
duploxxx - Tuesday, October 28, 2008 - link
btw is this a teaser for the long announced virtualization performance review?Vidmo - Tuesday, October 28, 2008 - link
I was hoping this article would get into some of the latest hardware technologies designed for better virtualization. It's still quite confusing trying to determine which hardware platforms and CPUs support VT-d for example.The article is a nice software overview, but seems incomplete without getting into the hardware side of the issues.
solusstultus - Tuesday, October 28, 2008 - link
Hardware support for VT is not used by most/any? commercial hypervisors (VMware doesn't use it) and has been shown to actually have lower performance in many cases than binary translation:http://www.vmware.com/pdf/asplos235_adams.pdf">http://www.vmware.com/pdf/asplos235_adams.pdf
duploxxx - Tuesday, October 28, 2008 - link
unfortunately your link is 2 years old.Current statement for Vmware ESX is that you should use the hardware virtualization layer when you have 64bit OS at any time and when virtualization layer 2 aka NPT from amd (ept when intel launches nehalem next year) at any time.
solusstultus - Wednesday, October 29, 2008 - link
While I don't claim to be an expert, that's the most recent study that I have seen that actually lists performance results from both techniques.If you have seen more recent results, do you have a link? I would be interested in reading it.
From what I have seen, NPT addresses overheads associated with switching from the Guest to the VMM during page table updates (which can occur frequently when using small pages). However, the other main source of overhead cited in the paper that I referenced were traps into the VMMs on system calls which could be replaced by less expensive direct links to VMM routines in translated code. So unless the newer hardware support virtualization implementations address this (they might, I haven't looked at the documentation), it seems translation could still be potentially faster for some apps, and that an ideal implementation would make use of both in different situations.
Vidmo - Tuesday, October 28, 2008 - link
Ahh I somehow missed the link to your hardware article.http://it.anandtech.com/IT/showdoc.aspx?i=3263&...">http://it.anandtech.com/IT/showdoc.aspx?i=3263&...
Very well done. Would it be possible to update that article to reflect VT-d and possibly TV-i technologies as well?
LizVD - Tuesday, October 28, 2008 - link
Thanks for the input!The real purpose of this article was to provide a "beginner-safe" intro into the things we have been discussing on Anandtech IT for the past couple of months, so in-depth discussion of each of the technologies is something we avoided on purpose, to keep focus on the basic differences without getting carried away.
Your question is an interesting one, however, and of the sort we'd like to properly address in our blogs, so keep an eye on them, as we'll be looking into it.