Övervakar DPC-tid i procent i Windows Server 2008 R2-operativsystem.
DPC-tid i procent (Processorinformation\DPC-tid i procent) för processorn har överskridit tröskelvärdet. Detta kan avsevärt försämra systemets övergripande prestanda vilket leder till försämrade operativsystems- och programprestanda.
DPC-tid i procent visas den tid i procent som processorn spenderar med att ta emot och betjäna uppskjutna proceduranrop (DPC-anrop). DPC:er är avbrott som körs med lägre prioritet än standardavbrotten. Vid en varaktigt hög DPC-tid i procent kan det finnas en flaskhals i processorn eller ett program- eller maskinvarurelaterat problem som avsevärt försämrar hela systemets prestanda.
Den här övervakaren avser bara Windows Server 2008 R2-operativsystemet.
Ett högt värde för DPC-tid i procent kan ha en eller flera av följande orsaker:
Processorbegränsning
Programvarurelaterat problem
Maskinvaru- eller drivrutinsrelaterat problem
Om du vill visa den senaste historiken över processorrelaterade prestandaräknare kan du använda följande vy:
Starta prestandavyn Processor
Följ anvisningen nedan för att bestämma grundorsaken till ett högt DPC-värde.
Observera andelen av processortiden som används för betjäning av avbrott och DPC:er (uppskjutna proceduranrop). Det gör du genom att övervaka följande räknare i realtid via Systemövervakaren:
Processor\Processortid i procent
Processor\Avbrottstid i procent
Processor\DPC-tid i procent
Jämför värdena för räknarnas avbrottstid i procent och DPC-tiden i procent med Processor\Processortid i procent för varje processor.
Om en processorinstans kör en varaktig processortid i procent som är > 85 % och även spenderar > 15 % av den tiden med att betjäna avbrott och/eller DPC:er, är det förmodligen processorn som är orsaken till prestandabegränsningen. Den här begränsningen kan åtgärdas genom att uppgradera eller lägga till fler processorer till datorn.
Om processorn kör en varaktig processortid i procent som är > 85 % och även spenderar > 15 % av den tiden med att betjäna avbrott och/eller DPC:er, är prestandaproblemet antagligen program- eller maskinvarurelaterat.
Om en maskinvaruenhet är grundorsak till problemet kan en administratör troligen se att DPC-tid i procent har ökat mycket under en kort tidsperiod. Det här inträffar ofta när ny maskinvara installeras eller drivrutiner har uppgraderats. Om administratören kan isolera problemet till ett maskinvaru- eller enhetsdrivrutinsproblem, kan det åtgärdas genom att leverantören kontaktas.
I de fall då du administrerar ett system med flera processorer som inte fördelar avbrott jämnt, kan du ofta förbättra distributionen av processorbelastningen genom att lägga till nätverkskort så att det finns ett kort för varje processor. Vanligtvis kan du bara lägga till kort när du behöver förbättra systemets genomflöde. Nätverkskort medför, liksom all extra maskinvara, vissa indirekta kostnader. Men om en av processorerna nästan alltid är aktiv (det vill säga om Processor: processortid i procent = 100) och över hälften av tiden går åt till att betjäna DPC-anrop (om Processor: DCP-tid i procent > 50), är det troligt att systemets prestanda förbättras om ett kort läggs till, så länge den tillgängliga nätverksbandbredden inte redan är mättad.
När ett program är den grundläggande orsaken beror det troligen på att DPC-anropen blockeras av ett program som har utfärdat ett anrop som tar avsevärt lång tid att slutföra. Under denna tid är DPC-anropen blockerade och placeras i kö. Om du vill fastställa vilket program som är den grundläggande orsaken till prestandaproblemet ska du köra avancerad prestanda, spårning och diagnostik för att lokalisera just det programmet.
Target | Microsoft.Windows.Server.2008.Processor |
Parent Monitor | System.Health.PerformanceState |
Category | PerformanceHealth |
Enabled | False |
Instance Name | Processor Information |
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.R2.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 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>