Porcentagem de Tempo de DPC de CPU

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

Monitora a Porcentagem de Tempo de DPC

Knowledge Base article:

Resumo

O limite de % Tempo de DPC (Processador\% Tempo de DPC) do processador foi excedido. O desempenho geral do sistema pode ser reduzido significativamente o que resultará em desempenho inadequado do sistema operacional e do aplicativo.

A % Tempo de DPC é a porcentagem de tempo gasta pelo processador para receber e atender chamadas de procedimento deferidas (DPCs). DPCs são interrupções executadas em uma prioridade mais baixa do que as interrupções padrão. Se uma % Tempo de DPC alta for mantida, poderá haver um afunilamento do processador ou um problema relacionado ao aplicativo ou hardware que pode reduzir significativamente o desempenho geral do sistema.

Causas

Um valor alto de % Tempo de DPC pode ser provocado por uma ou mais das seguintes condições:

Resoluções

Para exibir o histórico recente dos contadores de desempenho relacionados ao Processador, use o modo de exibição a seguir:

Iniciar o Modo de Exibição de Desempenho do Processador

Para determinar o problema raiz de uma taxa alta de DPC, siga o processo descrito a seguir.

Observe a proporção do tempo do processador gasto para atender interrupções e DPCs. Para fazer isso, monitore os seguintes contadores em tempo real usando o Monitor do Sistema:

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

Se uma instância do processador estiver executando um valor prolongado de % Tempo do Processador acima de 85% e também estiver passando mais de 15% desse tempo atendendo a Interrupções e/ou DPCs, é provável que o processador seja a origem de um afunilamento de desempenho. Esse afunilamento pode ser resolvido atualizando ou adicionando mais processadores ao computador.

Se o processador estiver executando uma % Tempo de Processador prolongada de < 85% e também estiver gastando > 15% desse tempo atendendo a interrupções e/ou DPCs, o problema de desempenho poderá ser o resultado de um problema relacionado a hardware ou aplicativo.

Quando um dispositivo de hardware for a causa raiz, o administrador descobrirá que a % Tempo de DPC provavelmente aumentou substancialmente em um curto período de tempo. Isso normalmente ocorre quando novo hardware é instalado ou quando drivers foram atualizados. Se o administrador puder isolar o problema como um problema de hardware/dispositivo, ele poderá ser resolvido com um trabalho conjunto com o fornecedor.

Em casos em que você está administrando um sistema de multiprocessador que não distribui interrupções simetricamente, é possível melhorar a distribuição da carga de trabalho do processador adicionando adaptadores de rede, de forma que exista um adaptador para cada processador. Geralmente, você adiciona adaptadores apenas quando precisa melhorar a taxa de transferência do sistema. Adaptadores de rede, como qualquer hardware adicional, incluem alguma sobrecarga intrínseca. No entanto, se um dos processadores estiver quase sempre ativo (isto é, se o Processador: % Tempo do Processador = 100) e mais da metade de seu tempo for gasto atendendo DPCs (se o Processador: % Tempo de DPC > 50), a adição de um adaptador provavelmente melhorará o desempenho do sistema, desde que a largura de banda da rede disponível já não esteja saturada.

Quando um aplicativo for a causa raiz, você descobrirá que as DPCs provavelmente estão sendo bloqueadas por uma aplicativo que emitiu uma chamada que está utilizando uma quantidade de tempo significativa para ser concluída. Durante esse tempo, as DPCs são bloqueadas e enfileiradas. Para determinar qual aplicativo é a causa raiz, você deve executar desempenho, rastreamento e diagnósticos avançados de desempenho e rastreamento para descobrir exatamente o aplicativo 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>