RFC-0191:Fuchsia-on-GCE 做為支援的系統設定

RFC-0191:將 Fuchsia-on-GCE 設為支援的系統設定
狀態已接受
區域
  • 管理事宜
說明

將 Google Compute Engine (x64 和 arm64) 新增為 Fuchsia 支援的系統設定。

問題
Gerrit 變更
作者
審查人員
提交日期 (年-月-日)2022-08-29
審查日期 (年-月-日)2022-09-28

摘要

本文建議 Fuchsia 專案新增 GCE (Google Compute Engine) 做為支援的系統設定。這只是將我們現有的 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 上執行大量工作,因此想將其正式納入 Fuchsia 專案支援的硬體,方法是將其新增至 /docs/reference/hardware 中的支援硬體 YAML 檔案。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 項目

  • 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 週收到變更,這表示我們能夠提前一個月偵測到中斷。接著,我們可以利用這段時間執行下列任一操作:

  1. 與雲端團隊合作找出解決方案,或
  2. 修改 Fuchsia,以配合雲端發布的任何新變更

值得注意的是,我們在 GCE 上執行約 18 個月期間,雲端只推出一項會導致 Fuchsia 故障的功能,因此故障率應該很低。