在构建报告中检查概要文件

概要文件在原生镜像的有效 AOT 编译中起着至关重要的作用。它包含有关应用程序特定执行的信息,并用于指导进一步提高应用程序性能的额外优化。可视化概要文件中的信息通常很有用。本节介绍如何使用原生镜像**构建报告**工具检查概要文件的部分内容。

原生镜像构建报告工具在 GraalVM 社区版中不可用。

生成概要文件可视化 #

构建报告工具显示有关生成的镜像和构建过程本身的各种数据。除其他事项外,该工具还可以可视化采样器记录的概要文件信息,这对于探索不同方法如何影响整体执行时间非常有用。样本被聚合到一个单独的火焰图中。火焰图使用颜色编码来显示内联程序在编译期间如何进行内联决策(更多信息见下文)。

要生成包含可视化的综合报告,请在构建 PGO 优化的原生可执行文件时传递--emit build-report选项。例如

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

有关分步指南,请参阅 概要文件引导优化的基本用法

使用构建报告检查概要文件 #

原生镜像采样器记录的概要文件信息以火焰图的形式可视化 - 这是一种将多个堆栈跟踪聚合在一起的层次图表。此火焰图专门用于区分“热”与“冷”编译单元。有三种不同的颜色

  • 红色:用于标记热编译单元的根方法;
  • 蓝色:用于内联到热编译根的所有方法;
  • 灰色:代表“冷”代码。

注意:颜色说明和其他有用信息是图表图例的一部分,可以通过单击“?”进行切换。

Flame Graph Preview

图表本身提供了几个功能。用户可以将鼠标悬停在特定方法栏上,查看有关该方法的更多信息,例如样本数量和与样本总数相关的百分比。除此之外,还可以“放大”到特定方法(通过单击它),更清楚地查看该调用链中的所有后续调用。可以使用左上角的重置缩放按钮重置视图。

Flame Graph Zoom

此外,图表右上角还有一个搜索按钮(搜索)。它可以用来突出显示与搜索条件匹配的特定方法或方法组(方法将以黄色显示)。此外,还有一个匹配项字段,代表该组在样本总数中的比例(显示在图表下方右侧)。请注意,这也是一个相对比例 - 在展开/折叠视图时会重新调整。也可以使用重置搜索按钮随时取消搜索。

Flame Graph Search

火焰图附带一个额外的直方图(在其下方)。它显示了各个方法对总执行时间的贡献(按样本数量降序排列)。这些栏也可以单击,单击的效果与搜索相同 - 它会在上面的火焰图中突出显示该特定方法。再次单击该栏会重置突出显示。

Histogram Highlight

进一步阅读 #

联系我们