Percentagem de Tempo de DPC da CPU

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

Monitoriza a Percentagem de Tempo de DPC

Knowledge Base article:

Resumo

A % Tempo de DPC (Processador\% Tempo de DPC) do processador 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 a % Tempo de Processador 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 (isto é, se Processador: % Tempo do Processador = 100) e mais de metade do seu tempo for gasto a servir DPCs (se Processador: % de Tempo de DPC > 50), é provável que a adição de um adaptador melhore o desempenho do sistema, desde que a largura de banda de rede 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.2008.Processor
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.2008.Processor.PercentDPCTime" Accessibility="Public" Enabled="false" Target="Server2008!Microsoft.Windows.Server.2008.Processor" 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/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% DPC Time</CounterName>
<ObjectName>Processor</ObjectName>
<InstanceName>$Target/Property[Type="WindowsServer!Microsoft.Windows.Server.Processor"]/PerfmonInstance$</InstanceName>
<Frequency>120</Frequency>
<Threshold>15</Threshold>
<Direction>greaterequal</Direction>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>