DPC 時間の合計割合

Microsoft.Windows.Client.Vista.OperatingSystem.TotalDPCTime (UnitMonitor)

DPC 時間の割合を監視します。

Knowledge Base article:

概要

システムの % PDC Time (Processor\% DPC Time\_Total) がしきい値を超えました。全体的なシステムのパフォーマンスが著しく低下する可能性があります。これによって、オペレーティング システムとアプリケーションのパフォーマンスが低下します。

% DPC Time は、サンプリング間隔でプロセッサが遅延プロシージャ呼び出し DPC の受け取り 処理に費やした時間の割合をパーセントで表示します。DPC は標準割り込みより低い優先順位で実行される割り込みです。高い % DPC Time 値が継続する場合は、プロセッサがボトルネックになっているか、アプリケーションまたはハードウェアに関連する問題によって、全体的なシステム パフォーマンスが大きく低下している可能性があります。

原因

高い % DPC Time 値は、次の 1 つまたは複数の原因によって引き起こされることがあります。

解決方法

高い DPC 率の根本原因を特定するには、次の手順に従います。

割り込みと DPC の処理に費やしたプロセッサ時間の割合を監視します。これを行うには、システム モニタを使用して次のカウンタをリアル タイムで監視します。

% Interrupt Time および % DPC Time カウンタの値を、各プロセッサ インスタンスの Processor\% Processor Time と比較します。

プロセッサ インスタンスの実行中に % Processor Time が持続して 85% を超え、その中で割り込みや DPC の処理に費やされる時間の割合が 15% を超えている場合は、プロセッサがパフォーマンス ボトルネックの原因になっている可能性があります。このボトルネックは、コンピュータのプロセッサをアップグレードするか、プロセッサを追加することで対処できます。

プロセッサ実行中の % Processor Time が持続して 85% 未満であり、その中で割り込みや DPC の処理に費やされる時間の割合が 15% を超えている場合は、パフォーマンスの問題がアプリケーションとハードウェアのいずれかに関する問題の結果である可能性があります。

ハードウェア デバイスが根本原因である場合、% DPC Time が短時間で大きく増加します。これは、新しいハードウェアをインストールしたとき、またはドライバをアップグレードしたときに多く発生します。問題がハードウェアまたはデバイス ドライバによるものと特定できる場合は、ベンダと協力して対処してください。

割り込みを対称的に分散しないマルチプロセッサ システムを管理している場合は、各プロセッサに 1 つのアダプタとなるようにネットワーク アダプタを追加することで、多くの場合、プロセッサの負荷分散を向上できます。一般に、アダプタはシステムのスループットを向上させる必要がある場合にのみ追加します。ネットワーク アダプタには、他のハードウェアと同様に、固有のオーバーヘッドがあります。ただし、プロセッサの 1 つがほぼ常時アクティブ状態 (つまり、Processor:% Processor Time = 100) で、そのプロセッサ時間の半分以上を DPC の処理に費やしている (Processor:% DPC Time > 50) 場合は、利用可能なネットワーク帯域幅が既に飽和状態になっていなければ、通常はアダプタの追加によってシステム パフォーマンスが向上します。

アプリケーションが根本原因の場合は、ほとんどの場合、完了に非常に長い時間がかかっている呼び出しを発行したアプリケーションによって、DPC がブロックされています。この間、DPC はブロックされ、キューに入れられます。根本原因となっているアプリケーションを特定するには、上級のパフォーマンス、トレース、および診断を実行して、パフォーマンスに関する問題を引き起こしているアプリケーションを特定する必要があります。

Element properties:

TargetMicrosoft.Windows.Client.Vista.OperatingSystem
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Instance NameProcessor
Counter Name\% DPC Time
Frequency120
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.AverageThreshold
RemotableTrue
AccessibilityPublic
Alert Message
DPC 時間の合計割合が高すぎます
Processor\\% DPC Time\_Total パフォーマンス カウンタのしきい値を超えました。しきい値を超えた値は、次のとおりです。 {0}.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Client.Vista.OperatingSystem.TotalDPCTime" Accessibility="Public" Enabled="true" Target="Vista!Microsoft.Windows.Client.Vista.OperatingSystem" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.AverageThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Client.Vista.OperatingSystem.TotalDPCTime.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Value$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% DPC Time</CounterName>
<ObjectName>Processor</ObjectName>
<InstanceName>_Total</InstanceName>
<Frequency>120</Frequency>
<Threshold>95</Threshold>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>