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.
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