使用 Mach Try Perf 的标准工作流程

此页面是使用 ./mach try perf 工作时的标准工作流程指南。它包含有关如何充分利用此工具的信息,以增强您在处理性能问题时的开发体验。

开始使用 Mach Try Perf

Mach Try Perf 中,提供了有关该工具用途以及功能概述的信息。在这里,我们将解释如何开始使用它。

运行 mach try perf 时,将显示与 ./mach try fuzzy 相同的界面,并且所有操作方式都相同。但是,它显示的是任务类别,而不是单个任务。要查找有关特定类别或类别选择在 try 上运行内容的更多信息,请添加 --no-push 选项,以便在您的命令控制台中输出包含所有所选任务的 JSON 文件。请遵循 错误 1826190 以了解对此的改进。

注意

某些类别,例如 Benchmarks desktopBenchmark desktop firefox,只有在传递其他选项(例如 --chrome--safari)时才会生成不同的任务集。随着这些类型的标志的添加,Benchmarks desktop 类别将包含越来越多的任务,以避免需要查找和选择多个子类别。该工具默认情况下对可运行内容有限制,因为通常在标准工作流程中不需要其他浏览器。这目前包括 GeckoView 和 Fenix 的 Android 平台,因为设备容量有限,并且可以使用 --android 启用。

选择一些相关类别并在界面中按 Enter 后,将开始两次推送。第一次推送是 **新** 的 try 运行。它包含可能在本地进行的任何补丁。之后,会生成一个 **基础** try 运行,该运行使用这些补丁所基于的 mozilla-central。然后,这两个运行用于在命令控制台中生成一个 Compare View 链接,该链接可用于快速查看 **基础** 和 **新** 测试之间的性能差异。请注意,这两个推送可能需要一些时间,并且有一些正在进行的工作 以减少此处等待时间

CompareView

CompareView 提供了关于 **新** 修订版/补丁如何更改浏览器性能与 **基础** mozilla-central 修订版相比的比较。下图显示了 CompareView 将两个 try 提交相互比较。如果看起来数据不足,请将鼠标悬停在表格行上以显示“刷新”类型的按钮(位于最右侧,紧邻总运行次数),这些按钮用于重新触发测试。此页面顶部的修订版链接可用于导航到各个 try 运行。

注意

CompareView 中的重新触发按钮是重新触发/重新构建基础构建上的测试的最简单方法。try 运行所基于的基础构建会缓存在本地以避免浪费 CI 资源,但是,这也意味着 --rebuild X 选项仅适用于在基础修订版上进行的第一次 try 运行。可以使用 --clear-cache 清除此缓存。

Sample comparison on CompareView

有关此工具的更多信息,请参阅此处

理解结果

在上图中,**基础** 和 **新** 列显示了所有测试的平均值。您可以导航到 try 运行以重新触发测试,或使用上面提到的“刷新”类型的按钮(仅在登录时可见)。将鼠标悬停在这些列中的值上将显示数据的分布以及百分比形式的标准差。此处使用的数据点数也可以通过单击表格右上角的 **使用重复** 按钮来更改(仅适用于 try 推送)。它会导致比较使用 perfherder 数据中的试验/重复数据,而不是汇总值。每个任务仅生成 1 个汇总值,而每个任务可以生成多个重复。以下是在 PERFHERDER_DATA JSON 中此数据来源的示例(在性能任务日志中输出,或作为 perfherder-data.json 文件输出)

... # This type of data can be found in any PERFHERDER_DATA output
"subtests": [
  {
    "alertThreshold": 2.0,
    "lowerIsBetter": true,
    "name": "Charts-chartjs/Draw opaque scatter/Async",
    "replicates": [ # These are the trials/replicates (multiple per task)
      1.74,
      1.36,
      1.16,
      1.62,
      1.42,
      1.28,
      1.12,
      1.4,
      1.26,
      1.44,
      1.22,
      3.32
    ],
    "unit": "ms",
    "value": 1.542 # This is the summary value of those replicates (only 1 per task)
  },
  ...

**增量** 列显示两个修订版平均值的百分比差异。此处的负值表示关联指标已减少,正值则相反。

**变化幅度** 以视觉方式指示变化的大小,而 **置信度** 列显示比较产生的 T 检验值。此处的较高值表示对差异的确定性更高。

**置信度** 和 **基础** / **新** 值是理解结果所需的主要列。这些显示差异是否是我们确定的,并提供差异的绝对度量。重新触发测试将增加可用于比较的数据点数,并提高对所测量差异的置信度。如果变化的方差很大,重新触发也可能会降低变化的统计显着性。

**图形** 链接导航到 Graphs View,可用于可视化数据点并直接导航到每个作业。有关此工具的更多信息,请参阅下面的 Graphs View

查看结果并确认补丁已修复性能问题或确认不会导致性能问题后,这将结束 ./mach try perf 的标准工作流程。

如有任何其他问题,请在 matrix 上的 #perftest 频道与我们联系。

其他信息

调试警报

要调试 CI 中的警报,请使用 ./mach try perf --alert <ALERT-NUMBER> 运行已发出警报的测试。运行该命令后,上述标准工作流程仍然适用。有关此内容的更多信息,请参阅 运行警报测试

Graphs View

在浏览 Compare View 中的指标时,将大量使用 Graphs View。如果 Compare View 中的工具提示悬停不足,则可以使用它来查看数据分布情况。有关此内容的更多信息,请参阅此处

Perfherder

Perfherder 是一种性能监控工具,它从 CI 日志文件中获取数据点并在一段时间内将其绘制成图表。其主要目的是查找和提醒检测到的更改,但通常也用于简单的手动监控。

Graphs View、Alerts View 和 Compare View 都是 Perfherder 的组件。有关此系统的更多信息,请参阅此处