eG Monitoring
 

Measures reported by HvGuestTest

This test monitors the amount of the physical server's resources that each guest on a Hyper-V server is taking up. Using the metrics reported by this test, administrators can determine which virtual guest is taking up most CPU, which guest is generating the most network traffic, which guest is taking up the maximum memory utilization, which guest has the maximum disk activity, etc.

Measurement Description Measurement Unit Interpretation
Powered_on Whether the virtual machine is Hyper-V server host or not.   While the test reports a wide variety of other metrics too for virtual machines that are alive, only the Powered on status is indicated for virtual machines that are currently not available. If this measure reports the value On, it indicates that the guest is up and running. The value Off could indicate that the guest has been powered-off; it could also indicate that the guest has moved to a different Hyper-V server.

The numeric values that correspond to each of the powered-on states discussed above are listed in the table below:

State Value
On 1
Off 0

Note:

By default, this measure reports the values On or Off to indicate the status of a VM. The graph of this measure however, represents the status of a VM using the numeric equivalents - 0 or 1.

Virtual_cpu_assigned Indicates the number of processors currently present in this VM. Number All execution in the root and child partitions (where guest VMs run) happens on Virtual Processors (VPs). At a minimum, you will see one VP for each Logical Processor (LP). These account for the root VPs. You will then see one for each VP you have configured to a guest. Therefore, if you have an 8LP system with 1 guest running with 2 VPs, the count here will be 10.
Cpu_used Indicates the percentage of time spent by the virtual processor assigned to this VM in guest and hypervisor code. Percent This measure serves as an effective indicator of how resource-intensive a particular VM is on a specific Hyper-V server.
Guest_run_time Indicates the percentage of time spent by the virtual processor in guest code. Percent Comparing the value of the Virtual machine runtime and Hypervisor runtime measures for every VM will reveal where the virtual processors of the VM have spent more time - in processing guest code or in processing hypervisor code?
Hypervisor_run_time Indicates the percentage of time the virtual processor spend in hypervisor code. Percent
Memory_size Indicates the amount of physical memory currently allocated to this VM. MB  
Data_transmitted Indicates the number of bytes per second sent over the network adapters supported by this VM. Mbps  
Data_received Indicates the number of bytes per second sent over the network adapters supported by this VM. Mbps  
Data_dropped Indicates the number of bytes dropped on the network adapter since the last measurement period. MB Ideally, this value should be very low. A high value could be indicative of a network bottleneck.
Disk_reads Indicates the number of bytes read per second from the disks attached to the IDE controller. MB/sec These measures are good indicators of the activity on the disks attached to the IDE controller.
Disk_writes Indicates the the number of bytes written per second to the disks attached to the IDE controller. MB/sec
Deposited_pages Indicates the number of memory pages currently deposited into the partition. Number For each partition, the hypervisor maintains a memory pool of RAM SPA pages. This pool acts just like a checking account. The amount of pages in the pool is called the balance. Pages are deposited or withdrawn from the pool. When a hypercall that requires memory is made by a partition, the hypervisor withdraws the required memory from the total pool balance of that partition. When the balance available in the pool is less, then more memory pages are deposited in the pool.

A very high value of this measure therefore, indicates that the balance in the pool maintained for this partition is dwindling. This is a cause for concern.

