We are looking into virtualizing our C++ Build server(s).
The main reason being that our current toolchain that we use in addition to the build itself in Visual Studio only runs properly on Windows XP (or 2003Server), and the secondary reason being administrative ease (just clone an image and be ready to run on a different HW.
In the end, the setup would/should most probably be one VM per hardware box, because sharing hardware just doesn't make sense for a C++ build, because it will max out CPU and disk anyway.
A colleague has done some preliminary tests on his developer workstation, and they're just horrible:
He measured the following build times for a full build of our Visual C++ 8 (Visual Studio 2005) solution:
- Desktop/Native with Windows 7 : ~16 min
- Vmware Workstation with virtual disk, guest is Windows XP : ~1h21min (500% !!!)
- Vmware WS with direct access to a dedicated physical disk and limited to 4 cores : ~42min (260% !!)
With these timings, we certainly won't go virtual!
We're now asking ourselves whether we made any wrong assumptions with our measurements.
- Did we mess up any settings to get such horrible slowdown for the C++ build?
- Should we have tested ESX(i)(?) instead of Workstation?
- Should we expect anything else from MS Hyper-V? (Because our IT would prefer that.)
Related questions that did not really fully help:
Probably not, VMWare Workstation wasn't the right tool for the job.
Yes, it'll be better than Workstation, still slower than bare-metal but much better.
If you want, performance is broadly comparable to ESXi, some things are quicker, some slower - feel free to give it a try.
What do the performance stats (Perfmon, Performance Monitor, etc( inside the guest say it's bottlenecked on? What does the hypervisor OS say for equivalent stats?
Are you using paravirtualised drivers or emulated ones?
Does the PC you're testing on have the IO virtualisation extensions as well as the basic virt acceleration? Are they BIOS enabled?
Virtualization is not always a fit... but... you haven't told us any specs on the developer workstation. How much memory does it have? How many cores?
Are you running compilation with the /MP flag?
Were the VMs configured to overcommit on memory? Did the memory balloon driver ever kick in? What else was running on the host OS? (For example, did your test VMs have antivirus software running, as well as the host workstation?)
I definitely would have done your testing on ESXi - the hypervisor is extremely efficient, and will provide much better performance as a host for your VMs. But you still have to contend with memory and CPU commitment.