Operating System Total Percent DPC Time

Microsoft.Linux.SLES.12.OperatingSystem.TotalPercentDPCTime.Monitor (UnitMonitor)

SUSE Linux Enterprise Server 12 Operating System Total Percent DPC Time Monitor

Knowledge Base article:

Summary

The total percentage of DPC time (for all processors) is high. System performance may be adversely affected.

Total DPC time is the time that all processors 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

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 (_Total) and % DPC Time (_Total) metrics to % Processor Time (_Total).

If the sustained % Processor Time (_Total) is > 85% and the % Interrupt Time (_Total) or % DPC Time (_Total) 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 (_Total) is < 85% and the % Interrupt Time (_Total) or Total % DPC Time (_Total) is > 15%, the performance issue may be the result of either an application or hardware related issue.

Element properties:

TargetMicrosoft.Linux.SLES.12.OperatingSystem
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
Total DPC Time Percentage is too high
The threshold for the Processor\\% DPC Time\_Total performance counter has been exceeded. The value that exceeded the threshold is: {0}.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Linux.SLES.12.OperatingSystem.TotalPercentDPCTime.Monitor" Accessibility="Public" Target="Microsoft.Linux.SLES.12.OperatingSystem" 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.12.OperatingSystem.TotalPercentDPCTime.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>_Total</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>