Hyper-V MPE 2019 Virtual TLB Flushes (Non-Optimized Video card)

HyperV.MPE.2019.SRHV.VirtualTLBFlush.Monitor (UnitMonitor)

Knowledge Base article:

Summary

Video card drivers tend to use memory access methods that cause Hyper-V to need to clear out the CPU cache for memory page table mapping a lot. This is an expensive thing to do in Hyper-V at the best of times.

External content

http://blogs.msdn.com/b/virtual_pc_guy/archive/2009/11/16/understanding-high-end-video-performance-issues-with-hyper-v.aspx

Element properties:

TargetMicrosoft.Windows.HyperV.Discovery.ServerRole
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Instance NameHyper-V Hypervisor Root Partition
Counter NameVirtual TLB Flush Entires/sec
Frequency1200
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
Alert Message
Hyper-V MPE 2019 Alert: Virtual TLB Flushes (Non-Optimized Video card)

Instance {0}
Object {1}
Counter {2}
Has a value {3}
RunAsDefault

Source Code:

<UnitMonitor ID="HyperV.MPE.2019.SRHV.VirtualTLBFlush.Monitor" Accessibility="Public" Enabled="false" Target="MSWinHV2019Dis!Microsoft.Windows.HyperV.Discovery.ServerRole" ParentMonitorID="SHLib!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SPerf!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="HyperV.MPE.2019.SRHV.VirtualTLBFlush.Monitor_AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/InstanceName$</AlertParameter1>
<AlertParameter2>$Data/Context/ObjectName$</AlertParameter2>
<AlertParameter3>$Data/Context/CounterName$</AlertParameter3>
<AlertParameter4>$Data/Context/SampleValue$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ConditionFalse" MonitorTypeStateID="ConditionFalse" HealthState="Success"/>
<OperationalState ID="ConditionTrue" MonitorTypeStateID="ConditionTrue" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="MSWinLib!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Virtual TLB Flush Entires/sec</CounterName>
<ObjectName>Hyper-V Hypervisor Root Partition</ObjectName>
<InstanceName/>
<AllInstances>true</AllInstances>
<Frequency>1200</Frequency>
<Threshold>100</Threshold>
<Direction>greaterequal</Direction>
<NumSamples>3</NumSamples>
</Configuration>
</UnitMonitor>