Processor Percent DPC Time

Microsoft.Linux.RHEL.5.Processor.PercentDPCTime.Monitor (UnitMonitor)

Red Hat Enterprise Linux Server 5 Processor Percent DPC Time Monitor

Knowledge Base article:

Summary

The percentage of DPC time (for a single processor) is high. System performance may be adversely affected.

Processor DPC time is the time that a single processor spent receiving and servicing deferred procedure calls (DPCs). DPCs are interrupts that run at a lower priority than standard interrupts. % DPC Time is a component of % Privileged Time because DPCs are executed in privileged mode. If a high % DPC Time is sustained, there may be a processor bottleneck or an application or hardware related issue that can significantly diminish overall system performance.

The monitor threshold is analyzed against an average of values returned in polls to the agent, where the Number of Samples parameter controls the number of samples included in the calculation of the average. The value returned by the agent is the rolling average of the 5 most recent values queried at 1 minute intervals.

Configuration

Monitoring of individual processors is disabled by default. Enable monitoring by enabling the object discovery named 'Discover Red Hat Enterprise Linux Server 5 Processor.'

Default Configuration

Parameter

Default Value

Threshold

15

Interval (seconds)

300

Number of Samples

3

Overrides can be used to change the parameter values defined above for all instances or for specific instances or groups.

Causes

A high DPC time condition can be caused by one or more of the following:

Resolutions

To determine the root cause of a high DPC time condition, follow the process outlined below. Observe the proportion of the processor time that is spent servicing interrupts and DPCs. To do this, monitor the following metrics:

Compare the values of the % Interrupt Time and % DPC Time metrics to % Processor Time for each processor instance.

If the sustained % Processor Time is > 85% and the % Interrupt Time or % DPC Time is > 15%, the processors are probably the source of a performance bottleneck. This bottleneck can be addressed by upgrading or adding processors to the computer.

If the sustained % Processor Time is < 85% and the % Interrupt Time or Total % DPC Time is > 15%, the performance issue may be the result of either an application or hardware related issue.

Element properties:

TargetMicrosoft.Linux.RHEL.5.Processor
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Unix.WSMan.Performance.Filtered.Average.Threshold.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
DPC Time Percentage is too high
The threshold for the Processor\\% DPC Time\ performance counter has been exceeded. The value that exceeded the threshold is: {0}.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Linux.RHEL.5.Processor.PercentDPCTime.Monitor" Accessibility="Public" Target="Microsoft.Linux.RHEL.5.Processor" TypeID="Unix!Microsoft.Unix.WSMan.Performance.Filtered.Average.Threshold.MonitorType" Enabled="true" ParentMonitorID="SystemHealth!System.Health.PerformanceState">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Linux.RHEL.5.Processor.PercentDPCTime.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Value$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState HealthState="Success" MonitorTypeStateID="UnderThreshold" ID="UnderThreshold"/>
<OperationalState HealthState="Error" MonitorTypeStateID="OverThreshold" ID="OverThreshold"/>
</OperationalStates>
<Configuration>
<TargetSystem>$Target/Host/Property[Type="Unix!Microsoft.Unix.Computer"]/NetworkName$</TargetSystem>
<Uri>http://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/SCX_ProcessorStatisticalInformation?__cimnamespace=root/scx</Uri>
<Filter/>
<SplitItems>true</SplitItems>
<Interval>300</Interval>
<ObjectName>Processor</ObjectName>
<CounterName>% Interrupt Time</CounterName>
<InstanceName>$Target/Property[Type="Unix!Microsoft.Unix.Processor"]/PerfmonInstance$</InstanceName>
<InstanceProperty>/DataItem/WsManData/*[local-name(.)='SCX_ProcessorStatisticalInformation']/*[local-name(.)='Name']</InstanceProperty>
<Value>$Data/WsManData/*[local-name(.)='SCX_ProcessorStatisticalInformation']/*[local-name(.)='PercentDPCTime']$</Value>
<Threshold>15</Threshold>
<NumSamples>3</NumSamples>
</Configuration>
</UnitMonitor>