Percentagem Total de Tempo de DPC

Microsoft.Windows.Server.2003.OperatingSystem.TotalDPCTime (UnitMonitor)

Monitoriza a Percentagem de Tempo de DPC.

Knowledge Base article:

Resumo

A % Tempo de DPC (Processador\% Tempo de DPC\_Total) 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.

% Tempo de DPC é a percentagem de tempo que o processador gasta a receber e a servir DPCS (Deferred Procedure Calls). As DPCs são interrupções executadas com uma prioridade mais baixa do que as interrupções padrão. Se uma % Tempo de DPC elevada for constante, poderá existir um estrangulamento do processador ou um problema relacionado com uma aplicação ou com o hardware que poderá reduzir o desempenho global do sistema de forma significativa.

Causas

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

Resoluções

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:

Se uma instância do processador estiver a executar uma % Tempo do Processador sustentada > 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 congestionamento de desempenho. Este congestionamento poderá ser resolvido pela atualização ou adição de processadores ao computador.

Se o processador estiver a executar uma % Tempo do Processador sustentada < 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, um administrador determinará que a % 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 o administrador conseguir 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, muitas vezes poderá melhorar a distribuição da carga de trabalho dos processadores adicionando 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: % 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.2003.OperatingSystem
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Instance NameProcessor
Counter Name\% DPC Time
Frequency120
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
Alert Message
Percentagem Total de Tempo de DPC demasiado elevada
Foi excedido o limiar do contador de desempenho Processador\\% de Tempo de DPC\_Total.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.2003.OperatingSystem.TotalDPCTime" Accessibility="Public" Enabled="false" Target="Microsoft.Windows.Server.2003.OperatingSystem" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.2003.OperatingSystem.TotalDPCTime.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters/>
</AlertSettings>
<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>_Total</InstanceName>
<Frequency>120</Frequency>
<Threshold>95</Threshold>
<Direction>greater</Direction>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>