< 目次

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

ホットスポット解析を使用して、アプリケーション・フローを理解します。実行時間の大部分を占めるコード領域を特定します。これは、アルゴリズムの解析の出発点として使用されます。

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

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

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

インテル® VTune™ プロファイラーは、オーバーヘッドの少ない (約 5%) ユーザーモード・サンプリングとトレース収集を使用し、アプリケーションの実行速度を低下させることなく必要な情報を取得できます。データコレクター

  1. OS タイマーを使用してアプリケーションのプロファイルを作成します。
  2. プロセスを中断します。
  3. 10 ミリ秒のサンプリング間隔で、すべてのアクティブな命令アドレスのサンプルを収集します。
  4. 各サンプルの呼び出しシーケンス (スタック) をキャプチャーします。
インテル® VTune™ プロファイラーは、サンプリングされた命令ポインター (IP) を呼び出しシーケンスとともにデータ収集ファイルに保存します。解析後、インテル® VTune™ プロファイラーはこのデータを結果タブに表示します。呼び出しシーケンスを使用して統計的に収集された IP サンプルから、インテル® VTune™ プロファイラーはトップダウン・ツリー (呼び出しツリー) を表示できます。このデータを参照して、統計的に重要なコードセクションの制御フローを理解します。

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

インテル® VTune™ プロファイラーは、アプリケーション内の関数のリストを表示します。デフォルトでは、このリストは各関数に費やされた時間によって順序付けられますが、モジュール、スレッド、またはプロセスで並べ替えることもできます。また、これらの各関数の呼び出しスタックを表示して、ホットな関数がどのように呼び出されるかを理解できます。

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

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

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

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

解析の設定と実行

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    [詳細] ボタン

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

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

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

データを表示

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

次にすることは?

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

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

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

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

  5. インテル® Advisor のベクトル化とコード調査のパースペクティブを使用して、ベクトル化を修正し、コード固有の推奨事項を取得します。

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

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

関連情報