Lately we’ve had quite a few questions regarding virtual processor assignment, processor over subscription and host processor utilization.

And since systems with 8 physical cores or more are starting to become more common I thought I’d provide some additional information.

I found a very good post by Robert Larson (MS) describing how to control processor resources in child partitions and processor over subscription:
http://www.virtualizationadmin.com/articles-tutorials/microsoft-hyper-v-articles/general/controlling-processor-resources-hyper-v-guests.html

A bit from the article around processor over subscription:
Virtualization allows you to over subscribe the processing limits of the physical hardware. I could only have 4 cores on the physical server, but create and have more than 4 virtual machines running. Each virtual machine would be sharing a virtual processor in the parent partition, but with no limits imposed a virtual machine could consume an entire core in the machine. For example, if I allocate a virtual machine 1 processor on a machine that has a single quad core processor, that virtual machine will have one thread that can consume the equivalent of an entire core or processing time. If it has 2 processors configured it can consume two cores. If you configure the virtual machine to have 4 cores, it could attempt to consume all the processing power of the server and starve the other virtual machines.

More information on measuring processor performance on Hyper-V:
http://msdn.microsoft.com/en-us/library/cc768535.aspx

An interesting scenario is when e.g. a small number of servers are virtualized and consolidated to a single physical host with more physical cores than the number of virtual processors that can be assigned to virtual machines.

Example:

  • Two Windows Server 2003 servers
  • One physical server with 8 cores

Windows Server 2003 is supported with two virtual processors when running in a child partition on Hyper-V. So you can only utilize half of the physical processors of this physical server. In this specific example you will not be able to utilize all the physical processors/cores as every virtual processor runs as a thread on a physical processor/core.

So for scenario’s like this you either need less physical processors/cores or add more virtual machines.

For more information on which operating systems and the number of virtual processors that are supported in Hyper-V guests see:
Guest operating systems that are supported on a Hyper-V virtual machine
http://support.microsoft.com/default.aspx/kb/954958