A processzor által a DPC-hívásokra fordított idő százalékos aránya

Microsoft.Windows.Server.6.2.Processor.PercentDPCTime (UnitMonitor)

A DPC-hívásokra fordított idő százalékos arányát figyeli

Knowledge Base article:

Összefoglalás

A DPC-hívásokra fordított időhányad (%) (Processzorinformációk\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 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.

Okok

A magas DPC-időt a következők okozhatják:

Megoldások

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:

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 Processzorinformáció\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, 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 processzoradatok: 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 processzoradatok: 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.

Element properties:

TargetMicrosoft.Windows.Server.6.2.Processor
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Instance NameProcessor Information
Counter Name\% DPC Time
Frequency120
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.6.2.Processor.PercentDPCTime" Accessibility="Public" Enabled="false" Target="WindowsServer!Microsoft.Windows.Server.6.2.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 Information</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>