Veeam VMware: Virtual Machine Memory Ballooning and Swapping Analysis

Veeam.Virt.Extensions.VMware.VMGUEST.Monitor.memoryBallooningAndSwapping (UnitMonitor)

Knowledge Base article:

Summary

This monitor tracks threshold breaches for the following metrics:

Alert severity is calculated as follows - if one metric has breached threshold, then the state is Warning. If more than one metric has breached threshold, then the State is Critical.

Configuration

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

Name

Default Value

Description

MemoryBalloonPctThreshold

50

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

MemorySwapRateThreshold

100

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

CPUSwapWaitPctThreshold

25

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

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

Review the alert description (which is dynamically generated depending on the metrics which have breached the threshold) for specific guidance relevant to this alert. General troubleshooting information is given below.

Threshold breach(es) for these metrics indicate that the vSphere host is experiencing memory stress.

Resolutions

These metrics are captured at the VM level, as the specific VM involved can have a configuration or resource issue (such as very high memory allocation/demand). However the root cause of ballooning/swapping can be that the vSphere host is experiencing memory shortage when trying to allocate resources for all VMs. Troubleshooting should include the following:

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.

Review memory demands from all VM workloads on this host. Although this is a VM-level alert, check the Ballooning and Swapping metrics from all VMs on this host using the Host Memory Ballooning, Usage, and Swapping Analysis dashboards.

High ballooning and/or swapping from all VMs on the host indicate an overall host issue with memory resources.

High ballooning and/or swapping from one VM on the host indicate inappropriate or misconfigured memory settings (such as Limits) for the VM, or excessive memory demand which the Host cannot meet.

In particular the VM Memory Ballooning and Swapping Analysis dashboard will show historical data for the relevant metrics on memory usage. Also all alerts for the VM and the in-guest Ops Mgr agent (if installed) will be shown - review in-guest alerts to understand memory demands from application workloads inside the VM.

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.VMGUEST
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityHigh
Alert Auto ResolveTrue
Monitor TypeVeeam.Virt.Extensions.VMware.AdvancedPerformance.VMMemoryBallooningAndSwappingAnalysis.3State3MetricMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Veeam VMware: Virtual Machine Memory Ballooning and Swapping Analysis
{0}
RunAsDefault

Source Code:

<UnitMonitor ID="Veeam.Virt.Extensions.VMware.VMGUEST.Monitor.memoryBallooningAndSwapping" Accessibility="Public" Enabled="onEssentialMonitoring" Target="VeeamVEVMwareLib!Veeam.Virt.Extensions.VMware.VMGUEST" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Veeam.Virt.Extensions.VMware.AdvancedPerformance.VMMemoryBallooningAndSwappingAnalysis.3State3MetricMonitorType" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Veeam.Virt.Extensions.VMware.VMGUEST.Monitor.memoryBallooningAndSwapping_AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>High</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/DataItem/Property[@Name='AlertDescription']$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Green" MonitorTypeStateID="Green" HealthState="Success"/>
<OperationalState ID="Yellow" MonitorTypeStateID="Yellow" HealthState="Warning"/>
<OperationalState ID="Red" MonitorTypeStateID="Red" HealthState="Error"/>
</OperationalStates>
<Configuration>
<MemoryBalloonPctThreshold>50</MemoryBalloonPctThreshold>
<MemorySwapRateThreshold>100</MemorySwapRateThreshold>
<CPUSwapWaitPctThreshold>25</CPUSwapWaitPctThreshold>
<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.VMGUEST"]/id$</Value>
</ValueExpression>
</SimpleExpression>
</FilterExpression>
<MemAlloc>$Target/Property[Type="VeeamVEVMwareLib!Veeam.Virt.Extensions.VMware.VMGUEST"]/memoryAllocReservation$</MemAlloc>
<MemLimit>$Target/Property[Type="VeeamVEVMwareLib!Veeam.Virt.Extensions.VMware.VMGUEST"]/memoryLimit$</MemLimit>
</Configuration>
</UnitMonitor>