Porcentaje de tiempo de DPC de la CPU lógica

Microsoft.Windows.Server.10.0.LogicalProcessor.PercentDPCTime (UnitMonitor)

Supervisa el porcentaje de tiempo de DPC

Knowledge Base article:

Resumen

El % de tiempo de DPC (Procesador\% de tiempo de DPC) del procesador lógico ha superado el umbral. El rendimiento del sistema en general puede disminuir significativamente, lo que afectará al rendimiento del sistema operativo y de las aplicaciones.

El % de tiempo de DPC es el porcentaje de tiempo que el procesador lógico invierte en recibir y atender las llamadas a procedimiento diferidas (DPC). Las DPC son interrupciones que se ejecutan con una prioridad inferior a la de las interrupciones estándar. Si un porcentaje de tiempo de DPC elevado es prolongado, podría haber un cuello de botella en el procesador lógico, o bien un problema relacionado con una aplicación o con el hardware, lo que puede afectar de forma significativa al rendimiento global del sistema.

Causas

Un valor alto de % de tiempo de DPC puede estar provocado por uno o varios de los siguientes elementos:

Soluciones

Para determinar la causa raíz de una tasa elevada de DPC, aplique el procedimiento descrito a continuación.

Observe la proporción de tiempo del procesador invertido en atender interrupciones y DPC. Para ello, supervise los siguientes contadores en tiempo real mediante el Monitor de sistema:

Compare los valores de los contadores % de tiempo de interrupción y % de tiempo de DPC con el valor de Procesador\% de tiempo de procesador para cada instancia de procesador.

Si una instancia de procesador lógico presenta un valor continuado de % de tiempo de procesador superior al 85 % y también invierte más del 15 % de ese tiempo en atender interrupciones y DPC, es probable que el procesador sea el origen del cuello de botella de rendimiento. Este cuello de botella se puede solucionar si se actualizan los procesadores o se agregan más procesadores al equipo.

Si el procesador lógico presenta un valor continuado de % de tiempo de procesador inferior al 85 % y también invierte más del 15 % de ese tiempo en atender interrupciones y DPC, puede que el problema de rendimiento esté provocado por un problema de una aplicación o de hardware.

Cuando la causa raíz es un dispositivo de hardware, un administrador observará que, probablemente, el % de tiempo de DPC ha aumentado de forma significativa en un período de tiempo corto. Esto suele ocurrir cuando se instala hardware nuevo o se actualizan controladores. Si el administrador puede aislar el problema y descubre que se trata de un problema de controlador de dispositivo o hardware, se puede solucionar en colaboración con el proveedor.

En los casos en que se administra un sistema con varios procesadores que no distribuye las interrupciones de forma simétrica, normalmente se puede mejorar la distribución de la carga del procesador si se agregan adaptadores de red de forma que exista uno por cada procesador. Por lo general, sólo se agregan adaptadores cuando es necesario mejorar el rendimiento del sistema. Los adaptadores de red, como cualquier hardware nuevo, conllevan un procesamiento intrínseco. Sin embargo, si uno de los procesadores está activo casi siempre (es decir, si Información del procesador: % de tiempo de procesador = 100) y más de la mitad de este tiempo se invierte en atender DPC (si Información del procesador: % de tiempo de DPC > 50), entonces la adición de un adaptador suele mejorar el rendimiento del sistema, siempre que el ancho de banda de la red disponible no esté ya saturado.

Cuando la causa raíz es una aplicación, es probable que las DPC estén siendo bloqueadas por una aplicación que ha emitido una llamada, que está tardando bastante tiempo en finalizar. Durante este tiempo, las DPC se bloquean y se colocan en cola. Para determinar qué aplicación es la causa raíz, se deben realizar comprobaciones avanzadas de rendimiento, seguimiento y diagnóstico para localizar la aplicación exacta responsable del problema de rendimiento.

Element properties:

TargetMicrosoft.Windows.Server.10.0.LogicalProcessor
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Instance NameProcessor
Counter Name\% DPC Time
Frequency120
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.10.0.LogicalProcessor.PercentDPCTime" Accessibility="Public" Enabled="false" Target="ServervNext!Microsoft.Windows.Server.10.0.LogicalProcessor" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="ConditionTrue" HealthState="Error"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="ConditionFalse" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% DPC Time</CounterName>
<ObjectName>Processor</ObjectName>
<InstanceName>$Target/Property[Type="ServervNext!Microsoft.Windows.Server.10.0.LogicalProcessor"]/PerfmonInstance$</InstanceName>
<Frequency>120</Frequency>
<Threshold>15</Threshold>
<Direction>greaterequal</Direction>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>