Chromeperf 上传和配置

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

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

上传代码路径

上传到 Chromeperf 的代码路径有点复杂,因为它跨越以下几个位置:

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

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

    • 这在子 build(即构建 Fuchsia 的 Swarming 任务)中完成。环境变量会添加到分片描述中。
    • 配方代码可以修改“master”和“bot”名称以处理分支(例如版本分支)。否则,将不修改从输入属性传递名称。
  • 测试分片:在测试分片的 Swarming 任务中,会发生以下情况:

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

    • 此工具使用用 Go 编写的上传工具
    • 上传操作会使用一些凭据,这些凭据可用于 Fuchsia Infra 上的 CI build。
    • 上传错误有时会在配方步骤中报告为失败,但有时仅在 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