比较性能剖析文件

借助 Cloud Profiler,您能够直观比较同一类型的两个性能剖析文件(取自某个项目中的同一服务)。您可以比较在以下方面存在差异的性能剖析文件:

  • 结束时间:服务是否在某些时间运行更快?随着时间的推移,运行速度是否逐渐提高或降低?
  • 可用区:服务在某些可用区的运行速度是否高于其他可用区?
  • 服务版本:新旧版本之间是否存在显著差异?有哪些差异?
  • 权重:高耗用量期间捕获的性能剖析文件与平常的性能剖析文件有何不同?

设置性能剖析文件比较

设置性能剖析文件比较时,您可以为原始性能剖析文件和作为比较对象的性能剖析文件指定参数。除比较对象字段定义的配置参数外,这两个性能剖析文件共享其他所有配置参数。

要配置性能剖析文件比较,请执行以下操作:

  1. 比较对象菜单中选择一个选项,以设置比较类型:

    从上述选项中选择一个选项即会生成一个新的配置字段。该字段名称以要比较的对象 (Compared) 开头,以比较类型结束。 例如,如果选择版本,则比较版本字段会显示在比较对象字段的旁边。

  2. 要比较的对象 (Compared) 菜单中选择一个选项,以指定作为比较对象的性能剖析文件。

例如,屏幕截图展示了用于比较两个版本的 docdemo-service 的设置:

两个 CPU 时间性能剖析文件的比较图。

以下字段的设置适用于原始性能剖析文件和作为比较对象的性能剖析文件:

  • 时间范围7 days
  • 结束时间10/24/19, 8:35 AM
  • 服务docdemo-service
  • 性能剖析类型CPU time
  • 可用区All zones
  • 权重All

对于原始性能剖析文件,版本1.75.0。对于作为比较对象的性能剖析文件,版本1.25.0

了解比较图

执行比较操作后生成的图与标准图的不同之处体现在以下几个方面:

  • 颜色的含义
  • 函数块大小的含义
  • 提示工具显示的指标信息
  • 聚焦列表的内容

颜色的含义

在标准火焰图中,您可以指定图的颜色模式。 如需了解详情,请参阅颜色模式

在比较火焰图中,颜色表示原始性能剖析文件与作为比较对象的性能剖析文件在函数的总指标耗用量方面存在的差异:

  • 灰色:差异很小或无差异。
  • 红色:差值为正数。
  • 蓝色:差值为负数。

两个相互比较的性能剖析文件的耗用量的差值越大,颜色饱和度越高。

例如,在上图中,foo1 调用堆栈显示为蓝色,表示原始性能剖析文件的 CPU 耗用量低于作为比较对象的性能剖析文件。帧 foo1 与其子帧 bar 相比,显示的蓝色更亮,这表示函数 foo1 与函数 bar 的指标耗用量存在较大差异。最后,foo2 调用堆栈显示为红色,表示原始性能剖析文件与作为比较对象的性能剖析文件相比,前者的 CPU 耗用量更高

块大小的含义

在标准火焰图中,函数块的大小表示所分析指标的相对耗用量。

在比较火焰图中,函数块的大小表示所分析指标的相对平均耗用量。 通过对两个性能剖析文件的值求平均值,仅存在于一个性能剖析文件中的块仍会显示在比较图中,其大小是进行比较前的大小的一半。

显示的指标值

在标准火焰图中,提示工具显示的指标由两个子句组成:即 total 和 self。在这两个子句中,绝对值会与百分比一起显示:

     total: 1.01 s, 28.8%; self: 1.01 s, 28.8%

在比较火焰图中,由于要比较两个性能剖析文件,因此提示工具会显示这两个性能剖析文件的指标值:

性能剖析文件比较图中显示的值。

如上图所示,total 和 self 子句采用以下格式:

     [ABS_ORIGINAL] vs. [ABS_COMPARED] ([ABS_DIFF]), [REL_ORIGINAL] vs. [REL_COMPARED] ([REL_DIFF])

在此表达式中,ABS_ 表示绝对值,REL_ 表示相对百分比。因此,[ABS_ORIGINAL] 是原始性能剖析文件的绝对值,[ABS_COMPARED] 是作为比较对象的性能剖析文件的绝对值。定义为 [ABS_ORIGINAL] - [ABS_COMPARED] 的字段 [ABS_DIFF] 是这两个性能剖析文件之间的绝对差异。如果绝对差异为零,则会显示没有变化

系统会为每个性能剖析文件计算百分比,即函数的原始值与根的原始值之比。例如,在原始性能剖析文件中,foo1 花费了 4.67 秒,而 root 花费了 10.03 秒。因此,[REL_ORIGINAL] 大约花费了 46.0%。系统会对作为比较对象的性能剖析文件执行类似的计算。最后,定义为这些百分比的差值的字段 [REL_DIFF] 是这两个性能剖析文件之间的相对差异。如果此差值为零,则会显示没有变化

在前面的示例中,total 子句显示原始性能剖析文件中的函数 foo1 会在 4.67 秒内执行完毕。-2.24 秒的绝对差异表示,原始性能剖析文件与作为比较对象的性能剖析文件相比,前者的 foo1 执行时间比后者大约少 2.41 秒:

     total: 4.67 s vs. 6.91 s (-2.24 s), 46.6% vs 69% (-22.4%)

重点突出比较结果

在标准火焰图中,聚焦列表中的每一行都包含函数名称、self 和 total 指标耗用量值以及流入该函数的调用堆栈数量。

在比较火焰图中,聚焦列表中的每一行都包含函数名称、自身和总计指标耗用量值以及流入原始性能剖析文件 .profiler 中该函数的调用堆栈数量。对于比较火焰图,聚焦列表还包含两个标有差异的列、一个标有相对差异的按钮和一个标有绝对差异的按钮。如需了解相对差异和绝对差异,请参阅显示的指标值

默认情况下,比较火焰图的颜色由原始性能剖析文件与作为比较对象的性能剖析文件之间的绝对差异确定。聚焦列表默认显示这两个相互比较的性能剖析文件之间的相对差异:

显示两个性能剖析文件之间的相对差异的聚焦列表。

示例中的表显示,在原始性能剖析文件中,函数 foo1 运行了约 4.67 秒。4.67 秒大约相当于运行时的 46.6%。显示相对差异的 Diff 列包含值 -22.4%

如需查看指标值之间的绝对差异,请点击绝对差异

无论您使用标准火焰图还是比较火焰图,都可以通过选择表标头元素,按升序 或降序 对表行进行排序。

关闭比较模式

要关闭比较模式,请将比较对象字段设置为

后续步骤