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 emulated x86 board'
- architecture: 'x86'
- manufacturer_link: 'https://cloud.google.com/compute'
- board_driver_location: '/src/devices/board/drivers/x86'
ARM 項目
- name: 'GCE ARM64'
- description: 'Google Compute Engine emulated ARM64 board'
- architecture: '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 VM。
回溯相容性
支援 GCE 不需要在平台中進行任何重大變更。
測試
如先前所述,基礎架構會在 CI/CQ 中於 GCE 上執行各種 Fuchsia 設定,以確保其穩定性。我們也會在 GCE 前置環境中執行,確保能及早得知任何影響/破壞 Fuchsia 的雲端變更。
缺點、替代方案和未知事項
支援 GCE 的主要缺點,是處理 Google Compute 的意外變更,導致 Fuchsia 無法運作。為避免這種情況,基礎架構會在 GCE 的階段環境中執行所有我們打算在 GCE 上執行的設定 (bringup.x64、bringup.arm64、core.x64 等)。這個環境會在變更進入實際工作環境前 4 週收到變更,也就是說,我們可以提前一個月偵測到破壞情形。我們可以利用這段時間:
- 請與雲端合作夥伴合作,找出解決方案,或
- 修改 Fuchsia 以支援雲端發布的任何新變更
值得一提的是,在我們在 GCE 上執行約 18 個月後,雲端只推出了一項導致 Fuchsia 發生問題的功能,因此發生問題的機率應該很低。