Friday, April 15, 2011 4:08 PM
Over the past few months I have been seeing performance issues with Windows 2003 virtual machines running on a Windows Server 2008 R2 (with and without SP2).
Every now and then when the Windows 2003 machine with 2 virtual processors is under load, it will slow to a crawl.
Looking at the resource monitor on the Hyper-V host reveals 3 out of 4 cores are set to "park". Running some programs on the host in an attempt to "wake" them doesn't appear to have any effect. I then set the power profile in the control panel to High Performance and the cores magically awake though I am not sure if this fixes things permanently or not.
As far as I can tell this appears isolated to the Xeon E5xxx series of processors. I am running some SuperMicro E550x servers and some custom built ones with the same issue.
Is Microsoft aware of this issue and is there some sort of patch to resolve this a bit more permanently then the workaround above?
Saturday, April 16, 2011 12:48 PM
Hyper-V is generally a enterprise datacenter virtualization product and it does strongly rely on "clean" and functional developed drivers (serverclass) for reliability and performance. I have done many benchmarks with Hyper-V and virtualized workloads and I can tell you that drivers play a key role here. Therefore you should always try to use serverclass products with are certified for Windows 2008 for Hyper-V purposes.
Also from Windows 2003 perpective my observations from benchmark tests are:
- Windows 2003 was not developed for virtualization awareness like Windows 2008 is (tight virtualization stack integration)
- more vCPUs with W2K3 does not automatically mean more guest performance, you should always start with 1 vCPU (but install with 2 vCPU regarding HAL.DLL) and ramp up your system after monitoring CPU usage pattern
- not all application does benefit from mutiple vCPUs
- test your application performance with diff vCPU configurations and rule out "optimal" configuration
Core Parking does only come into play if the CPU processing power is not requested from OS/Hyper-V = idle. when you set "static High performance" you disable core parking therefore all cores wakes up ;-)
How much physical processors do you have in your host? Have much vCPU do you have assigned and are running with load when cores are parked? You easily use consume.exe for stressing your vCPUs and get a better understanding of CPU scheduling at your host and core parking activities. consume.exe is free and part of the Windows SDK.
1. copy consume.exe to all your VM which should be tested
2. powershell remoting into each VM and start consume with parameter CPU test "consume.exe -cputime"
3. monitor CPU performance (VM/Host)
Hope that helps.
Ramazan Can [MVP Cluster] http://ramazancan.wordpress.com/
Monday, April 18, 2011 12:42 AM
As I mentioned, the issue appears on SuperMicro servers which are server class products with microsoft certified drivers.
The Windows 2003 machine is attempted to use both virtual processors but they are being allocated to one core and the other three are getting parked. Obviously this is a bug as what is the point of assigning more than one virtual processor to a machine if it is just going to allocate them to a single core anyway?
Monday, April 18, 2011 9:21 PM
on Sun systems I would assume something is going wroing and would dive into deeper troubleshooting. you should try to identify your bottleneck in your system when you monitor the areas which are relevant for virtualization a.e. Disk I/O, CPU, Memory, Network.... from guest/host perspective.
can you install SP1 and monitor if you still face the same performance problems?
also can you check if you had applied the recommended patches for Hyper-V?
Ramazan Can [MVP Cluster] http://ramazancan.wordpress.com/
Wednesday, April 20, 2011 9:12 AMModerator
Please check the following links.
Processor topology inside of Hyper-V virtual machines
Hyper-V Concepts - vCPU
Logical Processors assignment
Tuesday, April 26, 2011 1:50 AM
While not a perfect solution, you can disable core parking by following the instructions in the following article: http://support.microsoft.com/kb/2532917/. Disabling core parking will cause increased power utilization, but will have no other adverse affects.
Sunday, June 05, 2011 10:49 AM
This issue isn't limited to Hyper-V, and won't be limited to E5xxx chips, as it has been seen with other Nehalem architecture processors. And might effect SandyBridge processors too. It's possibly a problem with any Enhanced Intel SpeedStep Intel processor.
Glenn Berry's done a couple of blog posts on BIOS setting and Windows Power Plans that's worth a read (don't be put off that it's about SQL Server performance): http://sqlserverperformance.wordpress.com/2010/09/28/windows-power-plans-and-cpu-performance/
StackOverflow also had this problem when they did a server upgrade / migration. Brent Ozar's done a nice blog post on it: http://www.brentozar.com/archive/2010/10/sql-server-on-powersaving-cpus-not-so-fast/. Brent is a "virtualisation guy" was well as a "SQL Server ninja". I seem to remember that you really need to crank up the server loading alot before it wakes the other CPUs up again.
This guy checked his AMD / ESX server (hosting Windows Server), after reading Brent's piece, and thinks he's got the same issue: http://serverfault.com/questions/200792/vmware-esx-4-with-amd-opteron-2435-mhz-6-core-cpus-cpu-z-reports-core-speed-528
As for increased power consumption, if you read Glenn's post, you will see that there isn't much in the way of power saving between "high performance" mode and "balanced". So I'm not really sure what advantage SpeedStep / Balanced Plans give you in a server enviroment.
So go "High Performance" and turn on that Turbo Boost; we won't keep hurting the planet anymore than we are already.
Monday, June 06, 2011 3:15 AM
I tend to disable core parking on every implementation (c-states). This has been known to cause various instability issues, as well as performance problems. Here is a blog post which describes this in more detail.