DPC-Zeit der logischen CPU (in \%)

Microsoft.Windows.Server.10.0.LogicalProcessor.PercentDPCTime (UnitMonitor)

Überwacht, wie hoch der Anteil der DPC-Zeit ist.

Knowledge Base article:

Zusammenfassung

Der Prozentsatz der DPC-Zeit (%) (Prozessor\DPC-Zeit (%)) für den logischen Prozessor hat den Schwellenwert überschritten. Die Leistung des Systems insgesamt kann sich merklich verringern und so das Betriebssystem und Anwendungen ausbremsen.

„DPC-Zeit (%)“ gibt an, wie lange der Prozessor mit dem Empfangen und Verarbeiten von DPCs (Deferred Procedure Calls, zurückgestellte Prozeduraufrufe) beschäftigt ist. DPCs sind Interrupts, die mit niedrigerer Priorität als Standardinterrupts ausgeführt werden. Ein durchgängig hoher Wert für "DPC-Zeit (%)" ist möglicherweise ein Hinweis auf einen Engpass bei logischen Prozessoren oder ein anwendungs- oder hardwarebedingtes Problem, das die Gesamtleistung des Systems merklich verringern kann.

Ursachen

Ein hoher Wert für „DPC-Zeit (%)“ kann folgende Ursachen haben:

Lösungen

Gehen Sie zum Ermitteln der Ursache für eine hohe DPC-Rate wie folgt vor:

Beobachten Sie den Anteil der Prozessorzeit, der für das Verarbeiten von Interrupts und DPCs benötigt wird. Überwachen Sie dazu die folgenden Leistungsindikatoren im Systemmonitor in Echtzeit:

Vergleichen Sie für jede Prozessorinstanz die Werte der Indikatoren „Interruptzeit (%)“ und „DPC-Zeit (%)“ mit „Prozessor\Prozessorzeit (%)“.

Wenn für einen logischen Prozessor der Wert für die Prozessorzeit (%) ständig größer als 85 Prozent ist und der Prozessor außerdem mehr als 15 Prozent dieser Zeit mit dem Verarbeiten von Interrupts und/oder DPCs verbringt, ist wahrscheinlich der Prozessor die Ursache für den Leistungsengpass. Dieser Engpass kann durch ein Prozessorupgrade oder durch Hinzufügen weiterer Prozessoren zum Computer behoben werden.

Wenn für den logischen Prozessor der Wert von Prozessorzeit (%) ständig größer als 85 Prozent ist und der Prozessor mehr als 15 Prozent dieser Zeit mit dem Verarbeiten von Interrupts und/oder DPCs verbringt, wird das Leistungsproblem vermutlich durch ein anwendungs- oder hardwarebedingtes Problem verursacht.

Falls ein Hardwaregerät die Hauptursache darstellt, bemerkt der Administrator über einen kurzen Zeitraum u. U. einen deutlichen Anstieg des Werts für „DPC-Zeit (%)“. Dies tritt häufig auf, wenn neue Hardware installiert wurde oder Treiber aktualisiert wurden. Wenn der Administrator das Problem auf ein Problem mit der Hardware oder einem Gerätetreiber zurückführen kann, sollte es zusammen mit dem Anbieter gelöst werden.

Wenn Sie ein Multiprozessorsystem verwalten, in dem Interrupts nicht symmetrisch verteilt werden, kann die Verteilung der Prozessorauslastung häufig durch Hinzufügen von Netzwerkadaptern verbessert werden, sodass für jeden Prozessor ein Adapter zur Verfügung steht. Im Allgemeinen fügen Sie nur dann Adapter hinzu, wenn der Durchsatz des Systems verbessert werden soll. Netzwerkadapter verursachen wie jede zusätzliche Hardware einen gewissen zusätzlichen Verwaltungsaufwand. Ist einer der Prozessoren aber nahezu ständig aktiv (d. h. „Prozessorinformationen\ Prozessorzeit (%) = 100“) und verbringt mehr als die Hälfte dieser Zeit mit dem Verarbeiten von DPCs (d. h. „Prozessorinformationen\ DPC-Zeit > 50“), lässt sich die Systemleistung durch das Hinzufügen eines Adapters wahrscheinlich verbessern (sofern die verfügbare Netzwerkbandbreite nicht bereits ausgeschöpft ist).

Wenn eine Anwendung die Hauptursache darstellt, sind DPCs wahrscheinlich durch eine Anwendung blockiert. Diese Anwendung wiederum hat einen Aufruf ausgegeben, dessen Ausführung beträchtliche Zeit in Anspruch nimmt. In dieser Zeit werden DPCs blockiert und in eine Warteschlange eingereiht. Zur Ermittlung der spezifischen Anwendung, die die Hauptursache für das Leistungsproblem darstellt, sind erweiterte Leistungsüberwachungs-, Ablaufverfolgungs- und Diagnoseverfahren erforderlich.

Element properties:

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

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.10.0.LogicalProcessor.PercentDPCTime" Accessibility="Public" Enabled="false" Target="ServervNext!Microsoft.Windows.Server.10.0.LogicalProcessor" 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/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% DPC Time</CounterName>
<ObjectName>Processor</ObjectName>
<InstanceName>$Target/Property[Type="ServervNext!Microsoft.Windows.Server.10.0.LogicalProcessor"]/PerfmonInstance$</InstanceName>
<Frequency>120</Frequency>
<Threshold>15</Threshold>
<Direction>greaterequal</Direction>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>