Hypercalls_rate Indicates the rate of hypercalls made by this guest's code on the virtual processor. Hypercalls/Sec Hypercalls are one form of enlightenment. Guest OS's use the enlightenments to more efficiently use the system via the hypervisor. TLB flush is an example hypercall. If this value is zero, it is an indication that Integration Components are not installed. New OS's like WS08 can use hypercalls without enlightened drivers. So, hypercalls are only a prerequisite and not a guarantee for not having Integration Components installed.
Control_register_accesses_rate Indicates the rate of control register accesses by this guest on its virtual processors. Accesses/Sec Control registers are used to set up address mapping, privilege mode, etc.
HLT_instructions_rate Indicates the rate of HLT instructions executed by this guest on its virtual processors. Instructions/Sec A HLT will cause the hypervisor scheduler to de-schedule the current VP and move to the next VP in the runlist.
Emulated_instructions_rate Indicates the rate of emulated instructions while executing guest code on the virtual processor. Instructions/Sec  
MWAIT_instructions_rate Indicates the rate of MWAIT instructions executed by this guest on its virtual processors. Instructions/Sec The mwait (monitored wait) instruction instructs the processor to enter a wait state in which the processor is instructed to monitor the address range between a and b and wait for an event or a store to that address range.
CPUID_instructions_rate Indicates the rate of CPUID instructions executed by this guest on its virtual processors. Instructions/Sec The CPUID instruction is used to retrieve information on the local CPU's capabilities. Typically, CPUID is only called when the OS / Application first start. Therefore, this value is likely to be 0 most of the time.
Page_fault_intercepts_rate Indicates the rate of page fault exceptions intercepted by the hypervisor while executing this guest's code on the virtual processor Intercepts/Sec Whenever guest code accesses a page not in the CPU TLB a page fault will occur. This counter is closely correlated with the Large Page TLB Fills measure.
Total_intercepts_rate Indicates the rate of hypervisor intercept messages. Intercepts/Sec Whenever a guest VP needs to exit its current mode of running for servicing in the hypervisor, this is called an intercept. Some common causes of intercepts are resolving Guest Physical Address (GPA) to Server Physical Address (SPA) translations, privileged instructions like hlt / cupid / in / out, and the end of the VP's scheduled time slice.
Large_page_TLB_fills_rate Indicates the rate of virtual TLB fills on large pages. Fills/Sec There are two types of TLB entries (and some three). Small TLB which generally means a 4K page and large Page which generally means 2MB. There are fewer Large TLB entries on the order of 8 - 32.

A non-zero value for this measures indicates that the root partition is using large pages.

Small_page_TLB_fills_rate Indicates the rate of virtual TLB fills on 4K pages. Fills/Sec There are two types of TLB entries (and some three). Small TLB which generally means a 4K page and large Page which generally means 2MB. There are fewer Large TLB entries on the order of 64 - 1024+.
VCpu_util The percentage of allocated CPU resources that this VM is currently using Percent Comparing the value of this measure across VMs will enable you to accurately identify the VMs on which CPU-intensive applications are executing.
Total_capacity The total disk capacity of the VM MB Since VMs are easy to create and deploy, many a time an administrator might be faced with scenarios where many VMs are created on an Hyper-V host, but very few are actively used. A VM, whether powered on or off, consumes disk space on a host. When the Hyper-V server hosting the VMs runs low on disk space, administrators might want to know which VM is taking up maximum disk space. This measure reveals the disk capacity of a VM, regardless of its on/off state. A quick comparison of the capacity across VMs can enable administrators to accurately identify the VM that is taking up maximum disk space.
Disk_usage Indicates the rate at which the data is accessed from the disk. MB/Sec This measure is the sum of Disk_reads and Disk_writes measures.
Network_usage Indicates the rate at which the network I/O operations is performed in this VM. MB/Sec This measure is the sum of Data_transmitted and Data_received measures.
Current_sessions This measure is relevant only for monitoring of virtual desktops (i.e., for Hyper-V VDI servers). When reporting metrics for specific users, this metric indicates the number of sessions that each user has currently logged into; this measure will be available only if the test reports measures per currently logged in user. Number This is a good indicator of how busy the user is. The detailed diagnosis of this measure, if enabled, reveals the guests to which the user is currently logged on to.
Vm_health_state Indicates the current health state of this VM.   The values that this measure can report and their corresponding numeric values are as follows:

Measure Value Numeric Value
Ok 1
Major Failure 2
Critical Failure 3

Note:

By default, this measure reports the Measure Values in the table above to indicate the health of the VM. In the graph of this measure however, the same will be represented using the numeric equivalents only.

The detailed diagnosis of this measure shows the VM State, Process ID, Operational Status and the Integration Service Version.
Cpu_wait_time Indicates the time duration during which this VM was ready to run (i.e. it had requests to dispatch to the logical processor) but was not able to because of processor contention. Milliseconds The values of these measures should typically be low. The more time a VM spends waiting to run, the more lag time there is in responsiveness within the VM.
Cpu_wait_pct Indicates the percentage of time during which this VM was ready to run (i.e. it had requests to dispatch to the logical processor) but was not able to because of processor contention. Percent