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.

What changed?

This behavior is due to architectural changes in Hyper-V 2012 Server which has been designed to support 320 Logical Processors.

Hypervisor Early Launch

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.

Minimal Parent Hypervisor

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.

Why was this implemented?

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.