DPC 時間の割合を監視します。
システムの DPC 時間の割合 (Processor Information\% DPC Time\_Total) がしきい値を超えました。 システム全体のパフォーマンスが著しく低下する可能性があります。その場合は、オペレーティング システムとアプリケーションのパフォーマンスが低下します。
% DPC Time は、プロセッサが遅延プロシージャ呼び出し (DPC) の受け取り、処理に費やした時間の割合です。 DPC は標準割り込みより低い優先順位で実行される割り込みです。 高い % DPC Time 値が一定して続く場合は、プロセッサがボトルネックになっているか、アプリケーションまたはハードウェアに関連する問題によってシステムのパフォーマンスが全体的に著しく低下している可能性があります。
高い % DPC Time 値は、次の 1 つまたは複数の原因によって引き起こされることがあります。
プロセッサのボトルネック
ソフトウェアに関連する問題
ハードウェアまたはデバイス ドライバーに関連する問題
高い DPC 率の根本原因を特定するには、次の手順に従います。
割り込みと DPC の処理に費やしたプロセッサ時間の割合を監視します。 これを行うには、システム モニターを使用して次のカウンターをリアル タイムで監視します。
Processor Information\% Processor Time
Processor Information\% Interrupt Time
Processor Information\% DPC Time
プロセッサ インスタンスの実行中に % Processor Time が持続して 85% を超え、その中で割り込みや DPC の処理に費やされる時間の割合が 15% を超えている場合は、プロセッサがパフォーマンス ボトルネックの原因になっている可能性があります。 このボトルネックは、コンピューターのプロセッサをアップグレードするか、プロセッサを追加することで対処できます。
プロセッサ実行中の % Processor Time が持続して 85% 未満であり、その中で割り込みや DPC の処理に費やされる時間の割合が 15% を超えている場合は、パフォーマンスの問題がアプリケーションとハードウェアのいずれかに関する問題の結果である可能性があります。
ハードウェア デバイスが根本原因である場合は、% DPC Time が短時間で著しく増加しているはずです。 これは、新しいハードウェアをインストールしたとき、またはドライバーをアップグレードしたときに多く発生します。 問題がハードウェアまたはデバイス ドライバーによるものと特定できる場合は、ベンダーと協力して対処してください。
割り込みを対称的に分散しないマルチプロセッサ システムを管理している場合は、ネットワーク アダプターを追加して、プロセッサ 1 台あたりアダプターを 1 台にすると、プロセッサの負荷分散を向上することができます。 一般に、アダプターはシステムのスループットを向上させる必要がある場合にのみ追加します。 ネットワーク アダプターには、ほかのハードウェアと同様に、固有のオーバーヘッドがあります。 ただし、プロセッサの 1 つがほとんど常にアクティブな状態 (つまり、Processor Information\ % Processor Time = 100) で、そのプロセッサ時間の半分以上を DPC の処理に費やしている (Processor Information\ % DPC Time > 50) 場合は、利用可能なネットワーク帯域幅がすでに飽和状態になっていなければ、通常はアダプターの追加によってシステム パフォーマンスが向上します。
アプリケーションが根本原因の場合は、ほとんどの場合、完了に非常に長い時間がかかっている呼び出しを発行したアプリケーションによって、DPC がブロックされています。 この間、DPC はブロックされ、キューに入れられます。 根本原因となっているアプリケーションを特定するには、上級のパフォーマンス、トレース、および診断を実行して、パフォーマンスに関する問題を引き起こしているアプリケーションを特定する必要があります。
Target | Microsoft.Windows.Server.6.2.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.6.2.OperatingSystem.TotalDPCTime" Accessibility="Public" Enabled="false" Target="WindowsServer!Microsoft.Windows.Server.6.2.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.6.2.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>