租賃 Mac mini:Spotlight mds 索引用與 CI 磁碟預算——2026 VmMac 矩陣
負責建置基礎架構的團隊從 VmMac 租用Apple Silicon Mac mini 時,接手的往往是為筆電設計的 macOS 預設值,而非專為編譯叢集調校:Spotlight 與 mds 中繼資料子系統會樂意為 TB 級的 .o 產物建索引用,同時讓 xcodebuild 作業趕不上 SLO。本 2026 矩陣說明為何虛擬機黃金映像一律剝除索引用、裸機上如何以 mdutil 重現相同紀律,以及如何把香港、日本、韓國、新加坡、美國主機維持在「可預測的無趣」狀態。內文含兩張對照表、九道執行步驟、數值型告警,以及常見問答。建議併讀 平行的 DerivedData 與模擬器通道、APFS 第二卷與 CI 隔離,以及 閒置睡眠與 CI 電源斷言對照互動式 QA,讓磁碟政策永遠不與排程器政策衝突。
啟動與帳單面請參考 說明與 SSH 開通;若將「關閉索引用之純編譯池」與「保留索引用之互動式 QA 站」分池,請用 定價與方案 估算;需要桌面搜尋體驗的測試人員請保留 VNC 通道。導覽可自 首頁 進入產品路徑。
為何黃金映像永遠關掉 Spotlight,以及裸機必須模仿什麼
Hypervisor 範本預設關閉索引用,因為無法預測的 mdworker 尖峰會讓 A/B 效能測試失真。在 VmMac 上你並非每日還原差分磁碟,而是以 SSH 連線持久主機,且仍會收到 Apple 中繼資料更新。因此你的「無塵室」是政策檔+週期性守門行程,而非一鍵還原。忽視此點的團隊,常在 Xcode 釋出新 Spotlight 匯入器那週,目睹 p95 編譯時間兩位數惡化——正是讓工程師不再信任遠端 Mac 叢集的那類雜訊。
- 每次
git clean -fdx之後的索引用重建翻騰:上千小檔對 mds 而言像整顆檔案系統重建。 - 當 Spotlight 與
ld爭奪同一條 NVMe 佇列時的IO 優先權反轉。 - 客戶夾具位於被 Spotlight 納入桌面搜尋的卷上時的資安曖昧性。
mds、mdworker、mds_stores 如何在火燄圖上幾乎看不見卻仍吃掉 CI SLO
CPU 分析器把時間歸在 Swift 編譯器,但底層症狀常是讀取被擋、中繼寫入器握著鎖。當磁碟利用率約 95% 而使用者態 CPU 看起來很閒,請懷疑 .Spotlight-V100 下中繼儲存擴張。另一訊號是 launchd 工作延遲:若包裝器觀測到排定時間與第一個編譯器系統呼叫之間超過 400 毫秒 p95 偏差,在怪排程器之前先查是否發生 mdworker 風暴。
fs_usage 採樣 mds 相關路徑。
矩陣:關閉索引用之 CI 卷、全域索引用、與選擇性排除
| 政策 | 營運成本 | 效能可預測性 | 桌面體驗 |
|---|---|---|---|
| 專用 CI APFS 卷且關閉索引用 | 中——需掛載命名紀律 | 高 | 若 GUI 使用者不瀏覽該卷則無 |
| Data 卷開啟全域索引用 | 低 | 大型分支切換期間低 | VNC 測試者可獲高品質搜尋 |
| 每路徑隱私 plist 排除 | 高——隨資料夾更名偏移 | 中 | 部分;測試者可能漏掉新路徑 |
第一列是 VmMac 上無人值守 CI 的預設建議:把需要互動式設定檔的主機或卷分開,避免產品經理為了在 build 根目錄找 PDF 而「好心」重開建索引。
Runbook 應逐字引用的 mdutil 指令
新卷一掛載就先檢查狀態:
mdutil -s /Volumes/VmMacCI
通過安全審查後,針對該掛載關閉索引用:
sudo mdutil -i off /Volumes/VmMacCI
若為鑑識搜尋而刻意重建中繼資料,請在維護窗內擦除儲存、完成健康檢查後再把主機交回 CI:
sudo mdutil -E /Volumes/VmMacCI
明文化誰可執行:在共享租賃上,請將 sudo 限於基礎架構職能,避免應用團隊為個人桌上習慣在發佈週中切換索引用狀態。
隱私、Spotlight 與共享主機上的客戶資料
建索引用不僅耗 CPU——檔名與片段可能流入搜尋 API,違反人員原先預期。若通道資料夾含含個資的日誌,請把索引用作業視為與 GDPR 或日本 APPI 登記冊同級的處理活動。請將 通道隔離 的檔案系統佈局指引,與那些路徑上明確的「不建索引」旗標併用,即使磁碟其餘部分仍開啟全域索引用。
2026 九階執行階梯
- 盤點香港、日本、韓國、新加坡、美國上每一顆掛載卷,記錄預設 mdutil 狀態。
- 將卷分類為 CI_ARTIFACT、INTERACTIVE 或 MIXED;在編譯為重的主機上禁止混合。
- 對 CI_ARTIFACT 掛載套用
mdutil -i off;依主機等級在 git 中擷取mdutil -s輸出。 - 新增每週
launchd工作,重新宣告政策,並在狀態漂移時告警。 - 以 mdworker CPU 佔全核心百分比製圖;連續超過 15 分鐘 高於 12% 則 on-call。
- 將尖峰與
fseventsd卷重新掛載關聯;修正讓掛載反覆顫動的自動化。 - 在桌面設定檔用與 CI 相同路徑排除暫存套件快取,降低認知落差。
- 文件化還原:鑑識若要安全重開索引用,須在 30 分鐘 內可完成。
- 每季演練:刻意灌滿 CI 卷,驗證索引用保持關閉。
VmMac 五地域一致性(香港/日本/韓國/新加坡/美國)
延遲可依地理調整,但中繼政策不應。當新加坡編譯機在靜默建索引而美國主機不建,你會在 Swift 編譯儀表板上追逐幻影。請將 plist 片段與 shell 節錄收在同一私有倉庫、為發行打標籤,並以與編譯器釘選相同的管線晉升。
能抓住真迴歸的數值型告警
| 指標 | 閾值 | 意義 |
|---|---|---|
| mdworker CPU | 15 分鐘內 > 12% | 索引用風暴或卡住的儲存 |
| CI 卷可用空間 | < 30 GB | mds 膨脹風險+建置失敗風險 |
| 建置包裝器偏差 | p95 > 400 ms | 在怪編譯器前先查 Spotlight |
常見問題:租賃 Mac mini CI 上的 Spotlight
關閉索引用會弄壞 Xcode 嗎? 對命令列建置不會;若你仰賴同一卷上的 Xcode Organizer 搜尋則會——請分主機。
那 Time Machine 呢? 卷配置理論上正交,但若備份指到 CI 磁碟可能觸發大量 mds——請完全避開此拓撲。
誰能核准 sudo mdutil? 僅限平臺工程,帶工單的例外最長 48 小時。
為何 Mac mini M4 與 VmMac 讓索引用政策變便宜
Mac mini M4 在需 QA 站真的開啟建索引時,有足夠持續 IO 在合理時間內建完正當索引用,同時專用編譯租賃可維持關閉狀態。VmMac 的多地域版圖讓你可在香港、日本、韓國、新加坡、美國把關閉索引用之編譯池放近使用者,而無需以隨身碟遞送黃金 VM 映像。多租一臺 mini 分開「要桌面搜尋的測試者」與「不要建索引的建置者」,比燒工程時數在難以重現的效能掉釘上更划算。