Veeam VMware: vSphere Host Memory Overcommit Analysis

Veeam.Virt.Extensions.VMware.VMHOST.Monitor.memoryPressure.Mapped.VMGUEST.memoryAllocated (UnitMonitor)

Knowledge Base article:

Summary

This monitor tracks threshold breaches for the following metric:

This is a 'Top N' monitor - the top virtual machines for memory allocation will be listed in the alert description.

Configuration

The monitor is enabled by default. You can override the following parameters:

Name

Default Value

Description

Threshold

150

Specifies a threshold for the 'memoryPressure' metric. If the metric value exceeds the threshold, the monitor will start generating alerts.

Num Samples

1

Specifies a threshold for the number of consequent metric samples. If the threshold is breached, the monitor will change its state.

Instance Count

5

Defines the number of Top N child objects to display in the alert.

Note: If you have configured several overrides of the same type, select the Enforced check box for an override that should have priority over all other overrides.

Causes

The memory overcommit (the ratio of virtual machine memory allocated versus the physical memory available) has exceeded the desired threshold. The calculation of this metric factors in vSphere memory management techniques such as TPS (transparent page-sharing).

If the recommended ratio is exceeded, then this metric will be greater than 100%.

Resolutions

Memory Overcommit (as with CPU or Storage overcommit) may not be a performance problem per se. Depending on the workload demands from VMs, this ratio can be higher than 100% with no adverse affects. However if the threshold is much greater than 100% it may impact VM performance as the vSphere memory resource manager struggles to allocate all memory resources for all VMs. In worst-case this may force excessive memory ballooning within VMs, or even disk swapfile use on the Host.

To lower the memoryPressure value it is necessary to migrate VMs to other hosts, or to power off some VMs (as only powered-on VMs are included in the memoryPressure calculation).

Ops Mgr 2012 and 2016 customers can use the in-context dashboards, available in the Navigation section of the Tasks pane, to drill down into historical performance data and current alerts. These dashboards will show relevant metrics for this object and for contained objects, and further dashboards will become available by selecting within the dashboard. Drill-down from dashboard to dashboard to arrive at the detailed metrics that can assist in finding root-cause.

In particular, the Host Memory Overcommit dashboard will show historical data for the host cpuPressure metric, and also historical memory consumption data for all the VMs on the host. Alerts for the host and all contained VMs, and agents within the VMs will also be shown - use this view to analyze whether memory issues are impacting any host or VM workload.

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 full set of User Guides for the Veeam MP for VMware.

See the VMware Online Documentation for more information on VMware vSphere, in particular:

Element properties:

TargetVeeam.Virt.Extensions.VMware.VMHOST
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeVeeam.Virt.Extensions.VMware.TopNPerformance.ThresholdMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Veeam VMware: vSphere Host Memory Overcommit Analysis

The vSphere Host {0} is heavily overcommitted for memory. The memory pressure metric is {1}\%.
This does not indicate immediate performance issues, however memory overcommitment increases the risk of ballooning and swapfile usage if VMs start using their memory allocation.

The Top {2} virtual machines forcing memory pressure on this host are -
VM Name - Allocation MB
{3}
RunAsDefault

Source Code:

<UnitMonitor ID="Veeam.Virt.Extensions.VMware.VMHOST.Monitor.memoryPressure.Mapped.VMGUEST.memoryAllocated" Accessibility="Public" Enabled="onEssentialMonitoring" Target="VeeamVEVMwareLib!Veeam.Virt.Extensions.VMware.VMHOST" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Veeam.Virt.Extensions.VMware.TopNPerformance.ThresholdMonitorType" ConfirmDelivery="true">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Veeam.Virt.Extensions.VMware.VMHOST.Monitor.memoryPressure.Mapped.VMGUEST.memoryAllocated_AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="System!System.Entity"]/DisplayName$</AlertParameter1>
<AlertParameter2>$Data/Context/DataItem/Property[@Name='RollupValue']$</AlertParameter2>
<AlertParameter3>$Data/Context/DataItem/Property[@Name='InstanceCount']$</AlertParameter3>
<AlertParameter4>$Data/Context/DataItem/Property[@Name='RelatedInstances']$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Warning"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ObjectName>VMHost-memory</ObjectName>
<CounterName>memoryPressure</CounterName>
<InstanceName>_Total</InstanceName>
<Value>$Data/Property[@Name='memoryPressure']$</Value>
<Threshold>150</Threshold>
<FilterExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='entityId']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type="VeeamVEVMwareLib!Veeam.Virt.Extensions.VMware.VMHOST"]/id$</Value>
</ValueExpression>
</SimpleExpression>
</FilterExpression>
<ClassName>HOSTSTATS</ClassName>
<NumSamples>1</NumSamples>
<Direction>greater</Direction>
<instanceCount>5</instanceCount>
<sortOrder>top</sortOrder>
<relatedClass>VmStats</relatedClass>
<relatedMetric>memoryAllocation</relatedMetric>
<selectByColumn>hostName</selectByColumn>
<rollupInstanceName>$Target/Property[Type="VeeamVEVMwareLib!Veeam.Virt.Extensions.VMware.VMHOST"]/id$</rollupInstanceName>
<nameColumn>vmName</nameColumn>
<showUnits>true</showUnits>
<units>MB</units>
</Configuration>
</UnitMonitor>