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

ウィンドウ: サマリー - ホットスポット

インテル® VTune™ プロファイラーによるパフォーマンス解析の開始点として [サマリー] ウィンドウを使用します。このウィンドウにアクセスするには、結果タブの [サマリー] サブタブをクリックします。

解析タイプに応じて、ホットスポットビューポイントで、[サマリー] ウィンドウは次のアプリケーション・レベルの統計を提供します。

[クリップボードへコピー] ボタンをクリックして、選択したサマリーセクションの内容をクリップボードへコピーします。

解析メトリック

[サマリー] ウィンドウは、アプリケーション実行の全体を調査するのに役立つ CPU メトリックの一覧を表示します。クエスチョン・マーク アイコンにマウスを移動すると、メトリックを説明するポップアップ・ヘルプが表示されます。パフォーマンスの問題としてフラグが示されるメトリックにカーソルを移動して、詳しい説明を表示します。

経過時間のメトリックを指標として、最適化前後の結果を比較するベースラインを求めます。マルチスレッド・アプリケーションでは、CPU 時間はすべてのアプリケーション・スレッドの CPU 時間の合計であるため、CPU 時間は経過時間とは異なります。

特定の解析タイプでは、有効な CPU 時間は CPU 利用率ごとに次のように分類されます。

利用率タイプ

説明

アイドル

アイドル利用率。デフォルトでは、CPU 時間の消費が多くない場合 (1 CPU の 50% 未満)、CPU 利用率などはアイドルとして分類されます。

低い

低い利用率。デフォルトでは、低い利用率は同時に実行される CPU 数が、ターゲットの CPU 利用率の 50% 未満の状態です。

OK

許容 (OK) できる利用率。デフォルトでは、OK となる利用率は同時に実行される CPU 数が、ターゲットの CPU 利用率の 51% ~ 85% の状態です。

理想的

理想的な利用率。デフォルトでは、理想的な利用率は同時に実行される CPU 数が、ターゲットの CPU 利用率の 86% ~ 100% の状態です。

オーバーヘッドとスピン時間メトリックが示される場合 (解析による)、アプリケーションが使用する同期とスレッド化ライブラリーが CPU 時間にどのように影響しているか理解できます。これらのカテゴリーのメトリックを調査して、システム同期 API、インテル® TBB、および OpenMP* などの同期やスレッド化ライブラリーの呼び出しで、アプリケーションが時間を費やしている場所を特定します。インテル® VTune™ プロファイラーでは、コードが CPU 時間を消費する次のような非効率性を確認できます。

インバランスまたはシリアルスピン時間

インバランスまたはシリアルスピン時間は、ワーキングスレッドが同期バリアでスピンして CPU リソースを消費している CPU 時間です。これは、負荷インバランス、すべてのワーキングスレッド間の不十分な並行性、またはシリアル化された実行のバリアでの待機によって引き起こされる可能性があります。

ロック競合スピン時間

インバランスまたはシリアルスピン時間は、ワーキングスレッドがロックでスピンして CPU リソースを消費している CPU 時間です。高いメトリック値は、過度に競合する同期オブジェクトと非効率な並列処理の可能性を示します。過度な同期を避けるには、可能であればリダクション、アトミック操作、またはスレッドローカル変数を使用することを検討してください。

その他のスピン時間

このメトリックは、スレッド化ランタイム・ライブラリー内の未分類のスピン時間を示します。

生成のオーバーヘッド時間

生成時間は、並列ワークを開始する際にランタイム・ライブラリーが費やす CPU 時間です。

スケジュールのオーバーヘッド時間

スケジュール時間は、ワークをスレッドに割り当てる際にランタイム・ライブラリーが費やす CPU 時間です。この時間が大きい場合、ワークを粗いチャンクにすることを検討してください。

リダクションのオーバーヘッド時間

リダクション時間は、ループまたはリダクション操作でランタイム・ライブラリーが費やす CPU 時間です。

アトミックのオーバーヘッド時間

アトミック時間は、アトミック操作でランタイム・ライブラリーが費やす CPU 時間です。

その他のオーバーヘッド時間

