Veeam VMware: vSphere Cluster Memory Overcommit Analysis

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

Knowledge Base article:

Summary

This monitor tracks threshold breaches for the following metric:

This is a 'Top N' monitor - the top vSphere hosts for memory overcommit (known as memoryPressure) in this cluster 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 for the whole cluster, it is necessary to migrate VMs to other clusters, or to power off some VMs (as only powered-on VMs are included in the memoryPressure calculation)

Ops Mgr 2012 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 Cluster Memory Overcommit Dashboard will show historical data for the Cluster cpuPressure metric, and also historical data for all the hosts in the cluster. Alerts for the cluster, all contained hosts and 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 analyse 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.VMCCR
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 Cluster Memory Overcommit Analysis
The vSphere Cluster {0} is heavily overcommitted for memory. The memory pressure rating 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} hosts in this cluster for memory pressure are -
Host Name - Memory Pressure \%
{3}
RunAsDefault

Source Code:

<UnitMonitor ID="Veeam.Virt.Extensions.VMware.VMCCR.Monitor.Mapped.VMHOST.memoryPressure" Accessibility="Public" Enabled="onEssentialMonitoring" Target="VeeamVEVMwareLib!Veeam.Virt.Extensions.VMware.VMCCR" 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.VMCCR.Monitor.Mapped.VMHOST.memoryPressure_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="UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ObjectName>VMCluster-memory</ObjectName>
<CounterName>memoryPressure</CounterName>
<InstanceName>$Data/Property[@Name='clusterName']$</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.VMCCR"]/id$</Value>
</ValueExpression>
</SimpleExpression>
</FilterExpression>
<ClassName>CLUSTER</ClassName>
<NumSamples>1</NumSamples>
<Direction>greater</Direction>
<instanceCount>5</instanceCount>
<sortOrder>top</sortOrder>
<relatedClass>HostStats</relatedClass>
<relatedMetric>memoryPressure</relatedMetric>
<selectByColumn>clusterId</selectByColumn>
<rollupInstanceName>$Target/Property[Type="VeeamVEVMwareLib!Veeam.Virt.Extensions.VMware.VMCCR"]/id$</rollupInstanceName>
<nameColumn>hostName</nameColumn>
<showUnits>true</showUnits>
<units>"%"</units>
</Configuration>
</UnitMonitor>