Czas DPC procesora logicznego (\%)

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

Monitoruje czas DPC procesora.

Knowledge Base article:

Podsumowanie

Licznik Czas DPC (%) (Procesor\Czas DPC (%)) dla procesora logicznego przekroczył wartość progową. Ogólna wydajność systemu może znacząco się obniżyć, co spowoduje spadek wydajności systemu operacyjnego oraz aplikacji.

Licznik Czas DPC (%) przedstawia procentową część czasu, jaką procesor logiczny poświęca na otrzymywanie i obsługę opóźnionych wywołań procedur (DPC). Wywołania DPC to przerwania realizowane z niższym priorytetem niż przerwania standardowe. Jeśli przez dłuższy czas występuje wysoka wartość licznika Czas DPC (%), może występować „wąskie gardło” procesora logicznego albo problem z aplikacją lub sprzętem, który może znacząco obniżyć ogólną wydajność systemu.

Przyczyny

Wysoka wartość licznika Czas DPC (%) może być spowodowana przez co najmniej jedną z następujących przyczyn:

Rozwiązania

W celu ustalenia głównej przyczyny wysokiej wartości DPC postępuj zgodnie z poniższą procedurą.

Sprawdź udział czasu procesora przeznaczonego na obsługę przerwań i wywołań DPC. W tym celu monitoruj następujące liczniki w czasie rzeczywistym za pomocą Monitora systemu:

W odniesieniu do każdego wystąpienia procesora porównaj wartości wskazywane przez liczniki Czas przerwań (%) i Czas DPC (%) z wartością licznika Procesor\Czas procesora (%).

Jeśli procent czasu procesora dla wystąpienia procesora logicznego przez dłuższy czas utrzymuje się powyżej 85% oraz jeśli obsługa przerwań i/lub wywołań DPC zajmuje więcej niż 15% tego czasu, oznacza to, że procesor jest prawdopodobną przyczyną wąskiego gardła wydajności. Problem z wydajnością można zlikwidować przez wymianę procesora na wydajniejszy lub zainstalowanie dodatkowych procesorów.

Jeśli procent czasu procesora dla procesora logicznego przez dłuższy czas utrzymuje się poniżej 85% oraz jeśli obsługa przerwań i/lub wywołań DPC zajmuje więcej niż 15% tego czasu, oznacza to, że przyczyną problemu z wydajnością może być problem związany z aplikacją lub sprzętem.

Gdy główną przyczyną jest urządzenie sprzętowe, administrator prawdopodobnie wykryje znaczący wzrost wartości licznika Czas DPC (%) w krótkim okresie. Taka sytuacja najczęściej występuje po zainstalowaniu nowego sprzętu lub po uaktualnieniu sterowników. Jeśli administrator ustali, że problem jest powodowany przez sprzęt lub sterownik urządzenia, można go rozwiązać we współpracy z dostawcą.

W przypadku administrowania systemem wieloprocesorowym, który nie rozprasza przerwań symetrycznie, można zwiększyć rozkład obciążenia procesora przez dodanie kart sieciowych tak, aby każdy procesor miał odrębną kartę. Ogólnie rzecz biorąc, karty należy dodać tylko w przypadku konieczności poprawienia przepustowości systemu. Podobnie jak inny dodatkowy sprzęt, karty sieciowe powodują pewne zwiększenie nakładów. Jeśli jednak jeden z procesorów jest prawie zawsze aktywny (tj. wartość licznika Informacje o procesorze: Czas procesora (%) = 100), a ponad połowę tego czasu zajmuje obsługa wywołań DPC (gdy wartość licznika Informacje o procesorze: % Czas DPC (%) > 50), dodanie karty sieciowej prawdopodobnie zwiększy wydajność systemu, dopóki dostępna przepustowość sieci nie zostanie przekroczona.

Jeśli główną przyczyną jest aplikacja, wywołania DPC będą prawdopodobnie blokowane przez aplikację wywołującą polecenie, którego ukończenie zajmuje dużo czasu. W tym czasie wywołania DPC są zablokowane i będą umieszczane w kolejce. W celu dokładnego ustalenia, która aplikacja powoduje problem z wydajnością, należy wykonać zaawansowane sprawdzenie wydajności, śledzenie oraz diagnostykę.

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>