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

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

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

问题
Gerrit 更改
作者
审核人
提交日期(年-月-日)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 测试的可伸缩性、多样性和性能。具体而言,我们已经测试了以下配置:

  • bringup.x64
  • AMD 上的 bringup.x64
  • bringup.arm64
  • core.x64

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

利益相关方

教员:rlb@

由 FEC 任命的负责引导此 RFC 完成 RFC 流程的人员。

Reviewers:

  • 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

社交

我们已与 Zircon 和 Engprod 团队分享了此 RFC,并将其分享给了整个 Fuchsia 团队。

实现

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

x86 条目

  • name: 'GCE x86_64'
  • description: 'Google Compute Engine emulated x86 board'
  • architecture: 'x86'
  • manufacturer_link: 'https://cloud.google.com/compute'
  • board_driver_location: '/src/devices/board/drivers/x86'

ARM 条目

  • name: 'GCE ARM64'
  • 说明:“Google Compute Engine 模拟的 ARM64 开发板”
  • architecture: 'ARM'
  • manufacturer_link: 'https://cloud.google.com/compute'
  • board_driver_location: 'src/devices/board/drivers/acpi-arm64'

性能

在 GCE 上运行 Fuchsia 比在 Linux 主机上的模拟器中运行 Fuchsia 更快。在 x86 上尤其如此,因为我们在 x86 上使用嵌套虚拟化,因此直接在 GCE 上运行可以移除 2 层虚拟化。与在实体 NUC 上运行相比,速度也仅略慢(约 10%)。

工效学设计

基础架构希望在提交前测试中减少对非弹性硬件阵容的依赖,因为这些阵容通常会增加待处理时间,并对 CI/CQ 延迟时间产生不成比例的影响。拥有一个受支持、具有代表性且可轻松快速扩容的虚拟化平台,有助于降低这种依赖性。这反过来又会缩短提交延迟时间,从而改善开发者体验。

我们还投资了一些工具,以便开发者在办公桌前使用 Fuchsia-on-GCE 时获得更好的人体工学体验。具体而言,构建系统已生成创建计算实例所需的 UEFI 磁盘映像,fx gce 命令提供了一种简单的方法来创建、连接和删除 GCE 虚拟机。

向后兼容性

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

测试

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

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

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

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

值得注意的是,在我们在 GCE 上运行了大约 18 个月的时间里,Cloud 只发布了一项会破坏 Fuchsia 的功能,因此破坏率应该很低。