Hyper-V Performance Counters – Part one of many – The overview


In the next few posts I’ll be covering Hyper-V performance counters.  There have been a lot of changes from Beta -> RC -> post RC. 

In Beta the counters sets for Hyper-V were not grouped under a common namespace.  This made them hard to find.  In RC the counters are grouped under the “Hyper-V” namespace.  That is each counter set starts with “Hyper-V.”  For example “Hypervisor Logical Processors” are now “Hyper-V Hypervisor Logical Processors.”  The prefix causes all the Hyper-V counters to be grouped together.

Post RC you will see some counter sets get renamed and a few like “Hyper-V VMMS Task Manager Summary"  have been removed because they did not provide a lot of value.  The most notable renaming was “Hyper-V Hypervisor …” rate counters where “/ sec” has been appended to to make it clear they are a rate.  You will also see some counters have been removed.

The goal of the changes has been to simplify the counters and provide a very useful core that are easy to find.  Improvements have also been made to make the counters more accurate.

 The “Performance Counter” blog entries will focus on what you will see post RC but it should not be too hard to apply what is discussed to RC or Beta.

Hyper-V will RTM with 24 counter sets which are listed below by expected target audience;

Admin / Dev / Product Support (but not all counters in the counter set are for everyone)

·         Hyper-V Hypervisor                                                        - Overall hypervisor & machine state

·         Hyper-V Hypervisor Logical Processor                          - Details on what logical processors are doing

·         Hyper-V Hypervisor Partition                                         - Each guest runs in a partition.  This has details on what the partition memory and processors

·         Hyper-V Hypervisor Root Partition                                 - Details on the root partition memory and processors.

·         Hyper-V Hypervisor Root Virtual Processor                   - Details on what the root Virtual Processors are doing.  There is one root VP for every Logical Processor (LP).  Think of LP as cores on a processor.

·         Hyper-V Hypervisor Virtual Processor                           - Details on guest VP’s

·         Hyper-V Legacy Network Adapter                                 - Emulated network controller statistics and rates of flows.

·         Hyper-V Virtual Network Adapter                                 - Virtualized network controller statistics.  This is the faster networking device.

·         Hyper-V Virtual Switch                                                  - A virtual switch can attached to one and only one physical NIC.  Each Virtual / Legacy NIC plugs into a virtual switch.  This counter set gives details on what the switch is doing and flows of sends / receives.

·         Hyper-V Virtual Switch Port                                          - Similar to the virtual switch stats but details just a single “port” aka attached virtual NIC.

·         Hyper-V Virtual IDE Controller                                     - Details on disk commands and rates.

·         Hyper-V Virtual Storage Device                                   - Details on virtual storage reads / writes like SCSI disks.

·         Hyper-V Virtual Machine Health Summary                  - Toggle on Health Critical & Health OK

·         Hyper-V Virtual Machine Summary                              - State information on the number of VM’s starting, stopping, resuming, …  Gives good insight into what system wide control functions are running.


Developers / Product Support – ADVANCED

Think of VM below as Virtual Motherboard.  This is not quite true but it will help you understand what much of the functionality is targeting.

·         Hyper-V Task Manager Detail                                      - Gives detail and timing on changes to virtual machines like import, export, …

·         Hyper-V Virtual Machine Bus                                       - Interrupt rates, … on VMBUS

·         Hyper-V VM IO APIC                                                     - Details on the Virtual IO APIC

·         Hyper-V VM Vid Driver                                                 - The VID control memory dedicated to VM’s.  This give lots of details on the types of memory used, …

·         Hyper-V VM Vid Message Queue                                - More internal details on the VID

·         Hyper-V VM Vid Numa Node                                       - Details on how the VID is managing NUMA memory

·         Hyper-V VM Vid Partition                                             - Similar to the “Hyper-V Hypervisor Partition States” but relative to the root’s view on the partitions.

Present but non-functioning counter sets – these make be removed in the future;

·         Hyper-V VM Remoting                                                  - Tracks the number of pixels written to the virtual frame buffer, …

·         Hyper-V VM Save, Snapshot, and Restore                    - Timing on how long save, restore, … take

·         Hyper-V VM Worker Process Memory Management    - Details on the worker processes view on memory.   The worker process is where emulation for emulated devices happen, save / restore, …

The next post will cover the most useful set of counters to monitor.


-          Tony Voellm

Comments (10)
  1. PADIYAR says:

    How do I get the information on what is the Interval and number of samples used for calculating the /sec values given by these HyperV performance counters?  

    [Tony’s Reply]  The interval is around a second.  You can get the raw counts by querying the counters via WMI.

  2. Pete says:

    Are these counters available through the performance registry?

     [Tony’s reply]

    There is nothing special with the Hyper-V performance counters in terms or reading them.  You should be able to access them via WMI apis as well as perfmon apis (of which the registry is one).

    There are some known WS08 bugs around perfmon counters that prevent counters from saving to trace files, base counters dont show up in WMI, … so watch out for these.


  3. Geeta says:

    Can someone give the list of counters for following attribute groups:

    ·         Hyper-V Hypervisor Partition

    ·         Hyper-V Hypervisor Root Partition

    ·         Hyper-V Legacy Network Adapter

    ·         Hyper-V Virtual Network Adapter

    ·         Hyper-V Virtual Switch

    ·         Hyper-V Virtual Switch Port

    ·         Hyper-V Virtual IDE Controller

    ·         Hyper-V Virtual Storage Device

    ·         Hyper-V Virtual Machine Health Summary

    ·         Hyper-V Virtual Machine Summary


    [Tony’s reply]  Will do as time allows. 

  4. GeetaGiri says:

    Hello Tony,

    On 64 bit operating systems, there are 2 perfmon.exe one is from system32 and another is from syswow64 folder.

    Do both of those expose hyper-v performance counters and their values?

    Becuase of unavailability of practical setup I could not verify that, Anyone having setup ready may help to know this.

    Thanks in advance!

  5. Hyper-V says:

    In ProfMon I can list the Switch Port and it shows a bunch of Instance IDS like f79d9560-5982-4c03-bh8f-7458545458_c441448g-4112-gdfd-4584-s55vveeed732c98c

    How do I reference these to the VM virtual nic?


    [Tony’s Reply]  You need to use the WMI interfaces to enumerate the NICs configured to VM’s,  Each NIC has a GUID and this is what you are seeing in the virtual switch ports.

  6. Martin Herbener says:

    What’s the best RAM-related counter or metric to examine to decide if a given host can handle 1) another VM, or 2) an increase in the memory allocation to a VM?




    Tony’s Reply

    Martin there really is no one place.  Generally a VM will take the size you specify or it + 64MB.  We hope to make figuring out memory usage easier in future releases.

     You can always use task manager to see what Windows has available or on the standby list.

  7. SandyGMS says:

    I am not able to access perfmon counters

    (% Guest Run Time,% Hypervisor Run Time etc)for "Hyper-V Hypervisor Logical Processor" remotely from 2003 machine where same are accessible using 2008 machine remotely.

  8. Nilesh says:

    Is there any way to get memory usage of a virtual machine?

  9. Anisio J. Moreira Neto says:

    I need more infomation about "hyper-v virtual storage deviceError Count" counter. The system disk of my virtual machine always one.

Comments are closed.

Skip to main content