Veeam VMware: vSphere Cluster CPU Overcommit Analysis

Veeam.Virt.Extensions.VMware.VMCCR.Monitor.Mapped.VMHOST.cpuPressure (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 CPU overcommit 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 'cpuPressure' 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

This means that the ratio of virtual machine vCPUs versus host physical cores has exceeded the setting 'RecommendedvCPUPerCore' as defined in the Advanced Settings of the Veeam MP UI. The default setting is 10 vCPU per 1 host core. This is expressed in the CPU Pressure metric as a percentage. If the recommended ratio is exceeded, then this metric will be greater than 100%.

Resolutions

CPU Overcommit (as with memory overcommit) may not be a performance problem per se. Depending on the workload demands from VMs, this ratio can be higher with no adverse affects. However the figure of 10 vCPU per host core is a general industry best-practice figure, and exceeding it may impact VM performance as the vSphere CPU Scheduler struggles to allocate all CPU resources for the VM vCPUs.

To lower the cpuPressure 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 cpuPressure calculation).

Using the Cluster CPU Overcommit dashboard, you can see CPU Pressure history for the cluster, and for all hosts in the cluster.

Drill down further into the Host CPU Ready Analysis dashboard to see VMs with high CPU Ready times. Anything >10% for cpuReady may indicate a performance issue with the vSphere CPU Scheduler.

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.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 CPU Overcommit Analysis

The vSphere Cluster {0} is heavily overcommitted for CPU. The CPU pressure rating is {1}\%.
High CPU Pressure means a high ratio of VM vCPUs to Host physical CPU cores. High values may cause performance issues for CPU scheduling.

The Top {2} hosts in this cluster for cpu pressure are -
Host Name - CPU Pressure \%
{3}
RunAsDefault

Source Code:

<UnitMonitor ID="Veeam.Virt.Extensions.VMware.VMCCR.Monitor.Mapped.VMHOST.cpuPressure" 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.cpuPressure_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-cpu</ObjectName>
<CounterName>cpuPressure</CounterName>
<InstanceName>$Data/Property[@Name='clusterName']$</InstanceName>
<Value>$Data/Property[@Name='cpuPressure']$</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>cpuPressure</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>