インテル® VTune™ Amplifier 2018 ヘルプ

高精度の CPU 時間データ収集

ユーザーモード・サンプリングとトレース結果で高精度の CPU 時間データを取得するようにインテル® VTune™ Amplifier を設定します。

デフォルトでは、インテル® VTune™ Amplifier は OS のスケジューラー間隔に基づいて CPU 時間を検出します。そのため、OS のスケジューラー間隔よりも短い実行時間のターゲット (ビデオデコーダーのフレーム単位の計算など) では CPU 時間の値が正しくないことがあります。

正確な CPU 時間情報の収集は、ユーザーモード・サンプリングとトレース解析タイプ (基本ホットスポット、並行性、およびロックと待機) で利用でき、管理者権限でインテル® VTune™ Amplifier とアプリケーションの両方を実行する場合、事前定義された解析設定ではデフォルトで有効になります。

より正確な精度で CPU 時間情報を収集するには、インテル® VTune™ Amplifier の Windows* 向けのイベントトレース (ETW) 機能を使用します。例えば、ETW なしでのサンプリングは 10ms ごとに収集されます。サンプルごとに、OS にスレッドが実行された時間を問い合わせて、サンプル間の差を計算して結果をデルタとして保存します。この仕組みで OS によって返される情報は粗粒度です。インテル® VTune™ Amplifier はデルタを総計してユーザー・インターフェイスに表示します。ETW が有効である場合、インテル® VTune™ Amplifier はほかのスレッドで実行に費やされた時間をフィルター処理して、ETW から取得したコンテキスト・スイッチ情報に基づいてそれぞれの 10ms サンプル内でモニターされたスレッドの時間を正確に計算します。この追加情報により、関数/スレッド向けの CPU 時間メトリックはさらに精度が向上します。

インテル® VTune™ Amplifier は Microsoft* NT Kernel Logger への排他的なアクセスが必要です。このため、このモードのインテル® VTune™ Amplifier の収集はシステムで 1 つのみ実行できます。ほかのツールはこのサービスを使用できません。インテル® VTune™ Amplifier が NT Kernel Logger にアクセスできない場合、このモードを無効にして収集が続行されます。

この収集タイプは、処理に長い時間がかかり、多くのディスク容量を必要とします。インテル® VTune™ Amplifier は、システムの設定とプロファイルされるターゲットに応じて、論理 CPU あたり 1 分につき最大 5 MB の一時データを生成します。

高精度の CPU 時間収集は、データ収集中にシステム上で何が実行されているかと、アプリケーションの構造に応じて有効または無効にします。特定の状況では、通常の精度と高精度の CPU 時間にはおよそ 3% の変動があります。しかし、特殊な状況ではその差は 30% または 40% に高まる可能性があります。スレッドが実行されていて、ETW なしで取得されるサンプルが 10ms ごとに非アクティブとなる場合、その結果の実行時間はかなり異なっている可能性があります。また、スレッドがほとんど非アクティブであり、ちょうど 10ms の間隔で実行される場合、(実際にはそうでなくても) ほとんどの実行時間を費やしているように見える可能性があります。最良の方法は、可能であれば自身でそれを検証することです。つまり、このオプションあり/なしで基本ホットスポット・データを収集して、その結果データを比較します。これにより、高精度の CPU 時間オプションを使用しなくても最適化には十分な精度の結果をもたらすか、このオプションを有効にするため管理者権限が必要であるかを知ることができます。しかし、高精度の CPU 時間の使用が何らかの理由により必須である場合、一般に、通常の基本ホットスポット・データ収集を使用するアプリケーションのパフォーマンス解析が有効です。

高精度の CPU 時間収集を無効にするには:

  1. ユーザーモード・サンプリングとトレース収集ベースの新しいカスタム解析を作成します。
  2. [Collect highly accurate CPU time (高精度の CPU 時間を収集)] オプションをオフにします。

関連情報