このメトリックは、スレッド化ランタイム・ライブラリー内の未分類のオーバーヘッド時間を示します。

解析タイプに応じて、インテル® VTune™ プロファイラーはインテル® アーキテクチャーで定義されるしきい値と解析したメトリックを比較し、アプリケーション全体のパフォーマンスの問題としてメトリックをピンク色でハイライト表示することがあります。そのような値の問題に関する説明は、重要なメトリックの下に表示されることも、ハイライト表示されたメトリックにマウスを移動して表示することもできます。

リストの各メトリックはハイパーリンクとして表示されます。ハイパーリンクをクリックして [ボトムアップ] ウィンドウを開き、選択したメトリックでグリッドをソートするか、グリッドで選択したオブジェクトをハイライト表示します。

上位ホットスポット

インテル® VTune™ プロファイラーは、最もパフォーマンス・クリティカルな関数と CPU 時間を上位ホットスポットとして表示します。これらの関数を最適化することで、一般的にアプリケーション全体のパフォーマンスが向上します。リストの関数をクリックすると、その関数の [ボトムアップ] ウィンドウが開きます。

グレイアウトされた [その他] のモジュールがある場合、この表に含まれないアプリケーションのほかのすべての関数の合計値が示されます。

このリストのオブジェクト数を変更して、ビューポイント設定ファイルを介してメトリックを表示します。

内部を調査

解析をデフォルトの追加のパフォーマンス情報を表示オプションで実行した場合、[サマリー] ビューにはハードウェア利用やベクトル化の効率など、ターゲットの追加メトリックを示すインサイトセクションが含まれます。この情報は、パフォーマンス解析の次のステップを明らかにし、最適化作業に集中すべき場所を特定するのに役立ちます。

上位タスク

ここでは、タスク API でマークしたコード領域、Ftrace イベント、Atrace イベント、インテル® メディア SDK プログラム、OpenCL* カーネルなどを監視するためシステムタスクが有効化され、タスクが最も実行に時間を費やしたタスクのリストが示されます。

表のタスクタイプをクリックすると、[タスクタイプ] の粒度でグループ化されたグリッドビュー (ボトムアップやイベントカウント) が表示されます。詳細は、「タスク解析」を参照してください。

平均帯域幅

ここでは、プロファイル・セッション全体で平均化されたパッケージあたりの合計メモリー帯域幅、リード帯域幅、ライト帯域幅を示します。このデータは、解析タイプでプラットフォーム全体のメトリックを収集した場合の使用できます。例えば、CPU/GPU 並行性など。

この表の値がプラットフォームの利用可能な帯域幅の上限に近い場合、アプリケーションのパフォーマンスはメモリー帯域幅によって制限されていると言えます。プラットフォームの最大帯域幅を測定するには、次のベンチマークを使用できます。インテル® メモリー・レイテンシー・チェッカー

CPU 利用率の分布図

CPU 利用率の分布図を調査して、特定数の CPU が同時実行されているウォールクロック時間の比率を示します。

操作 説明

垂直バー

バーにカーソルを移動して、アプリケーションが論理 CPU 数で費やした経過時間を特定できます。

ターゲットの利用率

ターゲットの CPU 利用率を特定。この数は論理 CPU 数と等価です。この数値を最適化の目標とします。

平均 CPU 利用率

実行全体で並列に実行されている CPU の平均数を特定します。これは、CPU 時間/経過時間 で計算できます。

どの時点の CPU 利用率も、使用可能な論理 CPU 数を超えることはできません。システムがオーバーサブスクライブ状態で、CPU を実行するスレッドがさらにある場合でも、CPU 利用率は CPU 数と同じです。

この数値をパフォーマンス測定のベースラインとして使用します。この値を論理 CPU 数に近づけると、CPU 時間がスピンする場合を除いて良好であると言えます。

利用率表示バー

それぞれの利用率レベルが、同時に利用される論理 CPU にどのように割り当てられているか解析します。

CPU 利用率の分布図でインテル® VTune™ プロファイラーは、スピンオーバーヘッドをアイドル CPU 利用率として扱います。コールスタック情報の利用状況によっては、異なる解析タイプでスピンとオーバーヘッド時間を異なって認識することがあります。そのため、解析タイプごとに CPU 利用率のグラフ表示が異なることがあります。

