架構與策略 2026年4月8日

2026 決策矩陣:獨佔 Mac mini M4 上多項目 Runner 預約槽、搶佔與冷靜期

NodeMac Team

構建基礎設施編輯

當你已經把 Mac mini M4 當作可調度節點,並為 CI 與 Agent 混池寫好並發切片與公平性矩陣,下一類故障往往來自「組織政治」:A 項目「現在就要這臺機」,B 項目作業已在跑,值周同學被要求「把優先級頂一下」。若沒有明文規則,每一次升級都會變成對人不對事的扯皮。本文給出 2026 年可落地的第二層治理:把單機上的重作業能力拆成可籤約的預約槽,定義何時允許搶佔,並用冷靜期防止高優先級流量反覆殺死隊列造成震蕩。文內含兩張決策表、八步 rollout 清單,以及與容量借調、隊列 SLO、可調度節點文檔的顯式銜接。

公平性與切片基線見上文連結;臨時把容量劃給自動化見 容量借調;排隊深度與擴縮見 隊列等待 SLO。若你用標籤區分自動化主機,請與 可調度 Mac 節點 中的 CMDB 欄位保持一致。加機參考 定價與區域,連接與權限見 幫助文檔

預約 vs 彈性溢出:先把詞定義清楚

預約(reservation)是一份合同:團隊 X 在本地工作日 09:00–21:00 內,對標籤 mac-ci-heavy 上最多 R 個並發重作業享有優先權,與樓裡是否還有其他人無關。彈性溢出指其餘一切:有空位就跑、沒空位就讓路的作業,適用於實驗分支與低嚴重度流水線。若編排器無法同時表達兩種語義,你會在 Slack 裡無限次手寫「臨時規則」。預約應少而精、帶時間邊界、綁定成本中心;彈性應是默認路徑。

在 Apple Silicon 上,「空位」不僅是 CPU。兩個重疊的 xcodebuild 常把常駐內存推到 28~36 GB 區間,第三個任務即便 CPU 錶盤好看也可能 OOM 或極端 swap。預約數量必須與你在公平性矩陣裡用過的工作負載類別對齊——重編譯、多模擬器 UI、僅 lint——而不是每團隊一個全局數字。否則會出現「籤了三個槽」但每個槽其實是整套 UI 套件、本應只佔一個槽的合同欺詐(無意或有意)。

搶佔策略矩陣(何時允許殺作業或重新入隊)

進入作業 受害者負載 是否搶佔
Sev-1 發布熱修(有事故單) 彈性 lint / 文檔構建 ——受害者帶原因碼重新入隊
Sev-1 發布熱修 另一團隊在合約窗口內的預約重槽 ——用空閒主機或書面高管例外並留審計痕跡
無事故 ID 的「老闆急」 任意 ——按彈性處理;擴容而非搶佔
夜間定時浸泡 交互式研發 CI ——改浸泡起鐘點或專用浸泡標籤

核心不變量:搶佔是治理動作,不是誰都能擰的調度旋鈕。每次合法搶佔應產出:事故或變更單號、受害者作業 ID、授權工程師。審計時若一分鐘內拿不出這三樣,說明政策寫在 PPT 裡而非系統裡。多數團隊發現:除書面高管例外外禁止搶佔預約持有者,比調任何超時更能減少周末電話。與「口頭 P0」文化對抗時,把本表列印在值班手冊封面比開十次架構會有效。

冷靜期與防震蕩參數

事件 建議冷靜期 原因
作業被搶佔(重入隊) 同一項目 15~30 分鐘內不得再次發起搶佔 避免兩個「急單」打桌球
預約窗口開始 開頭 5 分鐘寬限——禁止新搶佔 讓在跑彈性作業體面收尾
主機維護歸來 10 分鐘僅允許彈性輕作業 避免冷緩存瞬間被重編譯打滿

指標掛鈎:每周統計搶佔次數並與 p95 牆鍾回歸做關聯。若搶佔上升而 SLO 未改善,屬于震蕩——應加機或縮短預約窗口,而不是再加殺戮。

八步落地清單

  1. 盤點標籤:確保 mac-ci-* 與 Agent 標籤不會誤命中同一預約規則。
  2. Git 編碼預約:YAML 寫明負責人、時間窗、每類負載的 R
  3. 編排器鉤子:實現不可從倉庫文件覆蓋的「預約令牌」或隊列優先級。
  4. 搶佔 API:單一內部端點或 slash 命令,強制記錄工單 + 受害者 + 操作者。
  5. 冷靜期狀態:在隊列元數據或 Redis 記錄每項目上次搶佔時間並設 TTL。
  6. 看板:一塊展示「預約槽佔用/應得」,一塊展示「每日搶佔次數」。
  7. 演練:用模擬 Sev-1 與彈性受害者彩排,驗證審計日誌欄位齊全。
  8. 季度評審:連續八周利用率低於 40% 的預約應 sunset——閒置 entitlement 腐蝕信任。

與並發切片、磁碟治理如何咬合

預約解決誰有權佔位,並發切片解決單機安全並發。若合同給團隊兩個預約重槽,但每機切片只允許一個不觸發 swap 的重編譯,合同即虛假。發布預約數字前,用公平性矩陣與 磁碟與產物保留策略 回放一遍——搶佔風暴常與 DerivedData 風暴同現,被殺作業往往在磁碟留下半成品。

若同池還跑 OpenClaw 等自動化,要麼為 Agent 單獨設 R_agent 預約類,要麼在營業時段禁止搶佔 Agent 機。把「CI 搶佔」與「網關重啟窗口」混為一談,會得到最難查的 flaky:預發全綠、生產偶發因為那裡沒人搶佔。

財務分攤:不要幻想表

預約是內部 chargeback 的自然輸入:每預約槽·小時可從 Mac 攤銷、電力與機櫃成本計價;彈性用量可用低價或打包進平臺工程。常見錯誤是財務在未經 SRE 背書的情況下「拍腦袋定槽數」——當預約總和超過物理安全並發時,要麼項目為空氣付費,要麼 SRE 為告警付費。建議每月發布一頁紙:「每臺 M4 安全重槽上限」對照「各團隊籤約預約之和」。

常見反模式

無限優先級檔(P0~P9)卻無搶佔規則——人人標 P0;搶佔不通知受害者——研發花半天查「假 flaky」;月更團隊卻持永久預約——容量囤積;冷靜期為 0——兩位總監交替頂掉對方流水線。糾正這些更多靠把上表寫進與 Runner 鏡像同一倉庫,而不是再買監控 SKU。

在財季鎖預算前需要額外專用機驗證預約數學,可用帶 SSH/VNC 的短期 Mac mini M4 按真實標籤重放生產拓撲,用真構建證明安全 R,而非用 PPT 證明。NodeMac 在香港、日本、韓國、新加坡與美國提供節點,按需付費降低試錯成本,與「凍結共享構建機做實驗」相比更省協作摩擦。

要在真機上驗證預約模型?

港·日·韓·新·美 M4,SSH/VNC——專用 Mac mini M4。

NM
NodeMac Cloud Mac
5分鐘部署

在雲端租用專用的 Apple Silicon Mac。SSH/VNC 訪問,港·日·韓·新·美節點。

立即開始