Аренда Mac mini: индексация Spotlight (mds) против бюджета диска CI — матрица VmMac 2026
Владельцы инфраструктуры сборки, арендующие Apple Silicon Mac mini у VmMac, наследуют значения macOS, рассчитанные на ноутбуки, а не на фермы компиляции: Spotlight и подсистема метаданных mds с готовностью проиндексируют терабайты файлов .o, пока задание xcodebuild не укладывается в SLO. Эта матрица 2026 года объясняет, почему золотые образы виртуальных машин всегда отключают индексацию, как воспроизвести ту же дисциплину на «голом железе» с помощью mdutil и как удерживать хосты в Гонконге, Японии, Корее, Сингапуре и США скучно одинаковыми. Ниже — две сравнительные таблицы, девять шагов внедрения, числовые алерты и блок вопросов и ответов. Сочетайте с материалами про параллельные полосы DerivedData, вторичные тома APFS и сон в простое и утверждения питания в CI против интерактивного QA, чтобы политика диска не конфликтовала с политикой планировщика.
Ознакомьтесь с справочной документацией для начальной настройки по SSH, с тарифами, когда разделяете пулы без индекса для компиляции и с индексом для интерактива, и с VNC, где тестировщики по-прежнему ждут полноценного поиска на рабочем столе.
Почему золотые образы ВМ всегда отключают Spotlight — и что bare metal обязан повторить
Шаблоны гипервизора поставляются с отключённой индексацией, потому что непредсказуемые всплески mdworker портят A/B-измерения производительности. На VmMac вы каждое утро не откатываете дифф-диск; вы подключаетесь по SSH к постоянному хосту, который всё ещё получает обновления метаданных от Apple. Значит, ваша «чистая комната» — это файл политики плюс guard по cron, а не кнопка отката. Команды, которые это игнорируют, видят расширение p95 времени компиляции на двузначные проценты в ту же неделю, когда Xcode выкладывает новый импортёр Spotlight — именно тот класс шума, из-за которого разработчики перестают доверять удалённым фермам Mac.
- Смена индекса после каждого
git clean -fdx: тысячи мелких файлов для mds выглядят как перестройка файловой системы. - Инверсия приоритета ввода-вывода, когда Spotlight конкурирует с
ldв одной очереди NVMe. - Неоднозначность безопасности, когда фикстуры клиентов лежат на томе, которое Spotlight «продвигает» в поиск рабочего стола.
Как mds, mdworker и mds_stores крадут SLO CI, не попадая во flame graph
Профилировщики CPU относят время к компиляторам Swift, но симптом внизу стека — заблокированное чтение, пока писатели метаданных держат блокировки. Следите за сочетанием загрузки диска около 95 % при «простое» пользовательского CPU — этот паттерн часто означает расширение хранилищ метаданных под .Spotlight-V100. Ещё один признак — задержка старта заданий launchd: если обёртка компиляции видит более 400 мс расхождения между запланированным временем и первым сисколлом компилятора, сначала проверьте шторм mdworker, а не планировщик.
fs_usage на путях mds раньше, чем будете крутить флаги Swift.
Матрица: том CI без индекса, глобальная индексация и выборочные исключения
| Политика | Усилия оператора | Предсказуемость perf | Влияние на UX рабочего стола |
|---|---|---|---|
| Выделенный том APFS CI с выключенной индексацией | Средние — нужна дисциплина имён монтирования | Высокая | Нет, если пользователи GUI не лазят по этому тому |
| Глобальная индексация на томе Data | Низкие | Низкая при крупных переключениях веток | Высокое качество поиска для тестеров по VNC |
| Исключения через privacy plist по путям | Высокие — дрейф при переименовании папок | Средняя | Частичное; тестеры могут не видеть новые пути |
Первая строка — рекомендуемый дефолт для автоматического CI на VmMac: держите интерактивные профили на отдельных хостах или отдельных томах, чтобы продакты не «помогли» снова включить индексацию ради PDF в корнях сборки.
Команды mdutil, которые ранбук должен цитировать дословно
Каждый новый том начинайте с явной проверки состояния:
mdutil -s /Volumes/VmMacCI
Затем отключите индексацию для этой точки монтирования после ревью безопасности:
sudo mdutil -i off /Volumes/VmMacCI
Когда намеренно пересобираете метаданные — например, для форензик-поиска на скомпрометированном хосте — сотрите хранилище в окне обслуживания и снова прогоните health-check перед возвратом машины в CI:
sudo mdutil -E /Volumes/VmMacCI
Документируйте, кто может выполнять эти команды: на общих арендных машинах ограничьте sudo ролями платформы, чтобы прикладные команды не переключали индексацию посреди релиза из привычки к личному десктопу.
Конфиденциальность, Spotlight и данные клиентов на общих хостах
Индексация стоит не только CPU — имена файлов и фрагменты могут попадать в API поиска, которые люди не собирались открывать. Если в полосах лежат логи с ПДн, считайте индексацию обработкой данных наряду с реестром GDPR или APPI. Сочетайте раскладку файловой системы из изоляции полос с явными флагами «не индексировать» на этих путях, даже когда глобальная индексация остального диска включена.
Лестница из девяти шагов контроля на 2026 год
- Инвентаризируйте все смонтированные тома в HK, JP, KR, SG, US и зафиксируйте состояние mdutil по умолчанию.
- Классифицируйте тома как CI_ARTIFACT, INTERACTIVE или MIXED; запретите MIXED на хостах с тяжёлой компиляцией.
- Примените
mdutil -i offк монтированиям CI_ARTIFACT; сохраняйте выводmdutil -sв git по классу хоста. - Добавьте еженедельное задание
launchd, которое повторно утверждает политику и алертит при дрейфе состояния. - Стройте график CPU mdworker в долях от всех ядер; пейджите выше 12 % дольше 15 минут.
- Коррелируйте всплески с перемонтированием томов
fseventsd; чините автоматизацию, которая трепетит монтированиями. - Исключите эфемерные кэши пакетов из профилей рабочего стола по тем же путям, что и CI, чтобы снизить когнитивный дрейф.
- Документируйте откат: как безопасно снова включить индексацию для расследований в течение 30 минут.
- Ежеквартальный game day: намеренно заполните том CI и убедитесь, что индексация остаётся холодной.
Паритет пяти регионов на VmMac (HK / JP / KR / SG / US)
Настройка задержек различается по географии, но политика метаданных — не должна. Когда сингапурский компилятор молча индексирует, а американский — нет, вы гоняетесь за призраками в дашбордах Swift. Храните фрагменты plist и shell-сниппеты в одном приватном репозитории, тегируйте релизы и продвигайте их тем же пайплайном, что и закрепления компилятора.
Числовые алерты, которые ловят реальные регрессии
| Метрика | Порог | Значение |
|---|---|---|
| CPU mdworker | > 12 % 15 мин | Шторм индексации или застрявшее хранилище |
| Свободное место на томе CI | < 30 ГБ | Риск раздувания mds + риск падения сборки |
| Скос обёртки сборки | p95 > 400 мс | Сначала Spotlight, потом компиляторы |
Вопросы и ответы: Spotlight на арендованном Mac mini CI
Сломает ли отключение индексации Xcode? Для командной строки — нет; если вы полагаетесь на поиск в Organizer на том же томе — да; разделяйте хосты.
Как сюда относится Time Machine? Разметка тома Time Machine ортогональна, но может разогнать mds, если бэкапы указывают на CI-диски — избегайте такой топологии.
Кто утверждает sudo mdutil? Только платформенная инженерия, с тикетными исключениями короче 48 часов.
Почему Mac mini M4 и VmMac делают политику индекса недорогой
Mac mini M4 даёт достаточно устойчивого IO, чтобы «легитимная» индексация на QA-станциях завершалась быстро, когда вы её включаете, — а пулы только для компиляции остаются холодными. Мультирегиональность VmMac позволяет разместить пулы без индекса в Гонконге, Японии, Корее, Сингапуре и США рядом с пользователями без доставки золотых образов ВМ на флешках. Дополнительная аренда мини, чтобы отделить тестеров с поиском от сборщиков без него, дешевле часов инженеров на недетерминированных провалах perf.
Разделите компиляционные хосты и интерактивный QA
Одна линия тарифов VmMac для холодных CI-томов и другая для станций с удобным поиском по VNC.