フレームレートの分布図

フレーム API を使用して、グラフィックス・アプリケーションで繰り返し実行されるコード領域 (フレーム) の始まりと終わりをマークした場合、インテル® VTune™ プロファイラーはこのデータを解析して、低速に実行された領域を特定するのを支援します。フレームレート分布図を調査して、低速あるいは高速なフレームドメインを特定します

操作

説明

[ドメイン] ドロップダウン・メニュー

フレームレート分布図で解析するフレームドメインを選択します。単一のドメインのみが利用できる場合、ドロップダウン・メニューは灰色で表示されます。次に、フレームドメインでグループ化された [ボトムアップ] ウィンドウに切り替え、データを低速フレームでフィルター処理して、関数グループに切り替えて低速なフレームドメインの関数を特定します。コードを最適化して、フレームレートを一定し維持するようにします (例えば、30/秒 から 60/秒フレーム)。

垂直バー

バーにカーソルを移動すると、アプリケーションが特定のフレームレートで実行したフレームの合計数を示します。低速フレームまたは高速フレームが多いと、パフォーマンスのボトルネックが発生します。

フレーム率バー

スライドバーを使用して、開いている結果とそれに関連するすべての結果のフレームレートのしきい値 (1 秒あたりのフレーム数) を調整します。

OpenMP* 解析収集時間

このセクションには、シリアル領域 (並列領域外) とプログラムの並列領域の持続時間のメトリックと収集時間が表示されます。シリアル時間が長い場合、上位のシリアル・ホットスポットを確認して、並列処理を導入するか、並列化が困難なシリアル領域ではアルゴリズムやマイクロアーキテクチャーのチューニングを行って、シリアル実行を短縮するオプションを検討してください。スレッド数の多いマシンのシリアル領域は、潜在的なスケーリングを示すアムダールの法則 に多大な影響を与えるため、可能な限り最小化すべきです。

潜在的なゲインによる上位 OpenMP* 領域

コードの並列領域で CPU 利用率の効率を予測するには、潜在的なゲインメトリックを使用します。このメトリックは、実測された経過時間と並列領域の理想化された経過時間の差を予測します。理想化とは、スレッドのバランスが完璧で OpenMP* ランタイムのオーバーヘッドがゼロであると仮定される時間です。このデータを使用して、並列実行を改善することで短縮できる最大時間を見積ることができます。

[サマリー] ウィンドウには、潜在的なゲインのメトリック値が最も高い 5 つの並列領域が表示されます。#pragma omp parallel で定義された並列領域では、このメトリックは並列領域すべてのインスタンスの潜在的なゲインの合計となります。

潜在的なゲインによる上位 OpenMP* 領域

領域の潜在的なゲインが顕著である場合、さらに詳しく解析するため、領域名のリンクを選択して [ボトムアップ] ウィンドウに移動できます。[/OpenMP* 領域/OpenMP* バリアからバリアのセグメント/..] グループは、バリアによるインバランスなどの非効率なメトリックの詳しい解析を示します。

プロセス名のリンクをクリックすると、[/プロセス/OpenMP* 領域/..] でグループ化された [ボトムアップ] ウィンドウが表示されます。ここでは、MPI ランクの OpenMP* 非効率性に関する詳しい情報を取得できます。

MPI 通信スピン時間による上位 OpenMP* プロセス

1 プロセス以上の OpenMP* 領域を含む MPI 解析の結果では、[サマリー] ウィンドウに、プロセスごとに集約されたシリアル時間および OpenMP* 潜在的なゲインと MPI 実行のクリティカル・パス上の上位プロセスが表示されます。

MPI 通信スピン時間

OpenMP* 領域の CPU 利用率分布図

操作

説明

[OpenMP 領域] ドロップダウン・メニュー

選択した OpenMP* 領域で分布データをフィルター処理します。潜在的なゲインのメトリック値でソートされたリストの上位から OpenMP* 解析を始めます。この値は、実行時のオーバーヘッドがゼロであると仮定し、ロード・インバランスがないように最適化された場合に期待できる最大経過時間です (収集時間 - アイドル時間)。

