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

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

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

ホットスポット解析には 2 つのサンプリング・ベースの収集モードがあります。

インテル® VTune™ プロファイラーは、インテル® VTune™ Amplifier の後継バージョンであり、名称が変更されました。

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

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

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

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

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

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

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

  • スタック情報を収集するハードウェア・イベントベース・サンプリングを実行できない場合、[スタックを収集] オプションを無効にして収集を実行します。収集したハードウェア・イベントベースのサンプリング・データをスタックと関連付けるには、ユーザーモード・サンプリングで個別のホットスポット解析を実行します。

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

解析の設定と実行

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

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

  1. インテル® VTune™ プロファイラーの [ようこそ] 画面の (スタンドアロン GUI)/ (Visual Studio* IDE) [解析の設定] ボタンをクリックします。

  2. [どのように] ペインの解析ツリーから [ホットスポット] 解析を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

    [詳細] ボタン

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

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

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

データを表示

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

次にすることは?

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

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

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

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

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

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

関連情報