RFC-0191:作为支持的系统配置使用 Fuchsia-on-GCE

RFC-0191:将 Fuchsia-on-GCE 作为受支持的系统配置
状态已接受
领域
  • 治理
说明

将 Google Compute Engine(x64 和 arm64)添加为 Fuchsia 支持的系统配置。

问题
Gerrit 更改
  • 717989
作者
审核人
提交日期(年-月-日)2022-08-29
审核日期(年-月-日)2022-09-28

总结

本文档提议将 GCE (Google Compute Engine) 添加为 Fuchsia 项目支持的系统配置。这只是正式说明了我们当前使用 GCE 作为测试 Fuchsia 的平台,并统一了确保 GCE 在 ToT 上正常运行的承诺。

不过请注意,虽然我们确实要大规模地利用此功能,但如果将其编码为受支持的 Fuchsia 平台,则需要在 Zircon 内核中保持对 ACPI 和 UEFI 的支持。对于 x64 来说,这是目前经验相对丰富的路径,但对于 ARM64 来说却不尽人意。

设计初衷

基础架构已利用 Fuchsia-on-GCE 改善 CI/CQ 测试的可伸缩性、多样性和性能。具体而言,我们已经测试了以下配置:

  • 启动.x64
  • 在 AMD 上搭载 makeup.x64
  • playup.arm64
  • core.x64

现在,我们正在 GCE 上执行大量工作,我们希望通过将其添加到 /docs/reference/hardware 中受支持的硬件 YAML 文件,将其正式化为 Fuchsia 项目支持的硬件。RFC-0130:支持的硬件指出:“向此 YAML 文件中添加新条目以及因此在“受支持”类别中添加新硬件的过程是创建新的 RFC。”

利益相关方

教员:rlb@

由 FEC 指定的人员,负责通过 RFC 流程管理此 RFC。

审核者

  • cpu@google.com
  • curtisgalloway@google.com
  • tkilbourn@google.com
  • travisg@google.com

咨询人员

  • maniscalco@google.com
  • venkateshs@google.com
  • nmulcahey@google.com
  • andresoportus@google.com
  • simonshields@google.com

社交

此 RFC 与所有 Zircon 和 Engprod 社交,然后与所有 Fuchsia 共享。

实现

要将 GCE 添加到受支持的系统配置列表中,只需修改 /docs/reference/hardware/_supported.yaml 文件即可。我们将在该文件中添加两个条目,一个用于 x86,一个用于 ARM。

x86 条目

  • 名称:“GCE x86_64”
  • 说明:“Google Compute Engine 模拟 x86 板”
  • 架构:“x86”
  • Maker_link:“https://cloud.google.com/compute”
  • board_driver_location:'/src/devices/board/drivers/x86'

ARM 条目

  • 名称:“GCE ARM64”
  • 说明:“Google Compute Engine 模拟 ARM64 板”
  • 架构:“ARM”
  • Maker_link:“https://cloud.google.com/compute”
  • board_driver_location:“src/devices/board/drivers/acpi-arm64”

性能

在 GCE 上使用 Fuchsia 比在 Linux 主机上的模拟器中运行 Fuchsia 更快。特别是在 x86 上,我们使用嵌套虚拟化,因此直接在 GCE 上运行会移除 2 层虚拟化。此外,与在物理 NUC 上运行,它只慢了一点(约 10%)。

工效学设计

基础架构希望减少其在提交前测试中对非弹性硬件舰队的依赖,因为这通常会增加等待时间,并且对 CI/CQ 延迟的影响大不相同。拥有一个我们能够轻松快速地扩缩的受支持、有代表性的虚拟化平台可以降低这种依赖性。这反过来又可以缩短提交延迟时间,从而改善开发者体验。

我们还投资开发工具,为工作中的开发者改进 GCE 上 Fuchsia 的工效学设计。具体而言,构建系统已生成创建计算实例所需的 UEFI 磁盘映像,而 fx gce 命令提供了一种创建、连接和删除 GCE 虚拟机的简单方法。

向后兼容性

支持 GCE 不需要在平台内进行任何破坏性更改。

测试

如前所述,基础架构将在 CI/CQ 中的 GCE 上运行各种 Fuchsia 配置,以确保其稳定性。我们还将在 GCE 预演环境中运行,以确保尽早获知任何会影响/破坏 Fuchsia 的云更改。

缺点、替代方案和未知情况

支持 GCE 的主要缺点是处理 Google Compute 中破坏 Fuchsia 的意外更改。为避免这种情况,基础架构将在 GCE 预演环境中运行我们计划在 GCE 上运行的所有配置(bringup.x64、callup.arm64、core.x64 等)。此环境在进入生产环境前大约 4 周便会收到更改,这意味着我们将能够提前一个月检测到破坏情况。然后,我们可以将这段时间用于:

  1. 与云合作寻找解决方案,或
  2. 修改 Fuchsia 以适应云发布的任何新变化

值得注意的是,在我们运行 GCE 后的大约 18 个月内,云仅推出了一项破坏 Fuchsia 的功能,因此破坏率应该很低。