Производительность 26 апреля 2026 г.

Аренда Mac mini: индексация Spotlight (mds) против бюджета диска CI — матрица VmMac 2026

Команда инженеров VmMac 26 апреля 2026 г. ~21 мин чтения

Владельцы инфраструктуры сборки, арендующие 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, а не планировщик.

Практическое правило: если более 7 % wall time чистой сборки уходит в ожидания ядра, не связанные с сетью, снимите 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 год

  1. Инвентаризируйте все смонтированные тома в HK, JP, KR, SG, US и зафиксируйте состояние mdutil по умолчанию.
  2. Классифицируйте тома как CI_ARTIFACT, INTERACTIVE или MIXED; запретите MIXED на хостах с тяжёлой компиляцией.
  3. Примените mdutil -i off к монтированиям CI_ARTIFACT; сохраняйте вывод mdutil -s в git по классу хоста.
  4. Добавьте еженедельное задание launchd, которое повторно утверждает политику и алертит при дрейфе состояния.
  5. Стройте график CPU mdworker в долях от всех ядер; пейджите выше 12 % дольше 15 минут.
  6. Коррелируйте всплески с перемонтированием томов fseventsd; чините автоматизацию, которая трепетит монтированиями.
  7. Исключите эфемерные кэши пакетов из профилей рабочего стола по тем же путям, что и CI, чтобы снизить когнитивный дрейф.
  8. Документируйте откат: как безопасно снова включить индексацию для расследований в течение 30 минут.
  9. Ежеквартальный 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.