Microsoft Enterprise Platforms Support: Windows Server Core Team
EPS Team Blogs
Product Team Blogs
Today we are going to talk about Processor changes in Windows Server 2012 Hyper-V servers. Hyper-V in Windows Server® 2012 supports significantly larger configurations of virtual and physical components than in previous releases of Hyper-V. This capacity enables virtualizing high performance, scale-up workloads.
Well, we will not talk about performance and scalability in depth but an interesting change in Hyper-V on Windows Server® 2012. A Windows Server® 2012 running Hyper-V can support up to 320 Logical Processors and 64 Virtual Processors for each Virtualized partition (Virtual machine). That being said, if we have a Server 2012 with Hyper-V enabled running on a Hardware with 10 processors having 4 core each and Hyper threading enabled (Long story short - Hardware with 80 Logical Processors) you will see that only 64 Logical Processors will be assigned for the host.
Here is how it looks in Task Manager on a Windows Server 2012 with no Hyper-V role enabled
After enabling the Hyper-V role on the server you will see something like below. A new entry gets added called "Host Logical Processors" and will have a value of 64. This is the number of logical processors that are assigned to the Host Operating System. Also notice that the value of “Logical processors” did not change.
This does not mean that the remaining processors will not be used. They will still be used for Virtual machines running on the Server.
This behavior is due to architectural changes in Hyper-V 2012 Server which has been designed to support 320 Logical Processors.
In Windows Server® 2008 and Windows Server® 2008 R2 the OS in the parent partition booted first and then launches the Hypervisor via driver hvboot.sys. But in Windows Server 2012 and Windows 8 we do an early launch of the Hypervisor before the OS in the parent partition. The Hypervisor initializes the BSP, applies any microcode update needed and enables the virtualization. The OS in the parent partition is booted on a Virtual Processor.
The Parent partition will run no more than 64 Virtual Processors regardless of the number of Logical Processors present in the system and this value is NOT user-configurable. The hypervisor continues to manage all Logical Processors, schedule guest Virtual Processors on all Processors etc.
Managing more than 64 VPs presents a scalability bottleneck. Beyond 64 logical processors, the parent should not need more VPs to handle I/O for the system NOTE: With 64 logical processors the Parent Partition has been tested and demonstrated that it can handle over 1 million IOP’s and the sustained CPU utilization in Task Manager showed between 20-25%. In short with 64 cores in the Parent Partition is more the adequate to handle the I/O load.
NOTE: With 64 logical processors the Parent Partition has been tested and demonstrated that it can handle over 1 million IOP’s and the sustained CPU utilization in Task Manager showed between 20-25%. In short with 64 cores in the Parent Partition is more the adequate to handle the I/O load.
Santosh Vavilal Support Engineer Windows Core Team, Microsoft Enterprise Platforms
Keith Hill Sr. Support Escalation Engineer and the Hyper-V Support Topic Owner. Windows Core Team, Microsoft Enterprise Platforms
I would love to see more articles like this one, focused on core performance and architectural changes and improvements.
"Beyond 64 logical processors, the parent should not need more VPs to handle I/O for the system"
And what about using the VPs for compute rather than I/O? We've encountered a client that wants to use our compute oriented software on an 80-core (via hyperthreading) machine. We can't split the load into multiple virtual nodes due to USB hardware dongle licensing requirements and the lack of support for USB in Hyper-V.