Total CPU Utilization Percentage (Windows Server 2008 R2 Operating System)

Microsoft.Windows.Server.2008.R2.OperatingSystem.TotalCPUUtilization (UnitMonitor)

Monitors the total CPU utilization of this server by correlating the Processor Information\\% Processor Time\_Total and the System\Processor Queue Length performance counters in Windows Server 2008 R2 Operating System.

Knowledge Base article:

Summary

The CPU Utilization (Processor Information\% Processor Time\_Total and System Queue Length) for the system processor(s) has exceeded the threshold. Once exceeded overall system performance may diminish significantly which will result in poor operating system and application performance.

This monitor is only valid for Windows Server 2008 R2 Operating System.

Configuration

The Total CPU Utilization monitoring routine is a high configurable solution that enables Operators to set threshold values for both the System\Processor Queue and the Processor\% Processor Time\_Total performance counters. When values for both counters have exceeded the defined thresholds for several consecutive samples a state change will occur for the monitor. The number of consecutive samples that must be sampled above the threshold before changing state is also configurable.

The default threshold values for the Total CPU Utilization monitoring routine monitoring routine include:

Parameter

Default Value

CPUQueueLengthThreshold

15

CPUPercentageThreshold

95

NumSamples

3

Please note that Overrides can be used to change any of the threshold values that are defined above.

Causes

When a computer is under substantial load for a sustained period of time it can be caused by any of the following conditions:

Resolutions

To view recent history for the Processor related performance counters you can use the following view:

Start Processor Performance View

To resolve this issue an administrator can perform the following tasks:

1. Evaluate the % Processor Utilization counter for each of the processes running on the server. This can be done by using either Task Manager or the Performance Monitoring snap-in. Determine which process(s) are consuming the most resources and monitor them over time to determine whether they appear to be returning to normal performance ranges. If not, addition application specific diagnostics should be performed to determine the most appropriate way to resolve the issue.

2. If it is determined that client load has increased over time and the computer is simply no longer able to satisfy demand, perform additional performance monitoring procedures to determine if basic hardware upgrades can enable the computer to return to optimal performance ranges.

3. If it has been determined that the application has entered into an unhealthy state, possibly due to a product defect, it might be necessary to restart the application. If the issue persists, you might need to contact the application vendor.

Element properties:

TargetMicrosoft.Windows.Server.2008.R2.OperatingSystem
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.Server.2008.CPUUtilization.Monitortype
RemotableTrue
AccessibilityPublic
Alert Message
Total CPU Utilization Percentage is too high
The threshold for the Processor Information\\% Processor Time\_Total performance counter has been exceeded. The values that exceeded the threshold are: {0}\% CPU and a processor queue length of {1}.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.2008.R2.OperatingSystem.TotalCPUUtilization" Accessibility="Public" Enabled="true" Target="Server2008!Microsoft.Windows.Server.2008.R2.OperatingSystem" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.Windows.Server.2008.CPUUtilization.Monitortype" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.2008.R2.OperatingSystem.TotalCPUUtilization.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='PctUsage']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='QueueLength']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="CPUUtilizationHigh" HealthState="Error"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="CPUUtilizationNormal" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<TargetComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</TargetComputerName>
<CPUPercentageThreshold>95</CPUPercentageThreshold>
<CPUQueueLengthThreshold>15</CPUQueueLengthThreshold>
<NumSamples>3</NumSamples>
<CounterName>% Processor Time</CounterName>
<ObjectName>Processor Information</ObjectName>
<InstanceName>_Total</InstanceName>
<AllInstances>false</AllInstances>
</Configuration>
</UnitMonitor>