如果把 fleet 里的每台 Mac mini M4 都当成“很快就行”的黑盒,队列往往会变得难以解释。2026 年更稳妥的做法是公开发布容量包络:为基线并发提供合同式保障、允许在规则下从共享池借用突发容量,并用重置窗口在抖动出现前归还借用额度。本文给出两张决策矩阵、可直接写进运行手册的参数起点,以及与标签路由、预留策略相衔接的八步上线清单。
延伸阅读:软/硬亲和与跨机分散规则、多项目预留、抢占与冷却。若准备在香港、日本、韩国、新加坡或美国增加节点,可先查看 定价,并把 帮助中心 中的 SSH/VNC 接入范式放在手边。
为什么平均 CPU 会误导 Mac Runner 容量判断
Apple Silicon 上的 CI 主机常常显示“CPU 很闲”,但发布截止时间仍然被错过。根因在于结构:Xcode 编译、UI 测试与签名链路会在磁盘 IO、Metal 或 codesign 链路上产生短促尖峰,造成排队头阻塞。平均值无法揭示多仓库共享单机时的队头不公平。容量包络强迫你用并发作业数与队列深度思考,而不是只看利用率曲线。
- 并发作业才是真正的货币;CPU 百分比只是次要信号。
- 队列深度能判断借用方是否挤占基线;延迟分位数能判断重置是否过狠。
- 重置窗口把“口头上的客气”变成可执行的策略,让共享池在事故负载下仍保持公平。
三层包络:基线、突发池、重置
将每个业务单元(或关键发布列车)视为在特定标签的 Mac mini M4 上拥有基线包络。突发池是共享容量,任何满足标签策略的工作流在不超过借用上限时可临时使用。重置层确保“临时突发”不会演化为长期占坑。
| 层级 | 保证什么 | 常见控制手段 |
|---|---|---|
| 基线 | 为团队或发布列车保留的最小并发作业数 | 专用标签、Runner 分组或每队列硬下限副本 |
| 突发借用 | 发布周或事故热修期间的额外并发 | 共享 burst-eligible 标签并为租户设置数值上限 |
| 重置 | 除非按策略续期,否则借用槽位到期归还 | 冷却分钟数、日历重置或每日“借用代币”预算 |
决策矩阵:允许突发借用 vs 强制硬上限
在新仓库接入 Mac fleet 时使用下表。若不确定,默认对触碰签名密钥或生产发布产物的流水线选择硬上限,待可观测性证明队列稳定后再放宽。
| 工作负载形态 | 是否借用 | 理由 |
|---|---|---|
| 特性分支 CI(Lint + 单元测试) | 可,带重置 | 需求弹性、失败成本低,适合共享突发池 |
| 发布列车(RC 构建) | 有限借用 | 时间窗内突发 + 严格重置与变更评审窗口一致 |
| 需要 GPU 稳定性的 UI 测试分片 | 通常不 | WindowServer 存在隐性争用;更宜用分片标签与硬上限 |
| 已签名且需公证的构件 | 硬上限 | 可审计性与确定性排序优先于吞吐 |
本周即可落地的参数起点
下列数字是起点,请用你们自己的作业 p95 时长调参。目标是让策略对开发者可读:“你们始终拥有两条车道;发布窗口内在池有余量时可申请第四条。”
- 每团队基线:在内存 ≥24 GB 的 M4 主机上,移动端团队默认 2 个并发 macOS 作业;较小服务团队默认 1 个。
- 每团队突发上限:相对基线最多再借 +3,除非变更单临时提高。
- 重置窗口:借用槽位在墙钟 45 分钟或完成 12 个突发作业后到期,以先到者为准。
- 队列深度告警:任一区域 macOS 队列深度 > 25 持续 10 分钟即告警。
- 公平性护栏:若单个仓库单日消耗 >35% 的突发分钟数,自动撤销其突发标签直至复盘。
运维提示:没有重置的突发借用,会让“五团队共享十台 Mac”悄悄变成“一个团队长期占用九台”。把数字写进内部开发者门户;保密换不来合规,只会积累怨气。
八步推广清单(面向整个 fleet)
- 清点 Runner:按标签、区域、内存档位与 Xcode 钉扎版本列出清单;未知来源主机不得进入突发池。
- 定义基线:用工程经理会签的表格确定每团队基线,而不是仅由基础设施单方面决定。
- 实现突发标签:与基线标签分离;在 README 模板中写明借用资格。
- 自动化重置:用定时任务或策略引擎在预算到期时移除突发标签。
- 接入指标:队列深度、等待时间 p95、每仓库借用分钟数;按区域分面板。
- 季度演练:每年至少两次模拟突发耗尽,验证基线仍可清空。
- 事故复盘:必须引用包络参数;有证据时再调整上限。
- 硬件扩容:当基线长期被饿死时扩容——NodeMac 在香港、日本、韩国、新加坡与美国提供可预期的独占 M4 节点,免去自建机房搬运与布线。
常见问题
2026 年 Mac CI Runner 的容量包络指什么?
它是面向团队或流水线的合同:规定基线并发、突发借用规则以及借用额度如何重置。包络把公平性从文化约定变成可执行策略。
何时应关闭突发借用?
在需要独占硬件、需要稳定复现以隔离不稳定测试、或受监管构建要求队列顺序与审计证据严格对应时,应关闭借用,改用硬上限与专用 Runner 组。
重置窗口如何降低集群抖动?
重置强制借用并发在到期后归还,除非显式续期,从而避免长期占用共享池,并在事故后为基线留出喘息空间。