CPU Utilization (\%)

Microsoft.SQLServer.2008.DBEngine.CPUUsagePercentMonitor (UnitMonitor)

CPU Utilization (\%) for 2008 DB Engine

Knowledge Base article:

Summary

Provides measuring of time that the processors actually spend working on SQL Server’s process threads.

Causes

All allocated CPUs are busy by processing SQL Server tasks.

Resolutions

Evaluate why SQL Server is using a high percentage of CPU by means of performance monitor SQL Server counters and performance related DMVs such as sys.dm_exec_query_stats.

Troubleshooting Performance Problems in SQL Server 2008

http://go.microsoft.com/fwlink/?LinkId=789165

Introducing SQL Server Extended Events

http://go.microsoft.com/fwlink/?LinkId=789166

Overrideable Parameters

Name

Description

Default Value

Alert Priority

Defines Alert Priority.

Normal

Alert Severity

Defines Alert Severity.

Error

Cache Expiration Time

Specifies the maximum age of information from cache the workflow can use. May be omitted.

43200

Enabled

Enables or disables the workflow.

Yes

Generates Alerts

Defines whether the workflow generates an Alert.

Yes

Interval (seconds)

The recurring interval of time in seconds in which to run the workflow.

300

Number of samples

If the parameter threshold exceeding count is greater or equal to the number of samples, then the monitor will be in a bad state

6

Synchronization Time

The synchronization time specified by using a 24-hour format. May be omitted.

00:06

Threshold

Threshold

95

Timeout (seconds)

Specifies the time the workflow is allowed to run before being closed and marked as failed.

200

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.DBEngine.CPUUsagePercent.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
SQL DB Engine 2008 CPU Utilization (\%) is too high
CPU Utilization of SQL instance "{0}" on computer "{1}" is too high. See "alert context" tab for more details.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.DBEngine.CPUUsagePercentMonitor" Accessibility="Public" Enabled="true" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.DBEngine.CPUUsagePercent.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.DBEngine.CPUUsagePercentMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Normal" MonitorTypeStateID="Normal" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</IntervalSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<Threshold>95</Threshold>
<NumSamples>6</NumSamples>
<SyncTime/>
<CacheExpirationTime>43200</CacheExpirationTime>
</Configuration>
</UnitMonitor>