ビルドレポートでのプロファイルの検査

プロファイルは、Native Imageによる効率的なAOTコンパイルにおいて重要な役割を果たします。プロファイルには、アプリケーションの特定の実行に関する情報が含まれており、アプリケーションのパフォーマンスをさらに向上させる追加の最適化をガイドするために使用されます。プロファイル内の情報を視覚化すると便利なことがよくあります。このセクションでは、Native Image ビルドリポートツールを使用してプロファイルの一部を検査する方法について説明します。

Native Imageビルドリポートツールは、GraalVM Community Editionでは使用できません。

プロファイルの視覚化の生成 #

ビルドリポートツールは、生成されたイメージとビルドプロセス自体に関するさまざまなデータを表示します。特に、このツールは、サンプラーによって記録されたプロファイリング情報を視覚化できます。これは、さまざまなメソッドが全体の実行時間にどのように寄与しているかを調べるのに役立ちます。サンプルは単一のフレームグラフに集約されます。フレームグラフは、コンパイル中にインライナーがインライン化の決定をどのように行ったかを示すために色分けされています(詳細は以下を参照)。

視覚化を含む包括的なレポートを生成するには、PGOで最適化されたネイティブ実行可能ファイルをビルドする手順で、--emit build-reportオプションを渡します。例えば

native-image -cp . GameOfLife -o gameoflife-pgo --pgo=gameoflife.iprof --emit build-report

ステップバイステップガイドについては、プロファイルに基づく最適化の基本的な使用方法を参照してください。

ビルドリポートを使用したプロファイルの検査 #

Native Imageサンプラーによって記録されたプロファイリング情報は、フレームグラフ(複数のスタックトレースを集約した階層チャート)の形式で視覚化されます。このフレームグラフは、「ホット」コンパイルユニットと「コールド」コンパイルユニットを区別することに特化しています。3つの異なる色があります

  • :ホットコンパイルユニットのルートメソッドのマークに使用されます。
  • :ホットコンパイルルートにインライン化されたすべてのメソッドに使用されます。
  • 灰色:「コールド」コードを表します。

注:色の説明やその他の役立つ情報は、チャートの凡例の一部であり、「?」をクリックして切り替えることができます。

Flame Graph Preview

グラフ自体には、いくつかの機能が用意されています。ユーザーは特定のメソッドバーにカーソルを合わせると、そのメソッドに関する詳細情報(サンプル数やサンプル総数に関連する割合など)を確認できます。それに加えて、特定のメソッドを「ズームイン」(クリックする)して、そのコールチェーンの後続のすべての呼び出しをより明確に確認する機能があります。左上隅のズームのリセットボタンを使用してビューをリセットできます。

Flame Graph Zoom

さらに、グラフの右上隅に検索ボタン(検索)があります。検索条件に一致する特定のメソッドまたはメソッドのグループを強調表示するために使用できます(メソッドは黄色で表示されます)。また、一致フィールドは、サンプルの総数におけるグループの割合を表します(チャートの下の右半分に表示されます)。これも相対的な割合であることに注意してください。ビューを展開/折りたたむと、調整されます。検索のリセットボタンを使用して、いつでも検索をキャンセルすることもできます。

Flame Graph Search

フレームグラフには、追加のヒストグラム(その下に)が付属しています。個々のメソッドの合計実行時間への寄与を示しています(サンプル数の降順)。これらのバーもクリック可能で、クリックすると上記フレームグラフでその特定のメソッドが強調表示されるのと同じ効果があります。同じバーをもう一度クリックすると、強調表示がリセットされます。

Histogram Highlight

参考資料 #

お問い合わせ