Virtualization Goes Mainstream
InformationWeek is reporting that, during the same week that Microsoft announced the free price for Virtual PC, VMWare 1.0 was released for free as well. Though there were already many free options for virtualization available, these major products signal a shift in the industry. From the article: "There are many ramifications here. Obviously, the slew of products means network managers can now adopt virtual servers into their overall strategies and don't have acquisition costs providing a justification to avoid it. Other than the very-high-end VMware ESX and the midline Microsoft Virtual Server on mainstream XP platforms, virtualization is essentially free wherever you might want to use it."
Agreed, MacOS is severely lacking in the virtualization department. As a long time user of VMWare, I can say that Parallels doesn't stack up in comparison. Lack of multiple snapshots and, well, a general lack of the snappiness I've come to expect from VMWare on Linux or Windows is missing. VMWare's lack of product for MacOS X is especially disappointing to me as a new Intel iMac owner.
In other news, I've thought that VMWare and Apple were really missing a great opportunity with respect to virtualization. Apple wants to limit the hardware that MacOS X will run in to Apple blessed hardware. This is for two reasons: 1. They want to drive sales of Mac hardware. 2. It's a pain to support lots of models of PC.
If Apple and VMWare were to partner to release a free MacOS X virtual machine, it would allow Apple to get OS X into the hands of more prospective customers. (I haven't met a person who has *used* OS X for any length of time and not loved it.) Such an arrangment would also be good publicity for VMWare. VMWare already has a product that allows for some lockdown of virtual machines (VMWare ACE). Such an arrangement wouldn't violate Apple's goals with MacOS X (limited hardware support overhead, and MacOS X would be much more desireable on native hardware for OpenGL and whatnot). Such a move would certainly drive sales. All of a sudden millions of Windows users potentially get sucked up into Apple's product upgrade cycle: VMWare --> Mac hardware.
I wrote about this on my blog (blog.thoughtspot.net) a while back, but Dreamhost appears to be taking a dirt nap at the moment.
-Peter
. Penguins Surely Ca
The recently released VMware Virtual Infrastructure 3 (which is basically ESX 3.0 + VirtualCenter 2.0 + some add-ons) can do this using a technique called Distributed Resource Scheduling (DRS). This is basically a global scheduler running on your VirtualCenter server that works in coordination with the local schedulers in each ESX server part of the same ESX cluster.
When you hit a user-defined treshold for either memory or CPU on a VM, then DRS will trigger a VMotion of that particular VM to another ESX in the cluster without user intervention, effectively running the VM where it can run the best, based on the SLA you defined when you created it.
The cool thing about this is that you can now have a predictable cluster utilization level, regardless of where the VMs are running.
[Disclaimer: I work for VMware]
OK. So Microsoft makes Virtual PC free. Suddenly everyone starts using virtualization software and (besides the licensing fees Microsoft will get for each copy of its OS that is virtualized) it's free and wonderful and everyone is happy that they can run all of their Operating Systems on one PC with much less hassle than before. Virtualization takes off, new uses are discovered for it, and it changes the way networks can be used. Hooray!
But eventually Microsoft stops maintaining Virtual PC (and discontinues support for it on any future operating systems) and decides to release Microsoft's new "Virtual Console" software that costs mucho bucks. Suddenly everyone that relies on Virtualization realizes that they'll either have to switch to some other virtualization software, change their software systems entirely, or simply bite the bullet and spend the money to upgrade to the new program.
This probably isn't news to anyone. In fact, it's the way things have been done since the first closed-source software program was created and sold. But I think that this is a perfect example of where Open Source software could really fit the bill and cause a paradigm shift to a better world where people aren't locked into one provider or another. If the OSS community could pull together and release a killer Virtualization app that's free as in speech perhaps people would start to see *why* software needs to be free, and perhaps they would realize it goes deeper than simply price.
I'm not trying to spread Microsoft FUD or spread the OSS gospel... but I think in scenarios like this an OSS alternative would be a no-brainer. Are there any OSS virtualization software suites in development right now (besides Wine)?
I like my women how I like my sugar.. granulated.
Virtualization overhead is not deterministic due to the nature of the code execution algorithm on the x86 CPUs. From the VMware perspective (which is what I know), you have two kinds of virtualization mechanisms: 1) Hosted on top of Linux or Windows, and 2) Bare metal, on top of a thin hypervisor like ESX.
In the hosted world, the host OS is providing memory management and scheduling, as well as access to its device drivers. In the bare metal architecture, the hypervisor itself provides those functions, making it way more efficient. Recently, a customer was telling me he was running 6 VMs using GSX (now VMware Server) on a 2-way dual-core Opteron box. He installed ESX and he was then running 20 VMs on the same machine. That gives you an idea of the difference on these two approaches from the performance perspective.
The other reason why your performance may vary, is because you have CPU, memory and I/O overhead also. In the CPU realm, the vmkernel is running on ring 0, and the guest OS is relegated to ring 1 in the x86 CPU. The problem is that not all assembly instructions can be executed successfully in ring 1, so VMware's Binary Translator module will actually detect those patterns of "dirty" assembly instructions and will insert traps so every time you hit one of those, it gets executed by the vmkernel on behalf of that VM. So, the more traps you need to do, the more CPU overhead you get.
Additionally to the CPU overhead, you have memory mapping overhead (i.e. no real DMA), I/O subsystem overhead, etc.
Numbers can vary a lot. In general, large companies consider an average of 15% of virtualization tax, which is realistic when you want to run a large number of VMs in multiple systems. In any case, the best approach is to always test your workload before you put it in a sensitive environment.
[Disclaimer: I work for VMware]