MECM SMSExec CPU Usage Monitor

MECM.SiteServer.SMSExecPercentProcessorTime.PerfThreshold.Monitor (UnitMonitor)

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

Knowledge Base article:

Summary

The processor utilization for the SMS Executive service has increased to over 95 percent for more than three hours. This condition increases unless it is resolved or until the amount of activity on the computer decreases. If this threshold is consistently exceeded, performance suffers.

Causes

The percent processor time can exceed the threshold because of insufficient processing capacity for the current load.

Resolutions

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

Additional

If this alert is generating too many false positives, you can modify the threshold tab of the rule properties to designate values that are more appropriate for your environment.

% Processor Time is the percentage of elapsed time that all of the threads of this process used the processor to execute instructions. An instruction is the basic unit of execution in a computer, a thread is the object that executes instructions, and a process is the object created when a program is run. Code that is executed to handle some hardware interrupts and trap conditions is included in this count. On multiprocessor machines the maximum value of the counter is 100 percent times the number of processors.

Element properties:

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

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

Source Code:

<UnitMonitor ID="MECM.SiteServer.SMSExecPercentProcessorTime.PerfThreshold.Monitor" Accessibility="Public" Enabled="true" Target="MECM.SiteServerRoleBaseClass" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Perf!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="MECM.SiteServer.SMSExecPercentProcessorTime.PerfThreshold.Monitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</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>SMSExec</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>