本页介绍了如何将 Fuchsia build 的性能结果上传到 Chromeperf,以及如何配置 Fuchsia 对 Chromeperf 的使用。
其中部分内容是在 Google 内部代码中实现的,此处未进行完整介绍。Google 员工可以参阅此文档的 Google 内部版本了解详情。
上传代码路径
上传到 Chromeperf 的代码路径有点复杂,因为它跨越以下几个位置:
构建器配置:文件
catapult.star
包含一个映射,用于指定哪些构建器应将性能结果上传到 Chromeperf,并允许重新映射名称。此文件位于 Google 内部版本的integration.git
中,即infra/config/
。catapult.star
中的条目的作用是在相应构建器的属性中设置嵌套字段catapult_dashboard_master
和catapult_dashboard_bot
。属性存储在已签入integration.git
的生成的文件中。- 这样一来,只有 CI build 才会上传到 Chromeperf。
- 此映射已在 https://fxbug.dev/42126577 中实现。
子 build:基础架构方案代码会根据输入属性设置各种环境变量,包括
CATAPULT_DASHBOARD_MASTER
和CATAPULT_DASHBOARD_BOT
。请参阅testing_requests/api.py
。- 这在子 build(即构建 Fuchsia 的 Swarming 任务)中完成。环境变量会添加到分片描述中。
- 配方代码可以修改“master”和“bot”名称以处理分支(例如版本分支)。否则,将不修改从输入属性传递名称。
测试分片:在测试分片的 Swarming 任务中,会发生以下情况:
- 每个测试可以生成
*.fuchsiaperf.json
文件。 - 生成
fuchsiaperf
文件的测试会将这些文件传递给 Pythonperf_publish
库或 Dartperformance.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.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
。