Chromeperf/Skia Perf 上传和配置

本页介绍了如何将 Fuchsia build 的性能结果上传到 Chromeperf,以及如何配置 Fuchsia 对 Chromeperf 的使用。

这也适用于 Skia Perf。如需了解 Fuchsia 从 Chromeperf 迁移到 Skia Perf 的一些背景信息,请参阅 Fuchsia 的 Skia Perf 简介。

其中一些内容是在 Google 内部代码中实现的,此处未做完整介绍。Google 员工可以参阅此文档的 Google 内部版本 了解详情

上传的代码路径

上传到 Chromeperf 的代码路径较为复杂,因为它跨越多个位置:

  • 构建器配置: 文件 catapult.star 包含一个映射,用于指定哪些构建器应将性能结果上传到 Chromeperf,并允许重新映射名称。此文件位于 integration.git 的 Google 内部版本中的 infra/config/ 下。

    • catapult.star 中的条目具有在相应构建器的属性中设置嵌套字段 catapult_dashboard_mastercatapult_dashboard_bot 的效果。这些属性存储在已签入 integration.git 的生成文件中。
    • 这样一来,系统仅会为 CI build 上传到 Chromeperf。
    • 此映射是在 https://fxbug.dev/42126577中实现的。
  • 子 build: Infra recipes 代码会根据输入属性设置各种环境变量,包括 CATAPULT_DASHBOARD_MASTERCATAPULT_DASHBOARD_BOT。请参阅 testing_requests/api.py

    • 此操作在子 build(即构建 Fuchsia 的 Swarming 任务)中完成。环境变量会放入分片说明中。
    • recipes 代码可能会修改“master”和“bot”名称以处理分支(例如发布分支)。否则,这些名称将从输入属性中未经修改地传递。
  • 测试分片: 在测试分片的 Swarming 任务中,会发生以下情况:

    • 每项测试都可能会生成 *.fuchsiaperf.json 文件。
    • 生成 fuchsiaperf 文件的测试会将这些文件传递给 Python perf_publish 库或 Dart performance.dart 库。这样一来,系统会对每个 fuchsiaperf 文件执行两项操作:
      • fuchsiaperf 文件复制到分片的输出目录。每个 build 的结果摘要页面(包括 perfcompare build)会使用此位置中的 fuchsiaperf 文件。
      • *.fuchsiaperf.json 文件运行 catapult_converter 以生成 *.catapult_json 文件,该文件也会复制到分片的输出 目录。此文件采用 Chromeperf 接受的格式。此步骤使用上述 CATAPULT_DASHBOARD_* 环境变量。
  • 上传步骤: 后续的 recipe 步骤会提取 *.catapult_json 文件并将其上传到 Chromeperf。

    • 此步骤使用 上传工具 编写的 Go。
    • 上传使用一些凭据,这些凭据可供 Fuchsia Infra 上的 CI build 使用。
    • 上传错误有时会在此 recipe 步骤中报告为失败,但有时仅在 Chromeperf 的日志中报告,这些日志不公开显示。

如果为构建器停用了上传到 Chromeperf 的功能(所有 CQ 构建器和 catapult.star 中未列出的 CI 构建器都是这种情况),则不会设置 catapult_* 输入属性,因此不会设置 CATAPULT_* 环境变量。 performance.dartperf_publish 仍会运行 catapult_converter, 以检查转换是否成功,但它们会生成 *.catapult_json_disabled 文件,而不是 *.catapult_json 文件。

局限性和风险

  • “推送”模型: Chromeperf 上传使用“推送”模型。每个 CI build 都有权在 Chromeperf 中以任何构建器名称、测试名称等上传结果。

    务必谨慎处理这些上传,因为错误可能会在 Chromeperf 信息中心内产生令人困惑的结果,而且错误不容易纠正,因为没有简单的方法可以从 Chromeperf 的数据库中移除错误数据。此外,Chromeperf 的命名空间与其他项目(包括 Chrome)共享。

  • 可测试性: 目前还没有好的方法来测试上传到 Chromeperf 的功能。没有明确定义的方法来设置 Chromeperf 的测试实例,并且 Fuchsia 开发者无权访问用于上传到生产实例的凭据,除非通过 Fuchsia CI build。这意味着,测试对 catapult_converter 输出的更改的唯一方法是提交更改,并检查上传在 CI 中是否继续有效。

  • 重复项: 如果两项测试输出的指标具有相同的名称(即相同的测试名称和测试套件名称),则不会发现此错误。相反,这可能会在同一 Chromeperf 图表上显示为两个数据点,这两个数据点都链接到同一 Fuchsia build。这是因为每个 fuchsiaperf/catapult 文件都是单独处理的,因此目前没有合适的步骤来拒绝或合并重复项。

  • 提醒: 目前没有设置提醒,以便在 Fuchsia 的 Chromeperf 上传停止工作时发出警告。

用于回归提醒的配置

Chromeperf 在 Chrome 的 Google 内部基础架构代码库中有一组文件,用于配置回归提醒。这包括一个 Fuchsia 文件 fuchsia-perf.cfg