インテル® VTune™ プロファイラー・ユーザーガイド

CPU 利用率問題のホットスポット解析

ホットスポット解析を使用して、アプリケーションのフローを理解し、多くの実行時間 (ホットスポット) を費やしているコード領域を特定します。これは、アルゴリズムに解析の出発点として使用されます。

ホットスポット解析サマリー

インテル® VTune™ プロファイラーのホットスポット解析には、2 つのサンプリングベース収集モードがあります。

インテル® VTune™ Amplifier は、インテル® oneAPI ベース・ツールキット向けのバージョンからインテル® VTune™ プロファイラーに名称が変更されました。インテル® VTune™ プロファイラーは、スタンドアロン・バージョンとインテル® Parallel Studio XE またはインテル® System Studio に同梱されたバージョンが提供されます。

どのように動作するか: ユーザーモード・サンプリング

インテル® VTune™ プロファイラーは、オーバーヘッドの少ない (約 5%) ユーザーモード・サンプリングとトレース収集を使用し、アプリケーションの実行速度を低下させることなく必要な情報を取得できます。データコレクターは、OS タイマーを使用してアプリケーションをプロファイルし、プロセスに割り込みをかけ、10 ミリ秒のサンプリング間隔でアクティブな命令アドレスのサンプルを収集して、それぞれのサンプルの呼び出しシーケンス (スタック) を取得します。インテル® VTune™ プロファイラーは、呼び出しシーケンスと命令ポインター (IP) をデータ収集ファイルに保存し、このデータを解析して結果タブに表示します。呼び出しシーケンスを使用して統計的に収集された IP サンプルから、インテル® VTune™ プロファイラーはトップダウン・ツリー (呼び出しツリー) を表示できます。このデータを参照して、統計的に重要なコードセクションの制御フローを理解します。

ユーザーモード・サンプリングでは、コレクターはシステム全体のパフォーマンス・データは収集せず、アプリケーションのみを対象にします。システムのパフォーマンスを解析するには、ハードウェア・イベントベース・サンプリング・モードを使用します。

インテル® VTune™ プロファイラーは、関数で費やされた時間順にアプリケーションの関数のリストを表示します。関数のコールスタックも表示するため、時間を費やしている関数がどのように呼び出されているか確認できます。

特定のプロセス、スレッドまたはモジュールで多数のサンプルが収集されていると、プロセッサーの利用率が高くパフォーマンスのボトルネックである可能性があります。一部のホットスポットは排除できますが、アプリケーション機能の根本にあるホットスポットは排除することはできません。

どのように動作するか: ハードウェア・イベントベース・サンプリング

ハードウェア・イベントベース・サンプリング・モードは、イベントベース・サンプリング収集を使用し、システム上で実行されるすべてのプロセスを解析して、システム全体のパフォーマンスに関連する CPU 時間データを提供します。インテル® VTune™ プロファイラーは、関数で費やされた時間順にアプリケーションの関数のリストを作成します。デフォルトでは、ハードウェア・イベントベース・サンプリング・モードでのホットスポット解析は、ホットスポットを収集する際に関数のコールスタックを取得しません。ただし、[コールスタック] オプションを選択すると、アプリケーション・モジュールのスタックを解析できます。

32 ビット Linux* システムでは、インテル® VTune™ プロファイラーはハードウェア・イベントベース・サンプリング・モードにドライバーを使用しない Perf ベースの収集を使用します。

解析の設定と実行

ホットスポット解析を設定して実行します。

必要条件: プロジェクトを作成します

  1. (スタンドアロン GUI)/ (Visual Studio* IDE) でインテル® VTune™ プロファイラーのツールバーにある [解析の設定] ボタンをクリックします。

    [解析の設定] ウィンドウが開きます。

  2. [どのように] ペインで、 実行する解析タイプを選択ボタンをクリックして、ホットスポット解析を選択します。

  3. 次のオプションを設定します。

    ユーザーモード・サンプリング・モード

    ホットスポットとコールスタック解析 (以前の基本ホットスポット) でユーザーモード・サンプリングとトレース収集を有効にする場合に選択します。この収集モードのサンプリング間隔は 10 ミリ秒に固定されています。サンプリング間隔を変更するには、[コピー] ボタンをクリックしてカスタム解析設定を作成します。

    ハードウェア・イベントベース・サンプリング・モード

    ホットスポット解析 (以前の高度なホットスポット) でハードウェア・イベントベース・サンプリング収集を有効にする場合に選択します。

    この収集モードでは以下のオプションを設定できます。

    • [CPU サンプリング間隔 (ミリ秒)] では、CPU サンプリングの間隔をミリ秒単位で指定します。ハードウェア・イベントベース・サンプリング・モードで指定可能な値は、0.01 - 1000 です。デフォルトで 1 ミリ秒が使用されます。

    • [コールスタック] は、コールスタックとスレッドのコンテキスト・スイッチの高度な解析を有効にします。

    収集オプションを変更する場合、右にあるオーバーヘッド分布図に注意してください。選択したオプションにより、発生するオーバーヘッドは動的に変化します。

    [追加のパフォーマンス情報を表示] チェックボックス

    ベクトル化の効率など追加のパフォーマンス情報を取得して次のステップに進みます。このオプションは追加の CPU イベントを収集しますが、これにより多重化モードが有効になることがあります。

    このオプションはデフォルトで有効になります。

    [詳細] ボタン

    この解析タイプのデフォルトの編集不可設定のリストセクションを、展開/折りたたみます。解析の設定を変更または設定の追加を有効にするには、既存の事前定義設定をコピーしてカスタム設定を作成する必要があります。インテル® VTune™ プロファイラーは、解析タイプ設定の編集可能なコピーを作成します。

  4. 解析を実行するには [開始] ボタンをクリックします。

下部にある [コマンドライン...] ボタンを使用して、この設定のコマンドラインを生成できます。

データを表示

データが収集されると、インテル® VTune™ プロファイラーは [CPU 利用率によるホットスポット] ビューポイントを開いて、次の解析ビューを表示します。

次にすることは?

  1. グリッドで最も時間を費やしている関数を特定し、ダブルクリックしてソース解析を行います。

  2. ハイライト表示されている最もホットなコード行から始めて、ホットスポット・ナビゲーションを使用して重要な関数のソースを解析します。

  3. ボトルネックを排除し、アプリケーションのパフォーマンスを改善するようにコードを修正します。

  4. 解析を再度実行して、比較モードで最適化の結果を確認します。

詳しい手順については、[サマリー] ウィンドウに表示される [ホットスポットの詳細] セクションを参照してください。このセクションには、標準のホットスポット・メトリックに加えて、収集されたメトリックに対するターゲットのパフォーマンス情報が含まれます。パフォーマンス上の問題が検出された場合、インテル® VTune™ プロファイラーはそのメトリック値にフラグを示し、問題を解決する次のステップの情報を示します。

ホットスポット解析で示される情報は、シリアル・アプリケーションのチューニングに役立ちますが、並列アプリケーションのシリアル領域のチューニングにも有用です。ホットスポット解析データは、アプリケーションが何を行っているか理解し、チューニング対象のコードを特定するのに役立ちます。マルチコアシステムで実行される並列アプリケーションでは、追加でスレッド化または HPC パフォーマンス特性解析が必要かもしれません。

関連情報