A DPC-hívásokra fordított idő százalékos arányát figyeli.
A DPC-hívásokra fordított időhányad (%) (Processzor\DPC-hívásokra fordított időhányad (%)\_Teljes) túllépte a küszöbértéket. Előfordulhat, hogy számottevően romlik a rendszer teljesítménye, és ezáltal csökken az operációs rendszer és az alkalmazások teljesítménye.
A DPC-hívásokra fordított időhányad (%) érték a processzor által a DPC-hívások (deferred procedure call – késleltetett eljáráshívás) kezelésével töltött időhányadot adja meg, százalékban kifejezve. A DPC-k a szabványosnál alacsonyabb prioritású megszakítások. Ha a DPC-hívásokra fordított időhányad tartósan túl magas, a szűk keresztmetszet valamelyik processzor lehet, illetve olyan alkalmazás- vagy hardverprobléma állhat fent, ami az egész rendszer teljesítményét jelentősen csökkenti.
A magas DPC-időt a következők okozhatják:
Nem elegendő a processzor teljesítménye
Szoftverrel kapcsolatos hiba
Hardverrel vagy eszközillesztővel kapcsolatos probléma
A magas DPC-idő okának megállapításához kövesse az alábbi eljárást.
Állapítsa meg, hogy a processzor mennyi időt tölt a megszakítások és a DPC-k kiszolgálásával. Ehhez kövesse az alábbi számlálók valós idejű értékét a Rendszerfigyelőben:
Processzor\Processzoridő %-ban
Processzor\Megszakítási idő %-ban
Processzor\DPC idő %-ban
Ha egy processzorpéldány esetében A processzor kihasználtsága (%) érték folyamatosan 85% feletti, valamint a processzor az idejének legalább 15%-át megszakítások és/vagy DPC-hívások kiszolgálásával tölti, akkor valószínűleg a processzor jelenti a szűk keresztmetszetet. A szűk keresztmetszetet nagyobb teljesítményű processzorok beépítésével vagy további processzorok hozzáadásával lehet megoldani.
Ha a processzor kihasználtsága hosszabb távon 85% alatti, de az időnek több mint 15%-át megszakítások és/vagy DPC-hívások kiszolgálásával tölti, akkor a teljesítményproblémát alkalmazás- vagy hardverhiba okozza.
Ha a hiba oka valamelyik hardvereszköz, akkor általában rövid időre emelkedik meg jelentősen a DPC-hívások kiszolgálására fordított idő. Ez gyakran előfordul új hardver telepítésekor, illetve az illesztőprogramok frissítésekor. Ha a rendszergazda meg tudja határozni, hogy melyik hardvereszköz vagy illesztőprogram okozza a hibát, akkor a gyártóval együttműködve hárítható el a probléma.
Ha többprocesszoros rendszerről van szó, és a megszakítások nem egyenletesen oszlanak el, akkor a munkaterhelést jobban eloszthatja a processzorok között, ha további hálózati adaptereket telepít úgy, hogy minden processzorra jusson egy adapter. Általában az adapterek bővítésére csak akkor kerül sor, ha szükségessé válik a rendszer teljesítőképességének növelése. A hálózati adapterek, hasonlóan a többi hardvereszközhöz, önmagukban is okoznak némi többletterhelést. Ha azonban a processzorok egyike majdnem mindig aktív (vagyis, ha a processzor: Processzor kihasználtsága (%) = 100, és az idejének több mint felét DPC-hívások kiszolgálásával tölti (ha a processzor: DPC-hívásokra fordított időhányad (%) >50), akkor egy további adapter telepítésével valószínűleg növelhető a rendszerteljesítmény, feltéve, hogy a rendelkezésre álló hálózati sávszélesség még nem telített.
Ha valamelyik alkalmazás okozza a hibát, akkor sok esetben észlelhető, hogy a DPC-hívásokat egy olyan alkalmazás blokkolja, amely egy hosszú idő alatt kiszolgálható hívást indított. Ez idő alatt a DPC-hívások a blokkolás miatt várólistára kerülnek. Annak meghatározásához, hogy pontosan melyik alkalmazás okozza a problémát, speciális teljesítménykövetési, nyomkövetési és diagnosztikai eljárásokat kell futtatni.
Target | Microsoft.Windows.Server.2008.OperatingSystem | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Instance Name | Processor | ||
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.2008.OperatingSystem.TotalDPCTime" Accessibility="Public" Enabled="false" Target="Server2008!Microsoft.Windows.Server.2008.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.2008.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>