Percentual de Tempo de DPC de CPU Lógica

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

Monitora o Percentual de Tempo de DPC

Knowledge Base article:

Resumo

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

A % de Tempo de DPC é o percentual de tempo gasto pelo processador lógico 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 for mantida uma alta porcentagem de tempo de DPC, poderá haver um afunilamento de processador lógico 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 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 lógico estiver executando uma % de Tempo do Processador prolongada superior a 85% e também estiver passando mais de 15% desse tempo atendendo a Interrupções e/ou DPCs, será 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 lógico estiver executando uma % de Tempo de Processador prolongada inferior a 85% e também estiver gastando mais de 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/driver de 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 quase sempre estiver ativo (ou seja, se as Informações do Processador: % Tempo do Processador = 100) e mais da metade de seu tempo for gasto atendendo a DPCs (se as Informações do Processador: % de 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.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>