Что важнее для компиляции в Unity частоты ядер, кол-во ядер или скорость оперативной памяти?

Игра на 25 гигабайт в несобранном виде, на i5 11400 собирается по подсчетам 45+ часов. Стоит выбор между парой xeon e5-2650 v4 на китайской двухглавой материнке с ddr4 3200 МГЦ прямо сейчас или ryzen 7 9800x3d с ddr5 на 6400+ МГц через 3 месяца. Что стоит взять и возможно ли собрать что-то типо кластера из нескольких ПК для компиляции игры? Слышал что можно с помощью MPI собирать проекты на С, есть ли аналог для C#?


Ответы (1 шт):

Автор решения: aepot

25 гигабайт чего? Вы там картинки, текстуры и видео больше суток с места на место копируете? У меня на работе игра 120 гигабайт в несобранном виде, правда не Unity, собирается за 30 минут максимум на моём рабочем компе. Окей, у меня мощный комп, но всё же это даже не час.

  1. Нужно смотреть пайплайн сборки. На что именно расходуется максимальная часть времени. Если у вас огромная куча библиотек из пакетов ресторится так долго, то эту проблему в интернете уже давно решили. Любую другую наверняка тоже.
  2. Если сборка идёт в один поток, вы хоть за миллион баксов 65536-ядерный процессорный кластер купите, толку с этого не будет, так как будет работать на сборке всего одно ядро. Нужно выяснить, как распараллелить сборочный процесс. Или разбейте проект на отдельно собираемые части. Например проект с движком и проект с ресурсами отдельно. Если сборка мультиплатформенная, также можно найти, где устроить параллельные сборочные процессы. Если не параллелить, то нужен процессор с максимальной частотой на ядро и побольше L1 кешом.
  3. Для некоторых сборочных операций на больших проектах требуется очень-очень много оперативы. Следите за её расходом. Тормоза могут быть вполне от нехватки памяти. Я бы даже сказал - достаточное количество оперативы важнее, чем мегашустрый процессор.
  4. И последний железный нюанс - это скорость дисковых операций. Здесь безальтернативно нужен в меру шустрый SSD диск, никаких HDD.
  5. Когда со всем что выше всё гладко, добавьте к сборке кеширования. То есть модули, которые не изменялись с прошлой сборки - не надо пересобирать. Библиотеки из пакетов, версии которых не менялись - не надо качать и собирать заново, и так далее.

Но начните с пункта 1 и постепенно решайте конкретные проблемы сборочного пайплайна. Это важнее, чем железо. Я вам больше скажу: не решив эти проблемы, железо не поможет. Ну будет у вас игра собираться не 45, а 36 часов - разве это решение проблемы? Мне кажется, не особо.

Определить, многопоточка есть или нет легко. Во время сборки открыть дипетчер задач, и там вкладку производительность. Если все ядра забиты до отказа, то многопоточка есть. Если только на 1/(кол-во ядер) загрузка, то многопоточки нет или почти нет.

→ Ссылка