Лучшее аппаратное / программное решение для параллельных марок? - PullRequest
3 голосов
/ 12 июня 2009

У нас есть система сборки на основе Linux, в которой сборка состоит из множества различных встроенных целей (с включенными соответственно разными драйверами и наборами функций), каждая из которых построена с помощью другого единственного главного исходного дерева.

Вместо того, чтобы пытаться преобразовать нашу систему на основе make во что-то более дружественное к многопроцессорности, мы хотим просто найти лучший способ запустить сборки для всех этих целей одновременно. В чем я не уверен, так это в том, как добиться максимальной производительности.

Я рассмотрел следующие возможные решения:

  • Много отдельных сборочных машин. Недостатки: множество копий общего кода или работа с (медленного) общего диска. Больше систем для обслуживания.
  • Меньшее количество многопроцессорных машин (возможно, двухъядерных) с быстрым чередованием локального хранилища RAID. Недостатки: я не уверен, как это будет масштабироваться. Кажется, что объем был бы узким местом, но я не знаю, насколько хорошо Linux обрабатывает SMP в наши дни.
  • Подобный SMP-компьютер, но с гипервизором или Solaris 10, на котором работает VMware. Это глупо, или это обеспечит некоторые преимущества планирования? Недостатки: не устраняет проблему узкого места в хранилище.

Я собираюсь просто сесть и поэкспериментировать с этими возможностями, но я хотел проверить, не пропустил ли я что-нибудь. Спасибо!

Ответы [ 3 ]

1 голос
/ 17 июня 2009

Что касается программных решений, я могу порекомендовать Icecream . Он поддерживается SUSE и основан на distcc.

Мы очень успешно использовали его в моей предыдущей компании, требования к сборке которой были такими же, как вы описали

0 голосов
/ 17 июня 2009

Если ваши make-файлы достаточно полны и хорошо структурированы, флаг -j также может быть полезен для преодоления узких мест ввода / вывода, если на ваших сборочных машинах достаточно памяти. Это позволяет выполнять несколько независимых задач параллельно, так что ваши процессоры в идеале никогда не будут блокировать ожидание при вводе / выводе. В целом, я нашел хорошие результаты, позволив выполнять на компьютере больше задач, чем процессоров.

Из вашего вопроса не ясно, не подходят ли вам ваши текущие make-файлы или вы просто не хотите переходить к чему-то совершенно другому, чем make.

0 голосов
/ 13 июня 2009

Если вы заинтересованы в быстром увеличении производительности, тогда стоимость вычисления файлов, которые необходимо перестроить, будет доминировать над фактическим временем компиляции, и это повысит требования к эффективному вводу / выводу между компьютерами.

Однако, если вас больше всего интересуют быстрые полные перестройки (например, ночные сборки), то вам может быть лучше переписать исходное дерево каждому ведомому сборщику или даже попросить каждую ведомую сборку проверить свою собственную копию из источника контроля. CI-система, такая как Hudson, поможет управлять каждым из подчиненных серверов сборки.

...