実行カテゴリーで分類された主要なハードウェア・メトリックを使用する、トップダウン・マイクロアーキテクチャー解析法による PMU 解析のインテル® VTune™ プロファイラーのマイクロアーキテクチャー全般ビューポイントを調査することで、パイプラインのどの部分が実行時間の大半を占めているか容易に特定できます。
マイクロアーキテクチャー全般解析 (全般解析と呼ばれる) のデータ収集が完了すると、インテル® VTune™ プロファイラーはマイクロアーキテクチャー全般ビューポイントを開きます。ビューポイントに表示されるイベントベース・メトリックの階層は、ハードウェアのアーキテクチャーによって変わります。例えば、インテル® マイクロアーキテクチャー開発コード名: Ivy Bridge 以降では、インテル® VTune™ プロファイラーはトップダウン・マイクロアーキテクチャー解析法に基づいて実行カテゴリーを解析します。
マイクロアーキテクチャー全般ビューポイントの高レベルのパフォーマンス・メトリックは、4 つのカテゴリーに分類されています。
それぞれのメトリックは、インテル® アーキテクチャーで定義されているイベント比率で、固有の事前定義されたしきい値を持っています。インテル® VTune™ プロファイラーは、それぞれのプログラム単位 (関数など) で収集された比率値を解析します。この値がしきい値を超え、プログラム単位の CPU 時間が収集された CPU 時間全体の 5% を上回ると、潜在的なパフォーマンスの問題を示すため、その値はピンク色で強調表示されます。
マイクロアーキテクチャー全般解析に関するチューニング方法論の詳細と、この解析の複雑性については、「インテル® VTune™ プロファイラーの全般解析がどのように動作するかを理解する」(英語) を参照してください。
アーキテクチャー固有のチューニング・ガイドについては、https://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% が行レベルや命令レベルに分割され、バックエンド依存メトリックの 60% に最も影響するソース行/命令を特定するのに役立ちます。
ホットスポット・ナビゲーション・ツールバーのボタンを使用して、それぞれのメトリックに影響する最も重要なホットスポットへ移動し、最適化すべきコードを特定できます。
[ホットスポット] ビューポイントを使用するか、ホットスポット解析タイプを実行して収集されたデータを表示します。[ホットスポット] ビューポイント内でホットな関数のソースとアセンブリー・コードを解析すると、どの命令がパフォーマンスの低下に影響し、ソース行がどれくらい CPU 時間を消費するか特定するのに役立ちます。このようなコード解析は、サブメトリックで問題が示されず、上位レベルのメトリックで問題が報告される場合の調査に役立ちます (上記の例を参照)。
[結果の比較] を実行して、最適化後のパフォーマンス・ゲインを知ることができます。
独自のカスタム解析設定を作成して、注目するイベントを監視することもできます。
プロセッサーのイベントに関する情報は、「インテル® プロセッサー・イベントのリファレンス」を参照してください。
「インテル® VTune™ プロファイラー・パフォーマンス解析クックブック」のハードウェアの問題に関するチューニング・レシピを参照してください。