Hyper-V performance troubleshooting and investigation

The usual first step in evaluating Hyper-V performance problems is to collect the relevant Windows Performance counters. A good starting set is the following:

 

\Processor(_Total)\% Processor Time
\Hyper-V Hypervisor\*
\Hyper-V Hypervisor Logical Processor(*)\*
\Hyper-V Hypervisor Root Partition(*)\*
\Hyper-V Hypervisor Root Virtual Processor(*)\*
\Hyper-V Hypervisor Partition(*)\*
\Hyper-V Hypervisor Virtual Processor(*)\*
\Memory\*
\Network Interface(*)\*
\System\*
\PhysicalDisk(*)\*

 

Note: This list can be copy/pasted into a text file, and the file used as input to the logman command. For example, if the above list was in a file called CounterList.txt, you could do the following:

c:\>logman create counter myperfcounters -cf c:\users\mattp\CounterList.txt -si 00:00:01 -o myperfcounterslog

c:\>logman start myperfcounters

 

<<wait for some time period, e.g., 30 seconds>>

 

c:\>logman stop myperfcounters

c:\>logman delete myperfcounters <<this last step is optional, unless you want to rerun collection in the future>>

 

The output file myperfcounterslog_0000n.blg will contain the collected counters. It is important to set the sampling interval (specified via the -si option) to as low a value as possible, which happens to currently be 1s.

 

More info on performance counters:

https://blogs.msdn.com/tvoellm/archive/2008/05/09/hyper-v-performance-counters-part-three-of-many-hyper-v-logical-processors-counter-set.aspx