ホットスポット解析を使用して、アプリケーションのフローを理解し、多くの実行時間を費やすコード領域 (ホットスポット) を特定します。これは、アルゴリズムの解析の出発点として使用されます。
ホットスポット解析には 2 つのサンプリング・ベースの収集モードがあります。
ユーザーモード・サンプリングは、高いオーバーヘッドが発生しますが、サンプリング・ドライバーを必要としません。インテル® VTune™ Amplifier 2019 以降では、基本ホットスポット解析に代わるものです。
ハードウェア・イベントベース・サンプリングは、オーバーヘッドは最小限ですが、サンプリング・ドライバーや Perf* をインストールする必要があります。インテル® VTune™ Amplifier 2019 以降では、高度なホットスポット解析に代わるものです。
インテル® VTune™ プロファイラーは、インテル® VTune™ Amplifier の後継バージョンであり、名称が変更されました。
インテル® VTune™ プロファイラーは、オーバーヘッドの少ない (約 5%) ユーザーモード・サンプリングとトレース収集を使用し、アプリケーションの実行速度を低下させることなく必要な情報を取得できます。データコレクターは、OS タイマーを使用してアプリケーションをプロファイルし、プロセスに割り込みをかけ、10 ミリ秒のサンプリング間隔でアクティブな命令アドレスのサンプルを収集して、それぞれのサンプルの呼び出しシーケンス (スタック) を取得します。インテル® VTune™ プロファイラーは、呼び出しシーケンスと呼び出し命令ポインター (IP) をデータ収集ファイルに保存し、このデータを解析して結果タブに表示します。呼び出しシーケンスを使用して統計的に収集された IP サンプルから、インテル® VTune™ プロファイラーはトップダウン・ツリー (呼び出しツリー) を表示できます。このデータを参照して、統計的に重要なコードセクションの制御フローを理解します。
ユーザーモード・サンプリングでは、コレクターはシステム全体のパフォーマンス・データは収集せず、アプリケーションのみに注目します。システムのパフォーマンスを解析するには、ハードウェア・イベントベース・サンプリング・モードを使用します。
インテル® VTune™ プロファイラーは、関数で費やされた時間順にアプリケーションの関数のリストを表示します。関数のコールスタックも表示するため、時間を費やしている関数がどのように呼び出されているか確認できます。
特定のプロセス、スレッドまたはモジュールで収集された多数のサンプルは、高いプロセッサー利用率と潜在的なパフォーマンスのボトルネックを意味します。一部のホットスポットは排除できますが、アプリケーション機能の根本にあるホットスポットは排除することはできません。
ハードウェア・イベントベース・サンプリング・モードは、イベントベース・サンプリング収集を使用し、システム上で実行されるすべてのプロセスを解析して、システム全体のパフォーマンスに関連する CPU 時間データを提供します。インテル® VTune™ プロファイラーは、関数で費やされた時間順にアプリケーションの関数のリストを作成します。デフォルトでは、ハードウェア・イベントベース・サンプリング・モードのホットスポット解析は、ホットスポットを収集する際に関数のコールスタックを取得しません。ただし、コールスタックの収集を有効にすると、アプリケーション・モジュールのスタックを解析できます。
スタック情報を収集するハードウェア・イベントベース・サンプリングを実行できない場合、[スタックを収集] オプションを無効にして収集を実行します。収集したハードウェア・イベントベースのサンプリング・データをスタックと関連付けるには、ユーザーモード・サンプリングで個別のホットスポット解析を実行します。
32 ビット Linux* システムでは、インテル® VTune™ プロファイラーはハードウェア・イベントベース・サンプリング・モードにドライバーを使用しない Perf* ベースの収集を使用します。
ホットスポット解析を設定して実行します。
必要条件: プロジェクトを作成します。
インテル® VTune™ プロファイラーの [ようこそ] 画面の (スタンドアロン GUI)/ (Visual Studio* IDE) [解析の設定] ボタンをクリックします。
[どのように] ペインの解析ツリーから [ホットスポット] 解析を選択します。
次のオプションを設定します。
[ユーザーモード・サンプリング] モード |
ホットスポットとコールスタック解析 (以前の基本ホットスポット) でユーザーモード・サンプリングとトレース収集を有効にする場合に選択します。この収集モードのサンプリング間隔は 10 ミリ秒に固定されています。サンプリング間隔を変更するには、[コピー] ボタンをクリックしてカスタム解析設定を作成します。 |
[ハードウェア・イベントベース・サンプリング] モード |
ホットスポット解析 (以前の高度なホットスポット) でハードウェア・イベントベース・サンプリング収集を有効にする場合に選択します。 この収集モードでは以下のオプションを設定できます。
注収集オプションを変更する場合、右にある [オーバーヘッド] 分布図に注意してください。選択したオプションに応じて、発生するオーバーヘッドは動的に変化します。 |
[追加のパフォーマンス情報を表示] チェックボックス |
ベクトル化など追加のパフォーマンス情報を取得して次のステップに進みます。このオプションは追加の CPU イベントを収集しますが、これにより多重化モードが有効になることがあります。 このオプションは、デフォルトで有効になります。 |
[詳細] ボタン |
この解析タイプのデフォルトの編集不可設定のリストを展開/折りたたみます。解析の設定を変更したり、追加の設定を有効にするには、既存の事前定義設定をコピーしてカスタム設定を作成する必要があります。インテル® VTune™ プロファイラーは、解析タイプ設定の編集可能なコピーを作成します。 |
[開始] ボタンをクリックして解析を実行します。
下部の [コマンドライン] ボタンを使用して、この設定のコマンドラインを生成できます。
データが収集されると、インテル® VTune™ プロファイラーは [CPU 利用率によるホットスポット] ビューポイントを開いて、次の解析ビューを表示します。
[サマリー] ウィンドウには、CPU 時間とプロセッサー利用率を解析する、アプリケーション全体の実行に関する統計情報が表示されます。
[ボトムアップ] ウィンドウには、ホットスポット関数のボトムアップ・ツリー、CPU 時間、および関数ごとの CPU 利用率が表示されます。
[トップダウン・ツリー] ウィンドウには、呼び出しツリー内のホットスポット関数、関数のみのパフォーマンス・メトリック (セルフ値)、および関数とその子関数のパフォーマンス・メトリック (合計値) が表示されます。
[呼び出し元/呼び出し先] ウィンドウには、選択した関数の親関数と子関数が表示されます。
[プラットフォーム] ウィンドウには、CPU と GPU 利用率、フレームレート、メモリー帯域幅、およびユーザータスク (対応するメトリックが収集されている場合 ) に関する詳細情報が表示されます。
グリッドで最も時間を消費する関数を特定し、ダブルクリックしてソース解析を行います。
ハイライト表示されている最もホットなコード行から始めて、ホットスポット・ナビゲーションを使用して重要な関数のソースを解析します。
ボトルネックを排除し、アプリケーションのパフォーマンスを改善するようにコードを変更します。
解析を再度実行して、比較モードで最適化の結果を確認します。
詳しい手順については、[サマリー] ウィンドウに表示される [ホットスポットの詳細] セクションを参照してください。このセクションには、標準のホットスポット・メトリックに加えて、収集されたメトリックに対するターゲットのパフォーマンス情報が含まれます。パフォーマンス上の問題が検出された場合、インテル® VTune™ プロファイラーはそのメトリック値にフラグを示し、問題を解決する次のステップを示す情報を表示します。
ホットスポット解析で示される情報は、シリアル・アプリケーションのチューニングにおいて重要ですが、並列アプリケーションのシリアル領域のチューニングにも有用です。ホットスポット解析データは、アプリケーションが何を行っているか理解し、チューニング対象のコードを特定するのに役立ちます。マルチコアシステムで実行される並列アプリケーションでは、スレッド化または HPC パフォーマンス特性の追加解析が必要かもしれません。