Windows で割り込みの原因を調べるにはどうすればよいでしょうか?

Windows で割り込みの原因を調べるにはどうすればよいでしょうか?

プロセッサ % 割り込み時間が高いサーバー (Windows 2003 および 2008) に時々遭遇します。割り込みの原因となっているプログラムまたはデバイスを確認する方法はありますか?

答え1

ドキュメントを詳しく調べた後(ここにある他の回答に基づいて)、最終的に次のプロセスを使用しました。

  1. 問題のETWログをキャプチャする

    これを行う最も簡単な方法は、Windows パフォーマンス レコーダーいつ初めて登場したのかはわかりませんが、最近のバージョンの Windows には組み込まれているようです。プロファイルを に設定しますCPU usage

    Windows パフォーマンス レコーダー

    または、管理者特権のコマンド プロンプトを使用して、それが含まれているフォルダーに移動し、コマンド ライン ツール xperf を使用します。

    xperf -on base+interrupt+dpc
    

    注意: Process Monitor または ETW を使用するその他のアプリを閉じる必要があります。閉じないと、次のエラーが発生します。 xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).

  2. トレースを停止/ログを保存する

    xperf -d interrupt_trace.etl
    
  3. トレースをWindows Performance Analyzer(Windows パフォーマンス ツールキットの一部) で開きます。代わりに を使用することを記載している箇所もありますxperfview

  4. 展開Computation-> CPU Usage (Sampled)-> DPC and ISR Usage by Module, Stack、右クリックしてadd graph to analysis view

    Windows パフォーマンス アナライザー

  5. これは問題のドライバーを正確に示しています。この場合、HDAudBus.sys は割り込みによって CPU の 10.82% を一定に使用しており、これはまさに Process Explorer が示していた内容です。

答え2

低レベルのシステムツールを扱うことができる場合;

Windows パフォーマンス アナライザー (WPA)

Windows Performance Analyzer (WPA) は、Microsoft Windows オペレーティング システムおよびアプリケーションの詳細なパフォーマンス プロファイルを作成するために使用されるパフォーマンス監視ツールのセットです。

xperf の使い方を学んだら、以下を確認してください。

DPC/ISRアクション

DPC/ISR アクションは、DPC と ISR に関するさまざまなメトリックをまとめたテキスト レポートを生成します。このアクションの使用方法は次のとおりです。

コードをコピー -a dpcisr [-dpc -isr -summary -interval [n] -bucket [n] -range T1 T2 ]

オプション

説明

dpc

DPC のみの統計情報を表示

イスラ

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 種類のレポートすべてが印刷されます。

答え3

以下に、チュートリアル、スクリーンショット、関連ツールのダウンロード リンクを含む、これを行う方法に関する最良の記事を示します。

http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/

答え4

2つの素晴らしいツールはレイテンシーモンそしてDPC レイテンシー チェッカー

関連情報