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!
--
fedora-list mailing list
fedora-list@xxxxxxxxxx
To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list
Guidelines: http://fedoraproject.org/wiki/Communicate/MailingListGuidelines