Qemu vs VMWare

Phil Meyer pmeyer at themeyerfarm.com
Mon Oct 26 16:37:17 UTC 2009


On 10/25/2009 03:05 PM, Marko Vojinovic wrote:
> Hi everyone! :-)
>
> I wish to share my first hands-on experience with qemu, compare it to vmware
> player, and (since I'm highly disappointed with the performance difference) ask
> is there anything that can be done configuration-wise to improve the user
> experience under qemu.
>
> Basically, my motivation to try out qemu in the first place is the not-so-great
> support from vmware when it comes to kernel modules, updating Fedora etc. The
> idea is to make all these issues go away by going with the open source
> solution for virtualization. Naively, I expected more or less equivalent
> performance and/or set of features. But qemu turned out to be a very big
> disappointment:
>
> (1) Windows XP guest under qemu appears to be an order-of-magnitude slower
> than equivalent vmware guest. I haven't measured precisely, but by counting
> the seconds for the same operation (open a window or such), qemu appears to be
> roughly 10 times slower! Why is it *that* bad?
>    

There are several methods for accelerating a Virtual Machine.  One of 
those methods uses the relatively new CPU based 'switch' that allows the 
CPU itself to govern, or separate, certain things.

However, that is not the only way.  Virtual Machines have a long and 
storied history, and much of what we see today originated on systems 
like the Cray super computer.  The problem is that we now want 
Virtualization to be a commodity, it needs to be cheap, and it needs to 
run on hardware that is not designed for it.

VmWare uses a proprietary kernel module to do the hardware emulation.

VirtualBox from SUN uses a proprietary kernel module to do the hardware 
emulation.  Although SUN has a 'free' version, SUN's licensing prohibits 
it from being distributed freely.

Xen uses a special version of the Linux kernel to create a Domain 0 that 
is most similar to what used to be done on the Cray and other super 
computers.  There are several good references online to detail the 
differences in Hypervisors, but here I am just hitting a few points.

The deal that Novel did with MicroSoft caused Xen to lose a lot of 
developers, and it almost fell completely off the IT radar.  If not for 
a lot of legacy installations, it is my opinion that Xen would have 
disappeared all together.

There are other types of virtualization that don't need a hypervisor at 
all.  One of these types is called a container type VM.  OpenVZ is 
really a very good implementation of a container type VM.

Now, we have to consider and separate hardware emulation, the 
hypervisor, and the bare iron.

Qemu is a set of tools that can provide various levels of hardware 
emulation.  By itself, it can emulate a complete low end PC.

KVM is a kernel module written by the Linux kernel development team that 
uses the new VM 'switch' on modern intel and AMD CPUs to accellerate 
hardware emulation on real hardware.  To over simplify, you can think of 
KVM as allowing the kernel to 'cut off' a CPU and chunk of memory for a 
VM to use natively.

Qemu can be built to take advantage of the hardware support provided by 
the KVM kernel modules.  That version of Fedora is called: qemu-kvm.

Xen also uses qemu for its hardware emulation, but not the KVM parts.  
That may change as Xen is finding its way back into the mainstream kernel.

Performance wise, its a toss up between these guys based upon several 
factors, especially application.

However, qemu alone with no hardware support is definitely on the bottom 
of the performance pile.

Qemu with KVM support is almost always on the high end of the 
performance pile for general CPU/Memory based applications.

Other things to consider:  Xen and VirtualBox can 'expose' a real PCI 
card to the VM.  KVM is working on this feature actively, but its not 
there yet.

File system type and disk emulation can also vary widely.  Using a file 
as emulated disk in writeback mode vs writethough mode can be order of 
magnitude different in performance depending upon your specific hardware.

So consider your application, and choose wisely.

Recommendations:

Windows for development: KVM
Windows for Graphics: VirtualBox with openGL passthrough to VM.
Windows for general purpose: VmWare for more driver support.

Linux for development: KVM
Linux for production ISP: KVM

Today -- Linux general purpose production systems: Xen
Tomorrow -- Linux General purpose: KVM

RHEL 6 will be all about KVM.

Good Luck!




More information about the fedora-list mailing list