監視 DPC 時間百分比。
系統的 % DPC Time (Processor Information\% DPC Time\_Total) 已超過閾值。整體系統效能可能會明顯下降,進而造成作業系統與應用程式效能不良。
% DPC Time 是處理器花費在接收與處理延遲程序呼叫 (DPC) 的時間百分比。DPC 是一種插斷,它的執行優先順序比標準插斷低。若 % DPC Time 持續偏高,表示處理器可能發生瓶頸,或發生可能致使整體系統效能顯著下降的應用程式或硬體相關問題。
較高的 % DPC Time 值可能是由下列一或多個原因造成:
處理器瓶頸
軟體相關問題
硬體或裝置驅動程式相關問題
若要判斷 DPC 速率過高的根本原因,請執行下列程序。
觀察花費在處理插斷與 DPC 的處理器時間比例。其方法是使用系統監視器即時監視下列計數器:
Processor Information\% Processor Time
Processor Information\% Interrupt Time
Processor Information\% DPC Time
若處理器執行個體的處理器時間百分比持續高於 85%,且有 15% 以上的時間花費在處理插斷和/或 DPC 上,表示處理器可能就是效能瓶頸的根源。您可以升級電腦,或在電腦上新增額外的處理器來解決此瓶頸。
若處理器的 % Processor Time 持續低於 85%,且有 15% 以上的時間花費在處理插斷和/或 DPC 上,表示效能問題可能是由應用程式或硬體相關問題所引起。
若根本原因在於硬體裝置,系統管理員將會發現 % DPC Time 可能會在短時間內大幅增加。安裝新硬體或升級驅動程式時通常會發生此問題。若系統管理員確定問題就在硬體/裝置驅動程式問題,可與廠商共商解決此問題。
若您管理的多處理器系統未對稱分配插斷,通常可以新增網路介面卡,讓每個處理器使用一個介面卡,以改善處理器工作負載的分配。一般而言,僅在您要提高系統的輸送量時,才需要新增介面卡。與任何額外的硬體一樣,網路介面卡本身也會產生一些負荷。但其中如有任何處理器幾乎一直都在使用中 (亦即 Processor Information: % Processor Time = 100),而且有一半以上的時間都花費在服務 DPC 上 (若 Processor Information: % DPC Time > 50),新增介面卡或可改善系統效能,但前提是可用網路頻寬尚未達到飽和。
如果根本原因在於應用程式,您將會發現應用程式發出的呼叫需要較長時間才能完成,因此造成 DPC 被封鎖。在這段時間內,DPC 將會被封鎖並放入佇列中。若要確定根本原因在於哪個應用程式,您必須執行進階效能追蹤與診斷以判定造成效能問題的確切應用程式。
Target | Microsoft.Windows.Server.10.0.OperatingSystem | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Instance Name | Processor Information | ||
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.10.0.OperatingSystem.TotalDPCTime" Accessibility="Public" Enabled="false" Target="ServervNext!Microsoft.Windows.Server.10.0.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.10.0.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 Information</ObjectName>
<InstanceName>_Total</InstanceName>
<Frequency>120</Frequency>
<Threshold>95</Threshold>
<Direction>greater</Direction>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>