2009/6/13 Ray Arachelian <ray at arachelian.com>:
Liam Proven wrote:
My guess would be that this is a little
protective colouring of the truth.
A VMware guest only delivers about 80% of the performance of the raw
hardware, because all the kernel code - all the core OS itself, all
device drivers etc. - are running in a software emulator. And on a PC,
this is a lot more critical than on a mainframe, because PC software
is far more CPU (and graphics) intensive.
Run a VM under a VM, this would be even slower - you'd only get about
64% of the performance and my guess is that if it worked at all,
VMware feel it would make their product look bad.
There is VMWare ESXi which is also freely available for download, that
runs on the raw hardware.
It does, but it's something of a con. It's not a bare-metal
hypervisor, it's a very-cut-down copy of Linux with some proprietary
VMware kernel modules that do the virtualising. There is an ongoing
argument with WMware that this means they're linking to GPL code and
must release the source to the actual hypervisor, which of course they
won't do. The company adamantly maintains that Linux is used as
nothing more than a bootstap loader, like MS-DOS was for Netware 3,
but they can't prove it without publishing code and they won't do
that.
So while there'll still be some overhead, you
remove most of the
overhead of the host OS - but of course you're replacing the host OS
with a lighter weight one that's designed just for running guest OSs.
That's not a very significant part of the overhead - it's the actual
software emulation that saps 20% of the performance.
Either way, using VMWare tools on the guest is an
important part of
running VMWare - if you want performance.
Otherwise, VMWare has to emulate actual hardware devices, which is much
more work than simply transferring the I/O requests to the hypervisor.
It still does that. The VMware tools provide cut & paste, filesystem
access, a free-tracking mouse pointer and so on, but the ring-0 CPU,
motherboard chipset, NIC, graphics card etc. are all still emulated.
The big-iron server editions of VMware do allow things like actual
physical hardware NICs and SCSI adaptors to be dedicated to VMs, and
then you'll get near-native performance on I/O, but the
80%-of-native-performance figure is a best-case /with/ all the tools
and extensions installed.
There was some controversy over the Intel VT stuff -
it turns out it
does run slower than doing it in just software.
Swings and roundabouts. Some things are faster, some slower. The AMD
"Pacifica" virtualisation extensions are more capable than Intel's,
and include hardware remapping of page tables for virtual memory, but
there's still some stuff that VMware's decade-old, highly-optimised
code does better.
Myself, I prefer the architectural elegance of the hardware solution,
which also means much smaller, simpler hypervisors. The KV hypervisor
is a small Linux kernel module that does everything in one small
binary, for instance. Built by using bits of QEMU for VM setup and
config and so on, it's pretty simple.
Most of what VMWare does is trap & emulate
supervisor level
instructions, but there are a few opcodes that it can't do this with -
don't remember the exact ones, so what it does there is to scan the
binary for those opcodes and replaces them.
The biggest limitation I find to VMWare and stuff like it is memory.
You really do need a lot of RAM to get usability. Not surprising. ?If
you want to run 2 or more Operating Systems at the same time, you need
enough memory to make each OS and whatever Apps you plan to run under
them not page. ?If you can't do that, don't run things virtually.
Typically there's enough CPU cycles, but not enough memory. ?For most
situations, but not all.
As with everything, there's always a price to pay, but there are
benefits too.
Oh, yes, indeed.
--
Liam Proven ? Profile:
http://www.linkedin.com/in/liamproven
Email: lproven at cix.co.uk ? GMail/GoogleTalk/Orkut: lproven at
gmail.com
Tel: +44 20-8685-0498 ? Cell: +44 7939-087884 ? Fax: + 44 870-9151419
AOL/AIM/iChat/Yahoo/Skype: liamproven ? LiveJournal/Twitter: lproven
MSN: lproven at
hotmail.com ? ICQ: 73187508