web-dev-qa-db-ja.com

過剰なWindowsカーネルモードのCPU使用率を分析するにはどうすればよいですか?

私のWindows XPマシンは最近起動しました 半フリーズ 数分の使用後の奇妙な再起動ごとに(異なるプログラム/追加のprgはまったく起動しません)。


更新:ProcessExplorerでもう少し詳細を取得できるようになりました。これは2コアCPUであり、100%のカーネル使用率は1コアのみです。プロセスリストには、DPC-遅延プロシージャコールが50%(1つのコアで100%)で表示されます。だから問題は今です:** DPCとは何ですか?どうすれば修正できますか?


次の更新:OKIES ... using this and that xperfを取得できましたWindows XPで実行されており、取得したサンプルダンプは、Win7ラップトップでも問題なく表示されます。はい、Windows XPで取得されたダンプを表示するには、Win7/Vistaコンピューターが必要です。しかし、私は今次の問題に直面しています、xperfトレースを有効にできますxperf -on Latencyと、xperfトレースがオンのときに問題が再発するようになりましたが、DPCが100%になるとすぐに、Windowsは新しいプロセスを開始しません(または起動が終了しない)(開いている例:cmdウィンドウは正常に応答し続けますが、呼び出しようとするすべてのexeはハングします(dirは、cmdコマンドであるため、問題なく動作します)-CreateProcessがカーネルの一部でハングしているとしか想定できません)。さて、新しいプロセスを起動できないとは、xperf -d dumpfile.etlを実行できないことを意味します。これは、をcmdウィンドウに入力すると、 ハングするだけです

ですから、ここでは運が悪いようです。手動でドライバーを無効にするよりも、リグ全体を破棄したいです... :-)

他のアイデアはありがたいです!


つまり、Windowsは理論的には応答性を維持していましたが(たとえば、マウスカーソルが正常に移動し、クリックでき、クリックが最終的に認識されました)、ユーザーが実行したアクションは数分後にのみ応答しました(文字通り)。

例:キーボードのNum-lockキーを押すと、通常、キーボードのNum-lockLEDが切り替わります。これは私の半冷凍機にも当てはまりますが、1、2分後です。

あるとき、なんとか起動しました Process Explorer 数分後、システム情報グラフは、赤い線(カーネルモード)で100%のCPU使用率を明確に示し、緑の線はゼロのままでした。この状態では、画面上でグラフは更新されたままですが、機械を操作できなくなりました。 (まあ、クリックするたびに数分待つ気がない限り。)

ですから、この動作を確認する前ではなく、何週間もこのマシンに新しいものをインストールしなかったので、問題は何であるのか疑問に思っています。 (再起動すると役立つ場合があります。マシンが長期間使用可能になる前に、2回目または3回目の再起動が必要になる場合があります。)

さて、どうすればwhatが実際に過剰なカーネルモードの使用を引き起こしているのかを知ることができますか?


注:これは sysinternalsフォーラム にも投稿されています。

8
Martin

LatencyMon( http://www.resplendence.com/latencymon )などのツールを使用して、どのDPCルーチンがフリーズを引き起こしているかを確認できます。合計時間が最も長いDPCルーチンを探すだけです。

2
Zero3