2

この質問は、Windows Performance Toolkit の一部であるユーティリティ (Windows SDK 7.1 の一部) である xperf および xperfview に関するものです。

「スレッドごとの CPU サンプリング」と「スレッドごとの CPU 使用率」の 2 つのグラフを比較すると、いくつかの違いがわかりません。例として audiodg.exe を使用します。

  1. Threads プルダウンでは、CPU Sampling チャートに audiodg のスレッドが 1 つだけあります。CPU 使用率チャートには、いくつかの audiodg スレッドが表示されます。

  2. どちらのグラフにも「% 使用率」とマークされた Y 軸がありますが、測定値は異なります。通常、特定のスレッドの使用率は、CPU サンプリング グラフの方が CPU 使用率グラフよりも低くなります。

  3. CPU Sampling の要約テーブルには、各モジュール/プロセスの重みと % の重みが表示されます。シンボルをロードすると、audiodg プロセスをかなり深く掘り下げることができます。CPU Scheduling Aggregate Summary テーブル (CPU 使用率グラフから起動) には、CPU 使用率と % CPU 使用率が表示されます -- 重みは使用できません。(逆に、CPU サンプリング サマリー テーブルには CPU 使用率はありません。) audiodg を深く掘り下げることはできません。メイン スレッドといくつかの ntdll.dll スレッドしか表示されません。

  4. [% CPU 使用率] 列と [% 重み] 列のプロセスの数値は常に異なります。場合によっては、75% 以上異なることもあります。

だから私の質問...ここでのCPU使用率の信頼できる尺度は何ですか? CPU 使用率の数値は CPU サンプルから導き出されたものではありませんか? 数字は何らかの形で関連しているはずではありませんか?

4

1 に答える 1

4

Xperfはこれを少し混乱させます.これは何が起こっているのかについての私の理解です:

  • PROFILE カーネル フラグで有効化された CPU サンプル データ。CPU サンプル データは一定の間隔で収集され、その時点で CPU が行っていたことに関する情報を記録します (たとえば、サンプル時のプロセス、スレッド ID、コールスタックなど)。
  • CSWITCH カーネル フラグで有効化されたコンテキスト スイッチ データ。これは、発生したすべてのコンテキスト スイッチに関するデータを記録します (たとえば、誰がスイッチ イン/アウトしたか、およびコールスタック)。

スレッドごとのCPU サンプリングは、スレッドごとに記録されたプロファイル イベントの数を示し、トレース期間中の一定の時間間隔で集計されます。たとえば、audiodg が 2 秒間 10% の時間実行された場合、その時間で約 10 の「% 使用率」が見られると予想されます。ただし、これはサンプリングに基づいているため、各サンプル イベントで、別のプロセスのスレッドがたまたま実行されていた可能性があります。つまり、サンプル イベントによって 10% が「見逃された」ということです。

スレッドごとの CPU 使用率は、コンテキスト スイッチ データを使用して計算されます。「使用量」は、コンテキストが切り替えられてから、後で切り替えられるまでの時間です (もちろん、このデータは短い間隔で集計されます)。

各データには次の利点があります。

  • CPU サンプリングは、スレッドの実行中にコール スタックを収集するため、サンプル時にスレッドがをしているかを実際に教えてくれます。コンテキスト スイッチ情報は、スレッドがいつ切り替えられるかを通知するだけで、その間は何も通知しません。
  • コンテキスト スイッチ情報により、各スレッドの実行にかかった時間を正確に知ることができます。 このデータは正しいです。もちろん、サンプリングは確率的なものにすぎません。

あなたの質問に答えるために、CPU 使用率チャートは、各スレッドの実行時間を理解する上で「より正確」です。ただし、サンプリング データの使用を除外しないでください。スレッドが実際にどこで時間を費やしていたかを理解するのにはるかに役立つ可能性があるからです。CPU サンプリング データの場合、スタックが表示されるため、サマリー テーブルの方が価値があります。CPU 使用率のデータについては、要約表よりもグラフの方がおそらく役に立ちます。

それが役立つことを願っています!

于 2011-02-06T20:37:11.030 に答える