本页介绍了如何将 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_master和catapult_dashboard_bot的效果。这些属性存储在已签入integration.git的生成文件中。- 这样一来,系统仅会为 CI build 上传到 Chromeperf。
- 此映射是在 https://fxbug.dev/42126577中实现的。
子 build: Infra recipes 代码会根据输入属性设置各种环境变量,包括
CATAPULT_DASHBOARD_MASTER和CATAPULT_DASHBOARD_BOT。请参阅testing_requests/api.py。- 此操作在子 build(即构建 Fuchsia 的 Swarming 任务)中完成。环境变量会放入分片说明中。
- recipes 代码可能会修改“master”和“bot”名称以处理分支(例如发布分支)。否则,这些名称将从输入属性中未经修改地传递。
测试分片: 在测试分片的 Swarming 任务中,会发生以下情况:
- 每项测试都可能会生成
*.fuchsiaperf.json文件。 - 生成
fuchsiaperf文件的测试会将这些文件传递给 Pythonperf_publish库或 Dartperformance.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.dart 和 perf_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。