Veeam Hyper-V: VM NUMA Error

Veeam.Virt.Extensions.HyperV.Events.Rule.VMNUMAError (Rule)

Knowledge Base article:

Summary

This rule tracks errors reported by the Hyper-V host about inefficient or unsupported VM configuration caused by a specific NUMA topology.

Causes

Check alert details for the error description and detailed explanation of the issue root cause.

Resolutions

NUMA nodes issues can be caused by inefficient resource allocation for the VM when certain resources are allocated on a remote NUMA node. This is not a recommended configuration because allocating resources on a remote node will add latency for the VM operations. Adjust VM configuration to make the resource allocation better fit host NUMA nodes configuration.

Calculation of the size of a single NUMA node of the Hyper-V host can help you to optimize resource allocation. The NUMA node size can be calculated by dividing the memory size by the number of CPU cores. For example, a Hyper-V host has two 8-core processors and 128GB of RAM. In this case, the size of the NUMA node would be 8GB. You can either decrease resource allocation for the VM, add additional memory to the host to increase size of the NUMA node, or you can migrate the VM to a Hyper-V host with a bigger NUMA node size.

Some VMs may have a specific configuration instructing the Hypervisor to allocate resources on the selected number of NUMA nodes in a certain way. If the Hyper-V host configuration does not support such kind of NUMA topology, it may not be able to start such a VM.

The Hyper-V host may also not be able to re-configure a virtual machine because new parameters for resource allocation and NUMA topology are out of range, or because the VM is currently running. Stop the VM and apply the supported resource allocation and NUMA topology settings.

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 Performance View to see the performance metrics for this object and all contained objects. 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. Refer to this Microsoft KB article Hyper-V Virtual NUMA Overview for introduction to Hyper-V Virtual NUMA.

Element properties:

TargetVeeam.Virt.Extensions.HyperV.VMGuestContainer
CategoryAlert
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
Veeam Hyper-V: VM NUMA Error
NUMA Error from VM {1} :
{0}
Event LogMicrosoft-Windows-Hyper-V-Worker-Admin

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.EventProvider Default
Alert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Veeam.Virt.Extensions.HyperV.Events.Rule.VMNUMAError" Enabled="true" Target="VVEHL!Veeam.Virt.Extensions.HyperV.VMGuestContainer" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>Alert</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>.</ComputerName>
<LogName>Microsoft-Windows-Hyper-V-Worker-Admin</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventLevel</XPathQuery>
</ValueExpression>
<Operator>Less</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">4</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">EventDescription</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>NUMA</Pattern>
</RegExExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="Alert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertName/>
<AlertDescription/>
<AlertOwner/>
<AlertMessageId>$MPElement[Name="Veeam.Virt.Extensions.HyperV.Events.Rule.VMNUMAError.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data[Default='']/EventDescription$</AlertParameter1>
<AlertParameter2>$Data/EventData/DataItem/*[local-name()='UserData']/*[local-name()='VmlEventLog']/*[local-name()='VmName']$</AlertParameter2>
</AlertParameters>
<Suppression>
<SuppressionValue>EventData/DataItem/*[local-name()='UserData']/*[local-name()='VmlEventLog']/*[local-name()='VmId']</SuppressionValue>
</Suppression>
<Custom1/>
<Custom2/>
<Custom3/>
<Custom4/>
<Custom5/>
<Custom6/>
<Custom7/>
<Custom8/>
<Custom9/>
<Custom10/>
</WriteAction>
</WriteActions>
</Rule>