When you add the Hyper-V role to a Windows Server 2008 server, you at the same time add a large set of PerfMon counters. These counters are necessary, because of the way hypervisors schedule resource access to virtual machines. Recall that just like an application any particular virtual machine gets only a percentage of total processor attention. However, what’s different between a traditional application and a virtual machine is in what is being done with that attention.
In the case of a virtual machine, the host’s processor is being used to drive guest processing. As a result, host processing and guest processing need to be measured differently to get accurate results. That’s why the set of “Hyper-V Hypervisor” PerfMon counters exist.
For a Hyper-V virtual machine, you cannot view the traditional
% Processor Time
metric to get a good understanding of that VM’s processing. Instead, the counter you’ll want to monitor is
Hyper-V Hypervisor Virtual Processor \ % Guest Run Time (instanceName)
. This counter can be considered to be equivalent to
% Processor Time
, but for a specific VM as defined by its instance name.
While similar in name, this counter is different than
Hyper-V Hypervisor Logical Processor
. Whereas Hyper-V considers a “Virtual Processor” to be one that has been assigned as part of a VM’s configuration, a “Logical Processor” represents the total number of processors on a host system that are managed by Hyper-V. You get this number by multiplying the number of cores times sockets, doubling the result if hyperthreading is enabled.
Hyper-V Hypervisor Local Processor
identifies utilization on a per logical processor basis. So, using it, you can determine the individual utilization of each of your logical processors as they’re being consumed by Hyper-V workloads.