仿真到能跑原廠固件,才算跨過謊言的邊界
Voxel 用十二週把整個 Oxide 機架塞進一臺迷你主機,但真正的門檻不是跑起來,而是不改一行主軟件、用原廠固件跑通——那才是仿真和自欺的分界線。
原視頻在 YouTube 上放不出來,用音頻聽:
核心論點 · 點時間戳可跳到原聲
測試環境永遠排第二十七位
Steve Karam 說,任何做過軟件開發或 IT 的人都知道,測試環境通常不是第二小提琴,而是第二十七小提琴,只排在教育和賦能環境、文檔前面。而當你的產品是一整個機架時,這個問題尤其難:機架本身、fabric、sled、switch zone、SP、root of trust,每一層都要有。Oxide 因此有多個保真度層級:dog food 機架、racklet 迷你機架、單實例 Omicron(模擬版或跑在 Helios 上的物理版),但缺一個比 racklet 更容易、比單機箱保真度更高的中間層。
— Steve Karam四乘二把一切壓到啟動那一刻
Voxel 的前身叫 four by two,靠一堆 shell 腳本定義機架該長什麼樣,啟動時用 cargo bay、共享盤、網絡和模擬網絡把虛擬機架拉起來。它確實能用,IPv6 和 unnumbered BGP 就是先在 four by two 上測的。但 Steve 指出致命問題:把所有事情都放在啟動時做是災難配方——啟動要四十分鐘,很難自愈,而且「你知道它一定會在第四十分鐘的最後兩分鐘崩」。Ryan Goodfellow 因此提出重做,並起了 Voxel 這個名字:Virtual Oxide Emulation Labs。
— Steve KaramVoxel 把構建和部署拆成兩步
Voxel 與 four by two 最大的區別是構建和部署分離:給一個 Omicron commit,它 clone、編譯,產出一個完美成形的 sled 鏡像並做快照,再複用這個快照去扮演所有 sled 和 gimlet。另一個大變化是全部用 Rust 重寫,儘量擺脫 shell 腳本。因為一個快照要扮演六種角色,就需要有人告訴它做什麼——Voxel 裡內置了一個 Rust 寫的 agent,隨每個 sled 啟動下發,告訴它「你是 switch」「你是 sled 1」「你是 sled 2」。
— Steve KaramLLM 擅長枚舉寄存器,不擅長判斷線程
Steve 說 LLM 在枚舉寄存器、找出組成完整系統的零碎部件上非常強,因為沒人能把整機架的東西都裝在腦子裡;配上 RFD 和設計文檔做上下文,結果會清晰得多。但它在別處會自信地給出錯誤結論:他曾讓 root of trust 和 SP 共用一個線程通信,LLM 說這絕對不是問題,拆開後性能提升 500 倍,機架才能同時啟動兩者。
— Steve Karam別改主軟件,這是 Voxel 的底線
Steve 說 Voxel 有一條儘量守住的信條:不要修改主軟件。他做 multi rack 時曾往 Voxel 裡塞各種 hack,讓 Voxel 和 Omicron 假裝已經支持多機架,比如造一個 Omicron 里根本不存在、卻在 Voxel 裡神奇存在的端口。Robert 在公司頻道里說,不應該創造 Omicron 裡實際沒有的東西。Steve 承認這是對的:這是本末倒置,也是做仿真時容易掉進去的陷阱——你開始重寫地基,然後覺得「為什麼不呢」。
— Steve Karam仿真返回期望值,模擬才暴露真相
Steve 區分 simulation 和 emulation:SP SIM 是一組輕量 stub,對 sled 的響應像真的 SP,能完成虛擬機架初始化和上線,但它不是微控制器。這是典型的 simulation——返回的是期望中的響應,多數時候走 happy path,從測試角度看恰恰是問題。他給 Claude 一個週末任務,讓它寫 STM32 H753 微控制器模擬器,因為找不到現成的 Rust 方案。第一次跑起來但幾乎做不了任何事,又花了兩三個小時調整後,成功刷進一個最小 hubris archive,機器起來了。
— Steve Karam輪詢式初始化會殺死模擬性能
Oxide 的初始化非常 pull heavy:服務以近乎恆定的頻率輪詢更新。對模擬的服務處理器來說這很糟,因為要保持等待狀態就得讓線程一直空轉,會徹底毀掉模擬本來就不高的性能。而且真 SP 需要 QSPI host boot flash、SP rot 與 root of trust 通信、ignition 寄存器等一大堆指令。Steve 的做法是反覆起 Voxel lab,看 RSS 為什麼起不來,發現它卡在記錄溫度測量之類的地方,然後一條一條補上最小指令集和最小傳感器集。
— Steve Karam能跑原廠固件才算跨過謊言的邊界
Steve 給出「什麼時候算夠了」的標準:Voxel 加 SP EMU 能在單臺 Helios 機箱裡跑完整的多節點或多機架 lab,用的是未經修改的 stock Omicron(無論從源碼還是從 tough repo),跑的是 stock hubris 鏡像——sidecar 和 Gimlet 鏡像就是隨產品出貨的那些,不做任何修改。他說,當仿真能和你的發布產品一起工作時,這就是謊言的邊界。Ben Stoltz 還加了 Boodleby(root of trust 安全啟動)和 Glasgow Bridge,讓它能用 humility 做 trace,甚至能跑 Oxide 原生系統更新去刷固件。
— Steve Karam原話 · 已逐字校驗
you are building like a production quality product used by Oxide to build more production quality software. It's not a step down from everything else we're doing, right?
你是在做一個生產級產品,Oxide 用它來構建更多生產級軟件。它不是我們其他工作的降級版,對吧?
Andrew Stone0:00
Like, without testing, without like actually using the real dendrite software and like passing through the right stuff, like, you don't have a demo, right? You're just kinda lying.
如果不測試、不真正跑真實的 Dendrite 軟件、不把正確的數據傳下去,你就沒有 demo,你只是在騙人。
Andrew Stone5:12
this other tooling had become existentially important to the company because this is how we were able to deliver as many racks as we were
這套工具已經變成公司生死攸關的東西,因為正是靠它我們才能交付那麼多機架。
Rain Paharia15:20
It's hard to self heal. If something breaks, you know know damn well it's gonna break in the last, like, two minutes of the forty minute process.
它很難自愈。如果哪裡壞了,你心裡清楚得很,它一定會在四十分鐘流程的最後兩分鐘崩掉。
Steve Karam17:00
an LLM will confidently tell you that, no. This absolutely is not a problem. You can have the root of trust and SP sharing a thread and communicating that way
LLM 會自信地告訴你:不,這絕對不是問題。你可以讓 root of trust 和 SP 共用一個線程、用那種方式通信。
Steve Karam24:05
I don't feel like we should be creating things that aren't actually in Omicron.
我覺得我們不應該創造 Omicron 裡實際並不存在的東西。
Steve Karam26:00
And to me, that is kind of the barrier of lies when they when the emulation can work with your release product.
對我來說,當仿真能和你的發布產品一起工作時,這就是謊言的邊界。
Steve Karam44:00
數字與實體
| four by two 啟動耗時 | 40 分鐘 | 17:00 |
| Claude 寫 STM32 H753 模擬器後的調試時間 | 2-3 小時 | 30:00 |
| Voxel 開發時長 | 約 12 周(五月底/六月開始) | 8:44 |
| Voxel Proto 分支 commit 數 | 70 多個 | 8:44 |
| 拆開 SP 與 root of trust 線程後的性能提升 | 500 倍 | 24:05 |
| commissioning API 工期 | 兩週 | 15:20 |
| Steve Karam 的 minisforum 迷你 PC 線程數 | 32 線程 | 0:00 |
| 該機器上可跑的節點 rack 規模 | 六到八個節點 | 0:00 |
術語
- VoxelVirtual Oxide Emulation Labs
- Oxide 的機架級仿真環境,用快照扮演所有 sled 和 gimlet。
- four by two四乘二
- Voxel 的前身,用 shell 腳本在啟動時拉起虛擬機架。
- simulation vs emulation仿真與模擬
- 前者返回期望響應走 happy path,後者建模真實硬件行為暴露真相。
- SP EMU服務處理器模擬器
- 建模 STM32 微控制器,讓 stock hubris 固件能真實運行。
- hubrishubris
- Oxide 的嵌入式操作系統,跑在 SP 和 root of trust 上。
- commissioning API上架 API
- Wicket 的版本化正式 API,用於機架初始化和恢復式更新。
收聽指南
做硬件軟件交界、仿真環境或內部工具鏈的工程師和 CTO,尤其是那些在糾結「仿真到什麼程度才算夠」的團隊。
對機架硬件細節無感的人,可跳過 38:00 前後關於輪詢和寄存器建模的技術段落。