Monitor łącznego czasu DPC procesora (\%) w systemie SUSE Linux Enterprise Server 11
Wartość procentowa czasu DPC (dla pojedynczego procesora) jest wysoka. Może to mieć niekorzystny wpływ na wydajność systemu.
Czas DPC procesora to czas, jaki pojedynczy 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. Procentowy czas DPC wchodzi w skład procentowego czasu uprzywilejowanego, ponieważ wywołania DPC są obsługiwane w trybie uprzywilejowanym. 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.
Próg monitora jest analizowany w odniesieniu do średnich wartości zwracanych w sondach do agenta, gdzie parametr Liczba próbek określa liczbę próbek uwzględnionych podczas obliczania średniej. Wartość zwracana przez agenta jest średnią kroczącą 5 ostatnich wartości zwróconych w wyniku kwerendy w 1-minutowych interwałach.
Monitorowanie pojedynczych procesorów jest domyślnie wyłączone. Aby włączyć monitorowanie, należy włączyć wykrywanie obiektów o nazwie „Odnajdywanie procesorów w systemie SUSE Linux Enterprise Server 11”.
Konfiguracja domyślna
Parametr | Wartość domyślna |
Próg | 15 |
Interwał (w sekundach) | 300 |
Liczba próbek | 3 |
W celu zmiany wartości parametrów zdefiniowanych powyżej dla wszystkich lub określonych wystąpień bądź grup można zastosować zastąpienia.
Wysoka wartość Czas DPC może być spowodowana przez jedną lub więcej z poniższych kwestii:
„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 długiego czasu DPC postępuj zgodnie z poniższą procedurą. Sprawdź udział czasu procesora przeznaczonego na obsługę przerwań i wywołań DPC. W tym celu sprawdź następujące pomiary:
Procesor\Czas procesora (%)
Procesor\Czas przerwań (%)
Procesor\Czas DPC (%)
W odniesieniu do każdego wystąpienia procesora porównaj wartości wskazywane przez liczniki Czas przerwań (%) i Czas DPC (%) z wartością Czas procesora (%).
Jeśli procesor przez dłuższy czas działa przy wartości licznika czasu procesora powyżej 85%, a licznik czasu przerwań lub czasu DPC ma wartość powyżej 15%, problem z wydajnością może być spowodowany przez procesory. To „wąskie gardło” może zostać zlikwidowane przez wymianę procesora na lepszy lub zainstalowanie dodatkowych procesorów.
Jeśli procesor pracuje przez dłuższy czas przy wartości licznika czasu procesora (%) poniżej 85%, a licznik czasu przerwań lub czasu DPC ma wartość powyżej 15%, problem z wydajnością może być spowodowany przez problemy z aplikacjami lub sprzętem.
Target | Microsoft.Linux.SLES.11.Processor | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.Unix.WSMan.Performance.Filtered.Average.Threshold.MonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.Linux.SLES.11.Processor.PercentDPCTime.Monitor" Accessibility="Public" Target="Microsoft.Linux.SLES.11.Processor" TypeID="Unix!Microsoft.Unix.WSMan.Performance.Filtered.Average.Threshold.MonitorType" Enabled="true" ParentMonitorID="SystemHealth!System.Health.PerformanceState">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Linux.SLES.11.Processor.PercentDPCTime.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Value$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState HealthState="Success" MonitorTypeStateID="UnderThreshold" ID="UnderThreshold"/>
<OperationalState HealthState="Error" MonitorTypeStateID="OverThreshold" ID="OverThreshold"/>
</OperationalStates>
<Configuration>
<TargetSystem>$Target/Host/Property[Type="Unix!Microsoft.Unix.Computer"]/NetworkName$</TargetSystem>
<Uri>http://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/SCX_ProcessorStatisticalInformation?__cimnamespace=root/scx</Uri>
<Filter/>
<SplitItems>true</SplitItems>
<Interval>300</Interval>
<ObjectName>Processor</ObjectName>
<CounterName>% Interrupt Time</CounterName>
<InstanceName>$Target/Property[Type="Unix!Microsoft.Unix.Processor"]/PerfmonInstance$</InstanceName>
<InstanceProperty>/DataItem/WsManData/*[local-name(.)='SCX_ProcessorStatisticalInformation']/*[local-name(.)='Name']</InstanceProperty>
<Value>$Data/WsManData/*[local-name(.)='SCX_ProcessorStatisticalInformation']/*[local-name(.)='PercentDPCTime']$</Value>
<Threshold>15</Threshold>
<NumSamples>3</NumSamples>
</Configuration>
</UnitMonitor>