回答:
(ここの他の回答に基づいて)ドキュメントを掘り下げた後、これは私が使用したプロセスです:
問題のETWログをキャプチャします
これを行う最も簡単な方法は、Windows Performance Recorderを使用することです。いつ最初に登場したのかはわかりませんが、最近のバージョンのWindowsに組み込まれているようです。プロファイルをに設定しますCPU usage
。
または、昇格したコマンドプロンプトを使用して、それを含むフォルダーに移動し、コマンドラインツールxperfを使用します。
xperf -on base+interrupt+dpc
注、プロセスモニターまたはETWを使用する他のアプリを閉じる必要があります。そうしないと、次のエラーが表示されます。 xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).
トレースを停止/ログを保存
xperf -d interrupt_trace.etl
Windows Performance Analyzer
(Windows Performance Toolkitの一部)でトレースを開きます。xperfview
代わりに使用することに言及している場所もあります。
展開Computation
-> CPU Usage (Sampled)
-> DPC and ISR Usage by Module, Stack
、右クリックしてadd graph to analysis view
これは問題のドライバーを指し示していました。この場合、HDAudBus.sysは割り込みを介してCPUの一定の10.82%を使用していますが、これはまさにProcess Explorerが示していたものです。
低レベルのシステムツールを処理できる場合。
Windowsパフォーマンスアナライザー(WPA)は、Microsoft Windowsオペレーティングシステムおよびアプリケーションの詳細なパフォーマンスプロファイルを生成するために使用されるパフォーマンス監視ツールのセットです。
xperfの使用方法を学んだ後、チェックアウト;
DPC / ISRアクションは、DPCおよびISRに関するさまざまなメトリックを要約したテキストレポートを生成します。このアクションの使用法は次のとおりです。
コードのコピー-a dpcisr [-dpc -isr -summary -interval [n] -bucket [n] -range T1 T2]
オプション
説明
dpc
DPCのみの統計を表示する
isr
ISRのみの統計を表示する
概要
概要レポートを表示
間隔[dt]
dtの間隔の使用状況レポートを表示します。デフォルトは1秒です
バケット[dt]
dtの間隔のヒストグラムを表示します。デフォルトは2秒です
範囲T1 T2
T1とT2の間の遅延を表示する
If no data type is specified, default is to show report for both DPC
およびISR。レポートタイプが指定されていない場合、デフォルトでは3種類すべてのレポートが印刷されます。
チュートリアル、スクリーンショット、および関連ツールへのダウンロードリンクを含む、これを行う方法について見つけた最高の記事を次に示します。
http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/
Windows Process Explorerをご覧ください。
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
それが役立つはずです。
2つの優れたツールはLatencyMonとDPC Latency Checkerです。