We have recently started moving our C++ build server(s) from real machines into VMs. (MS Hyper-V)
We have some performance issues that I've currently no idea how to address. We have:
Test-Box- this is a piece of desktop workstation hardware my co-worker used to set up the VM before we moved it to the actual server hardware
Srv-Box- this is the server hardware
Test-Box-Real- This is Windows running directly on the Test-Box HW
Test-Box-VM- This is Windows in a Hyper-V VM on the Test-Box HW
Srv-Box-Real- This is Server2008R2 running on the Srv-Box HW.
Srv-Box-VM- This is Windows running in a Hyper-V VM on the Srv-Box HW, i.e. on Srv-Box-Real.
Now, the problem is that we compared Build times between
Test-Box-VM and they were basically equal (within about 2%).
Then we moved the VM to the Srv-Box machine and what we saw there is that we have a significant performance degradation between
Srv-Box-VM, that is, where we saw no differences on the Test HW we now do see major differences in performance on the actual Server HW. (Builds about ~~ 50% slower inside the VM.)
I should add that both the Test-Box and the Srv-Box are only running this one single VM and doing nothing else.
I should also note that the "Real" OS is Win2008R2(64bit) and the VM hosted OS is Wind2003R2(32bit).
- Intel XEON E5640 @ 2.67Ghz (This means 8 cores with hyperthreading on the Real system and "only" 4 cores on the VM, since Hyper-V doesn't allow for hyperthreading, but number of cores doesn't seem to explain the problem here.)
- 16GB RAM (we have 4GB assigned to the VM)
- Virtual DELL RAID 1 (2x 450GB HUS156045VLS600 Hitachi 15k SAS drives)
- Intel XEON E31245 @ 3.3GHz
- 16GB RAM
- WD VelociRaptor 600GB 10k RPM SATA
Note again that I'm only concerned with the differences between Srv-Box-Real and Srv-Box-VM (high) vs. the differences seen btw. Test-Box-Real and Test-Box-VM (low).
Why would one machine have parity when comparing VM vs Real performance and the other (server grade HW no less) would have a large disparity? (Both being XEON CPUs ...)