Конфигурация оборудования сервера сборки - PullRequest
4 голосов
/ 20 марта 2009

Итак, я видел этот вопрос , но мне нужен более общий совет: Как вы определяете сервер сборки? В частности, какие шаги я должен предпринять, чтобы решить, какой процессор, HD, RAM и т. д. использовать для нового сервера сборки. Какие факторы я должен учитывать, чтобы решить, следует ли использовать виртуализацию?

Я ищу общие шаги, которые мне нужно предпринять, чтобы прийти к решению, какое оборудование купить. Шаги, которые приводят меня к конкретным выводам - ​​подумайте: «Мне нужно 4 гигабайта оперативной памяти» вместо «столько оперативной памяти, сколько вы можете себе позволить»

P.S. Я намеренно не даю конкретику, потому что я ищу ответ «научи человека ловить рыбу», а не ответ, который применим только к моей ситуации.

Ответы [ 4 ]

6 голосов
/ 20 марта 2009

Ответ заключается в том, какие требования потребуются машине для «сборки» вашего кода. Это полностью зависит от кода, о котором вы говорите.

Если это несколько тысяч строк кода, просто вытащите этот старый рабочий стол из шкафа. Если в нем несколько миллиардов строк кода, поговорите с менеджером банка о предоставлении вам займа на вложение лезвия!

Я думаю, что лучшее место, чтобы начать с сервера сборки, это купить себе новый компьютер разработчика, а затем перестроить свой старый, чтобы он стал сервером сборки.

3 голосов
/ 20 марта 2009

Я бы начал со сбора некоторых метрик производительности сборки в любой системе, которую вы сейчас используете для сборки. Я бы специально рассмотрел использование процессора и памяти, объем данных, считываемых и записываемых с диска, и объем генерируемого сетевого трафика (если таковой имеется). В Windows вы можете использовать perfmon для получения всех этих данных; в Linux вы можете использовать такие инструменты, как vmstat, iostat и top. Выясните, где узкие места - ваш процессор сборки ограничен? Диск связан? Голодали на оперативку? Ответы на эти вопросы будут определять ваше решение о покупке - если ваша сборка ударяет по ЦП, но генерирует относительно мало данных, вставка кричащего RAID-диска на основе SCSI - пустая трата денег.

Возможно, вы захотите попробовать запустить свою сборку с различными уровнями параллелизма, поскольку вы также собираете эти метрики. Если вы используете gnumake, запустите сборку с -j 2, -j 4 и -j 8. Это поможет вам определить, ограничена ли сборка ЦП или диска.

Также рассмотрите возможность того, что подходящим сервером сборки для ваших нужд может быть кластер дешевых систем, а не один массивный блок - существует множество распределенных систем сборки (gmake / distcc, pvmgmake, ElectricAccelerator и т. Д. ), который может помочь вам использовать массив дешевых компьютеров лучше, чем одна большая система.

2 голосов
/ 12 февраля 2014

Наш магазин поддерживает 16 продуктов, которые варьируются от нескольких тысяч строк кода до сотен тысяч строк (возможно, более миллиона на данный момент). Мы используем 3 сервера HP (около 5 лет), двухъядерный с 10 ГБ оперативной памяти. Диски представляют собой диски SCSI 7200 об / мин. Все скомпилировано через msbuild в командной строке с включенными параллельными компиляциями.

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

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

2 голосов
/ 20 марта 2009

Что нужно учитывать: Сколько проектов планируется построить одновременно? Допустимо ли, чтобы один проект ждал завершения другого?

Собираетесь ли вы делать КИ или запланированные сборки?

Сколько времени обычно занимает сборка?

Какое программное обеспечение для сборки вы используете?

Большинство веб-проектов достаточно малы (время сборки менее 5 минут), поэтому покупка большого сервера просто не имеет смысла.

Как пример, У нас около 20 разработчиков активно работают над 6 различными проектами. Мы используем один сервер TFS Build с CI для всех проектов. Они устанавливаются при каждой регистрации.

Все наши проекты выполняются менее чем за 3 минуты.

Сервер сборки представляет собой одноядерный процессор с 4 ГБ оперативной памяти. Основная причина, по которой мы его используем, заключается в повышении производительности и подготовке сборок для обеспечения качества. После завершения сборки это приложение автоматически развертывается на соответствующем сервере (ах). Он также отвечает за запуск модульных и веб-тестов для этих проектов.

Тип используемого вами программного обеспечения для сборки очень важен. TFS может использовать преимущества каждого ядра для параллельной сборки проектов внутри решения. Если ваше программное обеспечение для сборки не может этого сделать, вы можете исследовать наличие нескольких серверов для сборки в зависимости от ваших потребностей.

...