Total Percent Processor DPC Time

Microsoft.Linux.SLES.9.Processor.PercentDPCTime.Monitor (UnitMonitor)

SUSE Linux Enterprise Server 9 Total Percent Processor DPC Time Monitor

Knowledge Base article:

Summary

This monitor checks the Total Percent DPC Time for the system. If you receive an alert from this monitor, action may be required in order to bring the system back to an operational state.

Percent DPC Time is the percentage of time that the processor spends receiving and servicing deferred procedure calls (DPCs). DPCs, or soft interrupts, are interrupts that run at a lower priority than standard interrupts. 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.

Causes

A High % DPC Time value can be caused by one or more of the following:

Resolutions

To determine the root cause of a high DPC rate, 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 counters in real time using System Monitor:

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

If a processor instance is running a sustained % Processor Time that is > 85% and it is also spending > 15% of that time servicing Interrupts and/or DPCs, the processor is probably the source of a performance bottleneck. This bottleneck can be addressed by upgrading or adding additional processors to the computer.

If the processor is running a sustained % Processor Time of < 85% and it is also spending > 15% of that time servicing interrupts and/or DPCs, the performance issue may be the result of either an application or hardware related issue.

Element properties:

TargetMicrosoft.Linux.SLES.9.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.SLES.9.Processor.PercentDPCTime.Monitor" Accessibility="Public" Target="Microsoft.Linux.SLES.9.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.SLES.9.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>//*[local-name()="Name"]</InstanceProperty>
<Value>$Data///*[local-name()="PercentDPCTime"]$</Value>
<Threshold>15</Threshold>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>