Percentagem de Tempo de DPC da CPU

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

Monitoriza a Percentagem de Tempo de DPC

Knowledge Base article:

Resumo

A % de Tempo de DPC (Informação do Processador\% Tempo de DPC) do sistema excedeu o limiar. O desempenho global do sistema poderá diminuir significativamente, o que resultará num fraco desempenho do sistema operativo e das aplicações.

% de Tempo de DPC é a percentagem de tempo que o processador gasta a receber e a servir DPCS (Deferred Procedure Calls, Processamento de Chamadas de Procedimento Diferidas). As DPCs são interrupções executadas com uma prioridade mais baixa do que as interrupções padrão. Uma % de Tempo de DPC constante pode causar um estrangulamento do processador ou um problema relacionado com uma aplicação ou com o hardware, que poderá reduzir significativamente o desempenho global do sistema.

Causas

Uma % Tempo de DPC elevada poderá ser provocada por uma ou várias das seguintes situações:

Resoluções

Para visualizar o histórico recente dos contadores de desempenho associados ao Processador, pode utilizar a vista seguinte:

Iniciar a Vista de Desempenho do Processador

Para determinar a causa principal de uma frequência de DPC elevada, siga o processo indicado abaixo.

Observe a proporção do tempo do processador que é despendido a servir interrupções e DPC. Para tal, monitorize os seguintes contadores em tempo real utilizando o Monitor do Sistema:

Compare os valores dos contadores % Tempo de Interrupção e % Tempo de DPC com Informação do Processador\% Tempo do Processador para cada instância do processador.

Se uma instância do processador estiver a executar uma % de Tempo do Processador sustentada de > 85% e também a gastar > 15% desse tempo a servir interrupções e/ou DPCs, é provável que o processador esteja na origem de um estrangulamento de desempenho. Este estrangulamento poderá ser resolvido ao atualizar ou adicionar outros processadores ao computador.

Se o processador estiver a executar uma % de Tempo do Processador sustentada de < 85% e também a gastar > 15% desse tempo a servir interrupções e/ou DPCs, o problema de desempenho poderá resultar de um problema relacionado com uma aplicação ou com o hardware.

Se a causa principal for um dispositivo de hardware, os administradores determinarão que a % de Tempo de DPC aumentou, provavelmente, de forma substancial num curto período de tempo. Muitas vezes, isto acontece quando é instalado novo hardware ou são atualizados controladores. Se os administradores conseguirem isolar o problema como um problema de controlador de hardware/dispositivo, este poderá ser resolvido juntamente com o fornecedor.

Se estiver a administrar um sistema multiprocessador que não distribua as interrupções de forma simétrica, poderá, em muitos casos, melhorar a distribuição da carga de trabalho dos processadores ao adicionar adaptadores de rede, de modo a que exista um adaptador para cada processador. Geralmente, só deverá adicionar adaptadores quando precisar de melhorar o débito do sistema. Tal como qualquer hardware adicional, os adaptadores de rede têm alguma sobrecarga intrínseca. No entanto, se um dos processadores estiver quase sempre ativo (ou seja, se Informação do Processador: % de Tempo do Processador = 100) e mais de metade do tempo é gasto a assistir DPCs (se Informação do Processador: % de Tempo do DPC > 50), é provável que adicionar um adaptador melhore o desempenho do sistema desde que a largura de banda disponível ainda não esteja saturada.

Se a causa principal for uma aplicação, concluirá que as DPCs poderão estar a ser bloqueadas por uma aplicação que tenha emitido uma chamada que está a demorar muito tempo a ser concluída. Durante este tempo, as DPCs são bloqueadas e colocadas em fila. Para determinar que aplicação constitui a causa principal, deverá executar diagnósticos avançados de desempenho e rastreio para determinar com exatidão a aplicação responsável pelo problema de desempenho.

Element properties:

TargetMicrosoft.Windows.Server.10.0.Processor
Parent MonitorMicrosoft.Windows.Server.10.0.Processor.PerformanceRollup
CategoryPerformanceHealth
EnabledFalse
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.Server.10.0.Processor.Monitortype
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.10.0.Processor.PercentDPCTime" Accessibility="Public" Enabled="false" Target="ServervNext!Microsoft.Windows.Server.10.0.Processor" ParentMonitorID="Microsoft.Windows.Server.10.0.Processor.PerformanceRollup" Remotable="true" Priority="Normal" TypeID="Microsoft.Windows.Server.10.0.Processor.Monitortype" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
</OperationalStates>
<Configuration>
<CounterName>% DPC Time</CounterName>
<ObjectName>Processor</ObjectName>
<InstanceName>$Target/Property[Type="WindowsServer!Microsoft.Windows.Server.Processor"]/PerfmonInstance$</InstanceName>
<Frequency>120</Frequency>
<Threshold>15</Threshold>
<NumSamples>5</NumSamples>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>