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 (%) érték) túllépte a küszöbértéket. Előfordulhat, hogy számottevően leromlik a rendszer teljesítménye, ami miatt 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, amely 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 processzorral kapcsolatos teljesítményszámlálók közelmúltbeli értékei a következő nézetben jeleníthetők meg:
A Processzorteljesítmény nézet megnyitása
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
Hasonlítsa össze a Megszakítások kiszolgálására fordított időhányad (%) és a DPC-hívásokra fordított időhányad (%) számláló értékeit a Processzor\A processzor kihasználtsága (%) értékkel minden processzorpéldány esetén.
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, 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 szinte folyamatosan aktív (vagyis a Processzor\A processzor kihasználtsága (%) érték 100), és idejének több mint felét DPC-hívások kiszolgálásával tölti (vagyis a Processzor\DPC-hívásokra fordított időhányad (%) érték 50-nél nagyobb), akkor további adapterek beépítésével nagy valószínűséggel javítható a rendszer teljesítménye, feltéve, hogy még nincs teljesen kihasználva a rendelkezésre álló hálózati sávszélesség.
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.Processor |
Parent Monitor | System.Health.PerformanceState |
Category | PerformanceHealth |
Enabled | False |
Instance Name | Processor |
Counter Name | \% DPC Time |
Frequency | 120 |
Alert Generate | False |
Alert Auto Resolve | True |
Monitor Type | System.Performance.ConsecutiveSamplesThreshold |
Remotable | True |
Accessibility | Public |
RunAs | Default |
<UnitMonitor ID="Microsoft.Windows.Server.2008.Processor.PercentDPCTime" Accessibility="Public" Enabled="false" Target="Server2008!Microsoft.Windows.Server.2008.Processor" 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/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% DPC Time</CounterName>
<ObjectName>Processor</ObjectName>
<InstanceName>$Target/Property[Type="WindowsServer!Microsoft.Windows.Server.Processor"]/PerfmonInstance$</InstanceName>
<Frequency>120</Frequency>
<Threshold>15</Threshold>
<Direction>greaterequal</Direction>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>