MECM CCMExec CPU Usage Monitor

MECM.ManagementPoint.CCMExecPercentProcessorTime.PerfThreshold.Monitor (UnitMonitor)

This monitor checks for excess CPU Usage by the CCMExec process.

Knowledge Base article:

Summary

The processor utilization for the SMS Agent Host service on a management point has increased to 95 percent over three hours. This condition will increase unless it is resolved or until the amount of activity on the computer decreases. If this threshold is consistently exceeded, performance may suffer.

Causes

The percent processor time can exceed the threshold because of insufficient processing capacity for the current SMS Agent Host tasks.

Resolutions

To resolve this issue and lower the percentage of processor utilization:

Element properties:

TargetMECM.ManagementPoint
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Instance NameProcess
Counter Name\% Processor Time
Frequency900
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
Alert Message
MECM CCMExec CPU Usage is Too High

Instance {0}
Object {1}
Counter {2}
Has a value {3}
At time {4}
RunAsDefault

Source Code:

<UnitMonitor ID="MECM.ManagementPoint.CCMExecPercentProcessorTime.PerfThreshold.Monitor" Accessibility="Public" Enabled="true" Target="MECM.ManagementPoint" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Perf!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="MECM.ManagementPoint.CCMExecPercentProcessorTime.PerfThreshold.Monitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/InstanceName$</AlertParameter1>
<AlertParameter2>$Data/Context/ObjectName$</AlertParameter2>
<AlertParameter3>$Data/Context/CounterName$</AlertParameter3>
<AlertParameter4>$Data/Context/SampleValue$</AlertParameter4>
<AlertParameter5>$Data/Context/TimeSampled$</AlertParameter5>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ConditionFalse" MonitorTypeStateID="ConditionFalse" HealthState="Success"/>
<OperationalState ID="ConditionTrue" MonitorTypeStateID="ConditionTrue" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% Processor Time</CounterName>
<ObjectName>Process</ObjectName>
<InstanceName>CCMExec</InstanceName>
<AllInstances>false</AllInstances>
<Frequency>900</Frequency>
<ScaleBy>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/LogicalProcessors$</ScaleBy>
<Threshold>95</Threshold>
<Direction>greater</Direction>
<NumSamples>4</NumSamples>
</Configuration>
</UnitMonitor>