Symptoms: Individual processes are consuming excess levels of CPU power, which can affect overall performance

Impact : Medium

High levels of load on the total CPU processing capacity can degrade user responses, resulting in poor efficiency for all operations.
Default settings are:

CRITICAL :  70%
MEDIUM :  60%
LOW : 50%
Time span : more than 5 minutes

Expected behavior :

There are no suggested metrics for CPU utilization. The figures will vary based on levels of user activity, time of day etc. Load from non-SQL activities can also significantly increase overall utilization level.

Possible causes

Long system tasks  Priority : Medium
Long tasks performed outside SQL, such as anti-virus scans, backups etc. started to load CPU.
Recommended action :
Identify the source of the load (using built-in OS tools such as PerfMon) and if it is recurrent, try to reschedule to a time of low user demand.

Long SQL tasks  Priority : Medium
SQL Processes started to load CPU due to long tasks performed such as :
– accessing data where indexes are missing or corrupt (causes long loops)
– pulling large volumes of data (results in many threads or long loops)
– coding problems (inefficient organization, missing indexes causing many threads or long loops)
Recommended action :
Identify the source of the load and if it is recurrent, try to reschedule to a time of low user demand.

Inefficient query design  Priority : Medium
Incorrect query code may result in inefficient data access.
Recommended action :
Look for functions over fields that can be tuned or avoided in order to improve performance. Minimize the number of repeats (reading records more than once) as much as possible. Minimize the number of fields and records in the result sets as much as possible so that they would only return what is needed and nothing more. Break complex queries to more simple steps. Look for often used “Cluster Lookup” and “Hush Merger” and minimize their frequency by optimizing the code. Make sure that each transaction has COMMIT (in case of no errors) and ROLLBACK (in any case of an error) statements where applicable.

Missing indexes  Priority : Medium
Recommended action :
Detect missing indexes by looking at the execution plans.

Background

CPU utilization measures the load of all the tasks that are being performed by the server, including SQL Server itself as well as ancillary operations (shared applications). CPU usage above this number means degradation in user response times.