垂直バー

バーにカーソルを移動すると、[OpenMP* 領域] ドロップダウン・メニューから選択した OpenMP* 領域で、特定の CPU 数が同時実行されていた時間を表示されます。スピンとオーバーヘッド時間はアイドル CPU 利用率値に加算されます。

ターゲットの並行性

ターゲットの並行性レベルを特定。この数は論理 CPU 数と等価です。この数値を最適化の目標とします。

平均

実行全体で並列に実行されている CPU の平均数を特定します。これは、CPU 時間/経過時間 で計算できます。

この数値をパフォーマンス測定のベースラインとして使用します。この値を論理 CPU 数 (ターゲットの並行性) に近づけると、CPU 時間がスピンする場合を除いて良好であると言えます。

利用率表示バー

それぞれの利用率レベルが、同時に実行される CPU にどのように割り当てられているか解析します。

OpenMP* 領域持続時間分布図

操作

説明

[OpenMP 領域] ドロップダウン・メニュー

OpenMP* 領域を選択すると、持続時間ごとに分類されたインスタンス数が表示されます。

インスタンス・カウント

バーにカーソルを移動すると、アプリケーションが特定の持続時間で実行した OpenMP* 領域のインスタンスの合計数を示します。低速または高速領域が多いと、パフォーマンスのボトルネックが発生します。

持続期間 タイプ (秒)

スライドバーを使用して、開いている結果の持続時間のしきい値 (秒単位) を調整します。[高速/良好/低速] で分類される領域インスタンスのデフォルトの比率は、最小および最大領域時間の 20/40/20 です。

収集とプラットフォーム情報

ここでは次のデータを提供します。

アプリケーションのコマンド行

ターゲット・アプリケーションへのパス。

オペレーティング・システム

収集に使用するオペレーティング・システム。

コンピューター名

収集に使用するコンピューター名。

結果サイズ

インテル® VTune™ プロファイラーで収集された結果のサイズ。

収集開始時間

外部収集の開始時間 (UTC 形式)。[タイムライン] ペインで、カスタムコレクターが提供するパフォーマンス統計を追跡。

収集停止時間

外部収集の停止時間 (UTC 形式)。[タイムライン] ペインで、カスタムコレクターが提供するパフォーマンス統計を追跡。

コレクタータイプ

解析に使用するデータコレクターのタイプ。次のタイプが利用できます。

CPU 情報

名前

収集に使用するプロセッサー名。

周波数

収集に使用するプロセッサーの周波数。

論理 CPU カウント

収集に使用するマシンの論理 CPU カウント。

物理コア数

システム上の物理コア数。

ユーザー名

ユーザーがデータ収集を開始。このフィールドは、製品のインストール時にユーザーごとのイベントベース・サンプリング収集モードを有効にすると利用できます。

GPU 情報

名前

システムにインストールされているグラフィックス名。

ベンダー

GPU ベンダー。

ドライバー

システムにインストールされているグラフィックス・ドライバーのバージョン。

ステッピング

マイクロプロセッサーのバージョン。

EU カウント

レンダーと GPGPU エンジンの最大実行ユニット (EU) 数。このデータは、インテル® HD グラフィックスおよびインテル® Iris® グラフィックス (インテル® グラフィックス) 固有です。

最大 EU スレッドカウント

実行ユニットごとの最大スレッド数。このデータはインテル® グラフィックス固有です。

最大コア周波数

グラフィックス・プロセッサーの最大周波数。このデータはインテル® グラフィックス固有です。

グラフィックス・パフォーマンス解析

[GPU メトリック] 収集は、ハードウェア・レベルで有効になります。このデータはインテル® グラフィックス固有です。

一部のシステムでは、L3 ミス、メモリーアクセス、サンプラービジー、SLM アクセスなどの拡張メトリックの収集は BIOS で無効にされています。システムによっては、BIOS オプションを設定してこの収集を有効にできます。オプションの有無およびオプション名は BIOS ベンダーによって異なります。BIOS でインテル® グラフィックス・パフォーマンス・アナライザー・オプション (または等価な) を 有効 に設定します。

関連情報