ビルド・レポートでのプロファイルの検査
プロファイルは、ネイティブ・イメージによる効率的なAOTコンパイルで不可欠な役割を果たします。アプリケーションの特定の実行に関する情報が含まれ、アプリケーションのパフォーマンスをさらに向上させる追加の最適化をガイドするために使用されます。プロファイルの情報をビジュアル化すると便利なことがよくあります。この項では、ネイティブ・イメージのビルド・レポート・ツールを使用して、プロファイルの一部を検査する方法について説明します。
ネイティブ・イメージ・ビルド・レポート・ツールは、GraalVM Community Editionでは使用できません。
プロファイルのビジュアライゼーションの生成
ビルド・レポート・ツールには、生成されたイメージおよびビルド・プロセス自体に関する様々なデータが表示されます。特に、このツールは、サンプラによって記録されたプロファイリング情報をビジュアル化でき、様々なメソッドが全体的な実行時間にどのように寄与するかを調べるのに役立ちます。サンプルは、単一のフレーム・グラフに集約されます。フレーム・グラフは、インライナがコンパイル中にどのようにインライン化を決定したかを示すために色分けされています(詳細は後述)。
ビジュアライゼーションを含む包括的なレポートを生成するには、PGO最適化ネイティブ実行可能ファイルをビルドするときに、--emit build-report
オプションを渡します。たとえば:
native-image -cp . GameOfLife -o gameoflife-pgo --pgo=gameoflife.iprof --emit build-report
ステップ・バイ・ステップ・ガイドは、「プロファイルに基づく最適化の基本的な使用法」を参照してください。
ビルド・レポートを使用したプロファイルの検査
ネイティブ・イメージ・サンプラによって記録されたプロファイリング情報は、複数のスタック・トレースを集計する階層チャートであるフレーム・グラフの形式でビジュアル化されます。このフレーム・グラフは、「ホット」コンパイル・ユニットと「コールド」コンパイル・ユニットの区別に特化しています。3つの異なる色があります:
- 赤: ホット・コンパイル・ユニットのルート・メソッドをマークするために使用されます。
- 青: ホット・コンパイル・ルートにインライン化されたすべてのメソッドに使用されます。
- グレー: コールド・コードを表します。
ノート: 色の説明およびその他の有用な情報は、チャートの凡例の一部であり、「?」をクリックして切り替えることができます。
グラフ自体にいくつかの機能があります。ユーザーが特定のメソッド・バーにマウス・ポインタを重ねると、サンプル数やサンプルの合計数に対する割合など、そのメソッドの詳細を表示できます。さらに、特定のメソッドをクリックしてズームし、そのコール・チェーン内の後続のすべてのコールをより明確に確認する機能もあります。左上隅の「ズームのリセット」ボタンを使用して、ビューをリセットできます。
さらに、グラフの右上隅に検索ボタン(「検索」)があります。検索基準に一致する特定のメソッドまたはメソッドのグループを強調表示するために使用できます(メソッドは黄色になります)。また、サンプルの合計数のグループ・シェアを表す「一致」フィールドがあります(チャートの下の右半分に表示されます)。これは相対的なシェアでもあり、ビューを展開/縮小すると再調整されます。また、「検索のリセット」ボタンを使用して、いつでも検索を取り消すことができます。
フレーム・グラフには、その下に追加のヒストグラムが付属しています。合計実行時間に対する個々のメソッドの寄与を示します(サンプル数の降順)。これらのバーもクリック可能で、クリックは検索と同じ効果を持ち、上のフレーム・グラフでその特定の方法が強調表示されます。同じバーをさらにクリックすると、ハイライトがリセットされます。