| 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 流程的人员。
审核者:
- 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 团队成员分享。
实现
只需修改 /docs/reference/hardware/_supported.yaml 文件,即可将 GCE 添加到支持的系统配置列表中。我们将向该文件添加两个条目,一个用于 x86,另一个用于 ARM。
x86 入口
- name: 'GCE x86_64'
- description: 'Google Compute Engine 模拟 x86 板'
- 架构:'x86'
- manufacturer_link: 'https://cloud.google.com/compute'
- board_driver_location: '/src/devices/board/drivers/x86'
ARM 条目
- name: 'GCE ARM64'
- description: 'Google Compute Engine 模拟的 ARM64 板'
- 架构:'ARM'
- manufacturer_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 延迟产生不成比例的影响。拥有受支持的代表性虚拟化平台,我们可以轻松快速地进行扩容,从而减少这种依赖性。这反过来会缩短提交延迟时间,从而改善开发者体验。
我们还投资开发了相关工具,以改善开发者在办公桌上使用 Fuchsia-on-GCE 的人体工程学体验。具体来说,构建系统已生成创建计算实例所需的 UEFI 磁盘映像,而 fx gce 命令提供了一种简单的方式来创建、连接和删除 GCE 虚拟机。
向后兼容性
支持 GCE 不需要对平台进行任何重大更改。
测试
如前所述,基础架构将在 CI/CQ 中在 GCE 上运行各种 Fuchsia 配置,以确保其稳定性。我们还将在 GCE Staging 环境中运行,以确保及时了解任何会影响/破坏 Fuchsia 的云端变更。
缺点、替代方案和未知因素
支持 GCE 的主要缺点是需要处理 Google Compute 中导致 Fuchsia 崩溃的意外更改。为避免这种情况,基础架构团队将在 GCE staging 环境中运行我们计划在 GCE 上运行的所有配置(bringup.x64、bringup.arm64、core.x64 等)。此环境会在变更进入生产环境前约 4 周收到变更,这意味着我们能够提前一个月检测到中断。然后,我们可以利用这段时间执行以下任一操作:
- 与云支持团队合作寻找解决方案,或
- 修改 Fuchsia 以适应云端发布的所有新更改
值得注意的是,在过去约 18 个月内,我们在 GCE 上运行期间,云端仅推出了一项会破坏 Fuchsia 的功能,因此破坏率应该很低。