Когда одной машины достаточно — и когда TB5 меняет картину
Кластеризация Thunderbolt 5 — не переключатель, ускоряющий xcodebuild на одной цели.
Выделенный M4 с 16 GB единой памяти по-прежнему задаёт потолок полной одиночной сборки.
TB5 решает план передачи данных между машинами: когда ЦП уже не узкое место,
копирование DerivedData, .xcarchive или весов моделей по гигабитному WAN становится заметной «налоговой» статьёй.
Перед тестами три сценария повторялись снова и снова — именно здесь окупается TB5:
- Ферма сборки: один репозиторий, несколько схем (внутренний Debug, Release в стор, Archive Extension) параллельно;
- Синхронизация крупных артефактов: кэш и выходные файлы между воркерами, часто десятки ГБ за проход;
- Распределённый инференс или рендер: шарды модели требуют межсоединения близкого к пропускной способности памяти, а не общего uplink 1 Gbps.
Три хоста только по публичному IPv4 упираются примерно в 125 МБ/с — 50 ГБ занимают шесть–семь минут и конкурируют с остальным трафиком. Смысл TB5: собрать несколько Mac mini в одном узле SpinMac физической связью 80 Gbps в логическую высокоскоростную LAN и сократить совместное ожидание с минут до секунд.
Стенд: три корпуса, одна магистраль TB5
Все замеры проводились на SpinMac Сингапур. Команды из Европы подключаются по SSH с приемлемой задержкой; важное ограничение: TB5 требует машин на одном узле — Сингапур и Токио не объединяются в один кластер.
Железо: 3 × Mac mini M4 · 10-ядерный CPU · 16 GB единой памяти · SSD NVMe 256 GB · выделенная публичная полоса 1 Gbps.
ОС: macOS 15 Sequoia, Xcode 16.4, iperf3 3.17 через Homebrew.
Межсоединение: опция кластеризации Thunderbolt 5 SpinMac (цепная топология на узле: A ↔ B ↔ C).
Контроль: те же три хоста по публичному IP + только SSH/rsync, TB5 отключён.
Проект: среднее SwiftUI-приложение (~120 000 строк, 3 расширения) + сжатый снимок DerivedData 42 ГБ для тестов синхронизации.
От заказа до активной связи: чеклист развёртывания
TB5 — опция для нескольких инстансов в одной группе заказа на одном узле. Покупать кабели и коммутатор не нужно — SpinMac прокладывает связь в стойке.
-
01
Аренда нескольких хостов и включение TB5
На странице заказа выберите узел «Сингапур», количество 3, период на выбор (мы взяли $57,3/неделю за хост). Отметьте «Кластеризация нескольких машин Thunderbolt 5» — TB5 +$4,1/неделю за машину. После оплаты три хоста готовы за 1–5 минут; в консоли отображается «кластер TB5».
-
02
Проверка Thunderbolt Bridge в macOS
После SSH в «Системные настройки → Сеть» должен быть мост Thunderbolt с link-local 169.254.x.x.
ifconfig bridge0— active. Моста нет на одном хосте: идёт провижининг — тикет в поддержку (мы ждали ~8 мин). -
03
Имена хостов и доверие SSH
IP на стороне TB5 и алиасы (
mac-aи т.д.) в/etc/hosts, SSH по ключу. iperf3 и rsync только по сегменту bridge — никогда по публичным IP. -
04
Дымовой тест
С mac-a:
ping -c 5 169.254.x.x(bridge-адрес mac-b) — ожидайте 0,3–0,8 мс. Короткий iperf3, затем боевые задачи.
Кластеризация TB5 применяется только к нескольким Mac mini на одном узле SpinMac. Уже один хост? Добавьте параллельное соединение из деталей заказа в консоли — новый заказ не нужен. Тарифы: таблица опций на странице цен.
Бенчмарк пропускной способности: насколько близко к 80 Gbps?
80 Gbps — номинал физического уровня. Реальный throughput зависит от оверхеда, softirq, настроек инструментов и топологии. iperf3 в одном потоке и в 8 параллельных, по пять прогонов — медианы ниже.
| Маршрут | Инструмент / параметры | Медианный throughput | Примечания |
|---|---|---|---|
| mac-a → mac-b (TB5) | iperf3 · 8 потоков · 30 с | 68,4 Gbps | ~85 % номинала, первый прыжок в цепи |
| mac-a → mac-c (TB5 через B) | iperf3 · 8 потоков | 61,2 Gbps | ещё один хоп, всё равно далеко выше гигабита |
| mac-a → mac-b (публичный IP) | iperf3 · один поток | 0,94 Gbps | упёрлись в порт 1 Gbps |
| mac-a → mac-b (публичный · scp 42 ГБ) | Реальная передача файла | ~112 МБ/с | 42 ГБ за ~6 мин 18 с |
| mac-a → mac-b (TB5 · rsync 42 ГБ) | rsync -avz полная первая копия |
пик ~3,8 ГБ/с | полная синхронизация за ~18 с |
Проще говоря: снимок DerivedData 42 ГБ по scp через публичную сеть — больше шести минут; по rsync через TB5 первая полная копия укладывается в двадцать секунд, инкремент — в три секунды. В ферме сборки ожидание кэша переходит из режима «перерыв на кофе» в «налить стакан воды».
Важно: TB5 оптимизирует транспорт между узлами, а не длительность изолированной clean-сборки. Медленная цель? Сначала зависимости и модуляризация. Боль в параллельных машинах + крупном общем кэше? Выигрыш TB5 очевиден.
Реальные сценарии: сборки Xcode и распределение CI
Бенчмарки должны совпадать с вашим release-потоком. Два контролируемых сценария:
Эксперимент A: три параллельных Archive, один источник DerivedData
mac-a делает полную сборку и формирует DerivedData, пушит кэш на mac-b и mac-c через TB5; все три архивируют разные схемы (внутренний Debug, Release в стор, только Notification Service Extension).
Без TB5 (каждый хост пересобирает): ~47 мин суммарно по часам (14–16 мин полной сборки на каждом).
С TB5 (одна сборка + раздача кэша): первая сборка 15 мин 20 с, push кэша 22 с, параллельные Archive 8 мин 40 с,
итого 24 мин 22 с — примерно 48 % экономии. Три release-цикла в день — десятки часов в неделю.
Эксперимент B: пул self-hosted runner GitHub Actions
Три self-hosted регистрации (macos-m4-a/b/c).
Matrix разделяет unit- и UI-тесты; агрегация 6,2 ГБ .xcresult на mac-a: 4 мин 50 с по публичной сети, 41 с через TB5.
Установка runner, подпись и TestFlight: см. наше руководство CI/CD Xcode на облачном Mac — пайплайн на одном узле; эта статья дополняет слой межмашинного соединения.
Подводные камни в боевых условиях
SpinMac даёт физику и bridge-сеть — прикладную архитектуру строите вы.
Не оставляйте rsync или NFS смотреть на публичные IP по ошибке. Мы оставили RSYNC_HOST на WAN-адресе —
42 ГБ за шесть минут, пока не заметили. Перед крупным переносом: route get 169.254.x.x.
- Цепная топология: A–B–C даёт A→C медленнее, чем A→B. Источник кэша в центре (у нас mac-b) для чувствительных к полной синхронизации путей.
- Диск всё ещё ограничивает: три дерева DerivedData на системных 256 ГБ — тесно. Расширение SSD +1 ТБ хотя бы на одном воркере (+$12,5/мес), разделите кэш и Archive.
- Стратегия подписи: параллельные Archive везде = Distribution-сертификаты на каждом keychain — или только primary подписывает, воркеры только для тестов.
- TB5 не заменяет публичный доступ: ноутбук по-прежнему по SSH/VNC через публичные IP; сегмент TB5 внутренний и по задумке не выставлен в интернет.
Расчёт стоимости: когда опция TB5 окупается
Базовый тариф SpinMac одинаков во всех пяти регионах (Сингапур, Япония (Токио), Южная Корея (Сеул), Гонконг, восточное побережье США): $21,2/день, $57,3/неделю, $106,1/мес, $288,6/квартал за машину. Кластеризация TB5 на хост: +$1,5/день, +$4,1/неделю, +$7,5/мес, +$20,4/квартал. Пример три машины на неделю:
Compute: 3 × $57,3 = $171,9/неделю
Опция TB5: 3 × $4,1 = $12,3/неделю (~7 % от compute)
Итого $184,2/неделю — около $26,3/день за три связанных узла M4.
Против покупки железа: три Mac mini M4 от ~$1 800 плюс кабели, стойка, электричество — без масштабирования по требованию. Против «трёх облаков только по WAN»: та же цена машин, но при десяти sync 40 ГБ в неделю время ожидания часто превышает $12,3 разницы за TB5.
Брать TB5, если: минимум два хоста на одном узле с ежедневной синхронизацией крупных артефактов или кэша; или CI-матрицы с рутинно тремя и более параллельными macOS-джобами. Можно без TB5, если один хост надолго или DR в нескольких регионах — межузлового TB5 нет; S3-совместимое хранилище для build-кэша.
Новый клиент: несколько хостов и TB5 на странице заказа. Существующий инстанс: добавление параллельного соединения из консоли, без миграции данных.
Итог: 80 Gbps снимает трение совместной работы, не пик одной машины
Вопрос из заголовка — каков опыт параллельного Thunderbolt 5 на 80 Gbps? Одной фразой: несколько Mac mini обмениваются данными как серверы в одной стойке — iperf3 около 60–68 Gbps, крупные файлы с минут до секунд; полная одиночная сборка Xcode по времени та же. Ценность кластера — параллелизм и повторное использование кэша, а не более быстрый чип.
Для клиентов SpinMac опция TB5 означает: вы уже выбрали физические облачные Mac и хотите снизить трение мультимашинной работы — без покупки кабелей, без переговоров с colo, одна галочка на том же узле. Если команда застряла на «ферма сборки да, передачи между машинами слишком медленные» — используйте цифры и шаги здесь как чеклист PoC.
| Ваш сценарий | Рекомендация |
|---|---|
| Один разработчик, редкий Archive | Одного M4 достаточно, TB5 не нужен |
| Несколько схем / пакетов в день параллельно | 2–4 хоста на одном узле + TB5, общий DerivedData |
| Шардированный инференс, видеорендер-пайплайны | TB5 + расширение SSD при необходимости, центральный узел в цепи |
| DR в нескольких регионах | Хосты по регионам отдельно, TB5 N/A — объектное хранилище |
Соберите облачный кластер сборки Mac mini
SpinMac поддерживает кластеризацию Thunderbolt 5 для нескольких Mac mini M4 на одном узле — физические линии 80 Gbps. От $21,2/день, опция TB5 от $1,5/день, активация за 1–5 минут, пять регионов.