CPU Utilization (\%)

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

CPU Utilization (\%) for 2008 DB Engine

Knowledge Base article:

Summary

Provides a measure of how much time 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 using performance monitor SQL Server counters and performance related DMVs such as sys.dm_exec_query_stats.

Troubleshooting Performance Problems in SQL Server 2008

http://technet.microsoft.com/en-us/library/dd672789(v=sql.100).aspx

Introducing SQL Server Extended Events

http://technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx

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>
</Configuration>
</UnitMonitor>