インテル® VTune™ プロファイラー・ユーザーガイド
実行カテゴリーで分類された主要なハードウェア・メトリックを使用するトップダウン方式のマイクロアーキテクチャー解析法による PMU 解析向けの、インテル® VTune™ プロファイラーのマイクロアーキテクチャー全般ビューポイントを調査することで、パイプラインのどの部分が実行時間の大半を占めるか容易に特定できます。
マイクロアーキテクチャー全般解析 (以前の全般解析) のデータ収集が完了すると、インテル® VTune™ プロファイラーはマイクロアーキテクチャー全般ビューポイントを開きます。ビューポイントに表示されるイベントベース・メトリックの階層は、ハードウェアのアーキテクチャーによって変わります。例えば、インテル® マイクロアーキテクチャー (開発コード名: Ivy Bridge) 以降では、インテル® VTune™ プロファイラーはトップダウンのマイクロアーキテクチャー解析法に基づいて実行カテゴリーを解析します。
マイクロアーキテクチャー全般ビューポイントの上位レベルのパフォーマンス・メトリックは、4 つのカテゴリーに分類されます。
それぞれのメトリックは、インテル® アーキテクチャーで定義されているイベント比率と固有の事前定義されたしきい値を持っています。インテル® VTune™ プロファイラーは、それぞれのプログラム単位 (関数など) で収集された比率値を解析します。この値がしきい値を超え、プログラム単位の CPU 時間が収集された CPU 時間全体の 5% を上回ると、潜在的なパフォーマンスの問題につながるため、その値はピンク色で強調表示されます。
マイクロアーキテクチャー全般解析に関するチューニング方法論の詳細と、この解析の複雑性については、「インテル® VTune™ プロファイラーの全般解析がどのように動作するかを理解する」 (英語) をご覧ください。
アーキテクチャー固有のチューニングガイドについては、http://www.isus.jp/products/vtune/processor-specific-performance-analysis-papers/ をご覧ください。
ハードウェア・イベント・サンプリング解析で示されるパフォーマンス・データを解釈するには次のステップに従います。
マイクロアーキテクチャー全般ビューポイントで、[サマリー] タブをクリックして [サマリー] ウインドウに切り替えます。
最初のセクションは、パイプライン・スロットやクロックティックで測定されたハードウェア関連のメトリックごとのアプリケーションの実行全体における特性のサマリーを示しています。メトリックはリスト内の実行カテゴリーごとに分類され、µ パイプ分布図としても表示されます。メトリックの説明を確認するには、ヘルプアイコン にマウスポインターを移動します。
上記は、L1 依存メトリックにマウスポインターを移動して表示される説明の例です。
フラグが表示されるメトリックは、アプリケーション実行全体でパフォーマンスの問題に影響することを示します。表示されているフラグの値にマウスポインターを移動すると、問題の説明が表示されます。
開発者の皆さんは、インテル® VTune™ プロファイラーによって特定されたパフォーマンスの問題をベースラインとして、最適化の前後で比較されることでしょう。最もよく利用されるパフォーマンス基準は経過時間値です。
灰色表示のメトリック値は、このメトリックで収集されたデータの信頼性が低いことを表します。これは、収集された PMU イベントのサンプル数が非常に少ないことが原因であると考えられます。このような信頼性の低いメトリック値にマウスポインターを移動すると、インテル® VTune™ プロファイラーは次のようなメッセージを表示します。
このデータは無視できますが、収集に戻ってデータ収集時間、サンプリングの間隔、またはワークロードを増やして再度収集することもできます。
インテル® VTune™ プロファイラーは、デフォルトの詳細モードでマイクロアーキテクチャー全般データを収集します。このモードでは、サマリービューのすべてのメトリック名はハイパーリンクになっています。ハイパーリンクをクリックすると、[ボトムアップ] ウィンドウが開いて選択されたメトリックでグリッド中のデータがソートされます。軽量サマリー収集モードは、サマリービュー統計に限定されます。
プログラム単位ごとのハードウェアの問題を表示するには、[ボトムアップ] ペインに切り替えます。各列はプログラム単位とそのユニットで費やされる時間の比率を表します。プログラム単位が CPU 時間の 5% 以上を占有する場合、ホットスポットであると考えられます。デフォルトで、インテル® VTune™ プロファイラーはクロックティックの降順でデータをソートするため、リストの上位にホットスポットが表示されます。
[ボトムアップ] ペインのほとんどのカラムは、ハードウェアのパフォーマンス・メトリックを表します。インテル® VTune™ プロファイラーは、インテル® アーキテクチャー向けの数式を基にメトリックを計算します。表示されている値のカラムにカーソルを移動すると、メトリックの説明が表示されます。デフォルトでは、メトリック値は数値として表示されます。[データを表示] コンテキスト・メニューから表示モードを変更できます。
右のペインには、選択した関数のコンテキスト・サマリーが表示されます。関数ごとのハードウェア・メトリックと µ パイプ分布図で示される情報を解析して、特定の関数の全体的なパフォーマンスへの影響を推測します。
各メトリックにはしきい値が設定されています。メトリック値がしきい値を超えるプログラム単位はホットスポットであり、インテル® VTune™ プロファイラーはパフォーマンス・クリティカルであるとして、その値をピンク色で強調表示します。ピンク色で強調されたセルにマウスを移動すると、問題の説明と推奨される解決方法 (該当するものがあれば) が表示されます。
インテル® マイクロアーキテクチャー (開発コード名 Skylake) 上で作成された上記の例では、インテル® VTune™ プロファイラーは sphere_intersect 関数を最も CPU 時間を消費するホットスポットとして示しています。インテル® VTune™ プロファイラーは、パイプラインのバックエンドの一部がストールの原因であり、バックエンドでメモリー依存 > L1 依存ボトルネックの問題を検出しました。この関数の 14.6% のクロックティックが、L1 データキャッシュをミスしてストールしました。これは、この関数のホットスポットに注目して最適化することで、~15% スピードアップできる可能性があることを意味します。
インテル® VTune™ プロファイラーは、ほとんどの一般的なパイプライン・ボトルネックを特定できます。そして、さらに詳しく調査することが可能です。詳細レベルのメトリックのデータが表示されない場合、それはインテル® VTune™ プロファイラーが低レベルで顕著なボトルネックを識別しなかったことを意味します。
クリティカルな関数をダブルクリックして、[ソース/アセンブリー] ウィンドウを開き、ソースコードを解析します。
[ソース/アセンブリー] ウィンドウでは、ソースレベルでメトリックが表示されるため、メトリックで示される問題につながるコードの位置を特定できます。例えば、関数のバックエンド依存メトリックが 60% であるとすると、ソース表示では 60% が行レベルや命令レベルに分割され、バックエンド依存メトリックに最も影響するソース行/命令を特定するのに役立ちます。
[ホットスポット・ナビゲーション] ツールバーのボタンを使用して、それぞれのメトリックに影響する最も重要なホットスポットへ移動し、最適化すべきコードを特定できます。
[ホットスポット] ビューポイントを使用するか、ホットスポット解析タイプを実行して収集されたデータを表示します。[ホットスポット] ビューポイント内でホットな関数のソースとアセンブリー・コードを解析すると、どの命令がパフォーマンスの低下に影響し、ソース行がどれくらい CPU 時間を消費するか特定するのに役立ちます。このようなコード解析は、サブメトリックで問題が示されず、上位レベルのメトリックで問題が報告される場合の調査に役立ちます (上記の例を参照)。
[結果の比較] を実行して、最適化後のパフォーマンス・ゲインを知ることができます。
独自のカスタム解析設定を作成して、注目するイベントを監視することができます。
プロセッサー・イベントに関する情報は、「インテル® プロセッサー・イベントのリファレンス」をご覧ください。
「パフォーマンス解析クックブック」のハードウェアの問題に関するチューニングレシピを参照してください。