eG Monitoring
 

Measures reported by HvRootProcTest

A virtual processor is a single logical processor that is exposed to a partition by the hypervisor. Virtual processors can be mapped to any of the available logical processors in the physical computer and are scheduled by the hypervisor to allow you to have more virtual processors than you have logical processors.

This test monitors how well the parent partition uses the virtual processors assigned to it.

Measurement Description Measurement Unit Interpretation
Guest_run_time Indicates the percentage of time spent by this virtual processor (VP) in guest code. For the Summary descriptor, the value of this measure is the total percentage across all VPs. Percent Comparing the value of this measure across VPs will accurately indicate which VP is being actively used by the guests.
Hypervisor_run_time Indicates the percentage of time spent by the virtual processor in hypervisor code. For the Summary descriptor, the value of this measure is the total percentage across all VPs. Percent Comparing the value of this measure across VPs will accurately indicate which VP is being actively used by the hypervisor.
Total_run_time Indicates the total percentage of time this VP was in use. Percent This is typically the sum of the Parent partition runtime and Hypervisor runtime measures. Comparing the value of this measure across VPs will reveal the VP that is being utilized excessively.
Control_register_accesses_rate Indicates the number of CPU Control Register accesses per second. Accesses/Sec Control registers are used to set up address mapping, privilege mode, etc.
CPUID_instructions_rate Indicates the number of CPUID instructions calls per second. 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.
Emulated_instructions_rate Indicates the number of emulated instructions completed per second. Instructions/Sec Some instructions require emulation to complete in the Hypervisor. One such example is APIC access.
HLT_instructions_rate Indicates the number of CPU halts per second on the VP. Instructions/Sec A HLT will cause the hypervisor scheduler to de-schedule the current VP and move to the next VP in the runlist.
Hypercalls_rate Indicates the number of hypercalls made by guest code on the VP per second. 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.
IO_instructions_rate Indicates the number of CPU in / out instructions executed per second. Instructions/Sec Many older or low bandwidth devices use “programmed I/O*rdquo; via in / out instructions.
Large_page_TLB_fills_rate Indicates the number of Large Page TLB fills / second. 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.
MSR_accesses_rate Indicates the number of Machine Specific Register (MSR) instruction calls per second. Accesses/Sec There are many types of MSRs such as C-state config, Synthetic Interrupt (Synic) Timers, and control functions such as shutdown.
MWAIT_instructions_rate Indicates the number of MWAIT instructions per second. 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.
Page_fault_intercepts_rate Indicates the number of page faults per second. 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.
Small_page_TLB_fills_rate Indicates the number of Small Page TLB fills / second. 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+.
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.
Cpu_wait_time Indicates the time duration during which this VP was ready to execute the requests to the logical processor but was not able to because of processor contention. Milliseconds The value of this measure should typically be low. The more time a VP spends waiting to run, the more lag time there is in responsiveness within the VP.