Veeam Hyper-V: Host pNIC Network Queue Length

Veeam.Virt.Extensions.HyperV.Host.pNic.Monitor.OutputQueueLength (UnitMonitor)

Knowledge Base article:

Summary

This monitor tracks threshold breaches for the following metric:

Causes

If there are more than 2 threads waiting on the network adapter, then the network may be a bottleneck. If the queue length is longer than 2, there are delays and the bottleneck should be found and eliminated, if possible. Common causes of this are poor network latency and/or high collision rates on the network.

Resolutions

Open a Performance View for the correspondig Hyper-V host to see network-related performance metrics for the host and all contained VMs.

Use the Alerts View to see all current open issues for this object. Use the Events View to review any error and warning events for this object. Open a Diagram View to analyze the relationships of this object to other components.

External

See the Help Center for more information including reference lists of all Rules and Monitors and User Guide for the Veeam Hyper-V MP.

See the Microsoft Online Documentation for more information on Microsoft Hyper-V.

Element properties:

TargetVeeam.Virt.Extensions.HyperV.pNetworkAdapter
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityHigh
Alert Auto ResolveTrue
Monitor TypeVeeam.Virt.Extensions.HyperV.MonitorType.AllInstances.DoubleThreshold
RemotableTrue
AccessibilityPublic
Alert Message
Veeam Hyper-V: Host pNIC Network Queue Length
This Hyper-V Host Network Output Queue Length for NIC {0} on virtual switch {1} is {2} over {3} samples.

Any value 1 or greater for Output Queue means that threads are waiting on the network adapter, causing performance bottleneck.
RunAsDefault

Source Code:

<UnitMonitor ID="Veeam.Virt.Extensions.HyperV.Host.pNic.Monitor.OutputQueueLength" Accessibility="Public" Enabled="onEssentialMonitoring" Target="VVEHL!Veeam.Virt.Extensions.HyperV.pNetworkAdapter" TypeID="Veeam.Virt.Extensions.HyperV.MonitorType.AllInstances.DoubleThreshold" ConfirmDelivery="true" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Veeam.Virt.Extensions.HyperV.Host.pNic.Monitor.OutputQueueLength_AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>High</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="VVEHL!Veeam.Virt.Extensions.HyperV.pNetworkAdapter"]/AdapterName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="VVEHL!Veeam.Virt.Extensions.HyperV.pNetworkAdapter"]/SwitchName$</AlertParameter2>
<AlertParameter3>$Data/Context/DataItem/Property[@Name='Value']$</AlertParameter3>
<AlertParameter4>$Data/Context/DataItem/Property[@Name='SampleCount']$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold1" HealthState="Success" MonitorTypeStateID="UnderThreshold1"/>
<OperationalState ID="OverThreshold1UnderThreshold2" HealthState="Warning" MonitorTypeStateID="OverThreshold1UnderThreshold2"/>
<OperationalState ID="OverThreshold2" HealthState="Error" MonitorTypeStateID="OverThreshold2"/>
</OperationalStates>
<Configuration>
<ObjectName>Network Interface</ObjectName>
<CounterName>Output Queue Length</CounterName>
<InstanceName>$Target/Property[Type="VVEHL!Veeam.Virt.Extensions.HyperV.pNetworkAdapter"]/AdapterName$</InstanceName>
<OutputObjectName>Hyper-V Network Adapter</OutputObjectName>
<OutputCounterName>Output Queue Length</OutputCounterName>
<OutputInstanceName>$Target/Property[Type="VVEHL!Veeam.Virt.Extensions.HyperV.pNetworkAdapter"]/AdapterName$</OutputInstanceName>
<Threshold1>2</Threshold1>
<Threshold2>3</Threshold2>
<NumSamples>3</NumSamples>
<Frequency>300</Frequency>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>