Monitoruje procent łącznego czasu DPC.
Licznik Czas PDC (%) (Informacje o procesorze\Czas DPC (%)\_Łącznie) dla systemu 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 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 lub problem z aplikacją lub sprzętem, który może znacząco obniżyć ogólną wydajność systemu.
Wysoka wartość licznika Czas DPC (%) może być spowodowana przez co najmniej jedną z następujących przyczyn:
„Wąskie gardło” procesora
Problem związany z oprogramowaniem
Problem związany ze sprzętem lub sterownikiem urządzenia
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:
Informacje o procesorze\Czas procesora (%)
Informacje o procesorze\Czas przerwań (%)
Informacje o procesorze\Czas DPC (%)
Jeśli wystąpienie procesora przez dłuższy czas działa przy wartości licznika Czas procesora (%) powyżej 85%, a licznik czasu przerwań i/lub czasu DPC ma wartość powyżej 15%, problem z wydajnością może być spowodowany przez procesor. Problem z wydajnością można zlikwidować przez wymianę procesora na wydajniejszy lub zainstalowanie dodatkowych procesorów.
Jeśli procesor pracuje przez dłuższy czas przy wartości licznika Czas procesora (%) poniżej 85%, a obsługa przerwań i/lub wywołań DPC zajmuje powyżej 15% tego czasu, problem z wydajnością może być spowodowany przez problemy z aplikacjami 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 cały czas 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 (%) wynosi powyżej 50), dodanie karty sieciowej prawdopodobnie zwiększy wydajności 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ę.
Target | Microsoft.Windows.Server.6.2.OperatingSystem | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Instance Name | Processor Information | ||
Counter Name | \% DPC Time | ||
Frequency | 120 | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | System.Performance.ConsecutiveSamplesThreshold | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.Windows.Server.6.2.OperatingSystem.TotalDPCTime" Accessibility="Public" Enabled="false" Target="WindowsServer!Microsoft.Windows.Server.6.2.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.6.2.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 Information</ObjectName>
<InstanceName>_Total</InstanceName>
<Frequency>120</Frequency>
<Threshold>95</Threshold>
<Direction>greater</Direction>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>