Назад | Перейти на главную страницу

Конфигурация жесткого диска / памяти для компилируемого сервера?

У меня есть рабочая станция, на которую входят 3 человека для компиляции исходного кода. Наш проект состоит из около 1000 файлов, и GCC компилирует их в файл .elf размером ~ 200 МБ (с отладкой).

Наша текущая рабочая станция - это процессор Intel Core 2 X6800 @ 2,93 ГГц с 2 дисками SATA со скоростью вращения 7,2 тыс. Об / мин с программным обеспечением RAID0 и 8 ГБ памяти.

Система хорошо работает, когда компиляцию выполняет 1 человек, но все резко замедляется, когда 2 человека пытаются выполнить компиляцию одновременно. Некоторым помогает использование distcc для распространения компиляции на другие серверы, но, конечно, не помогает время компоновки. Ссылка может занимать длинный время.

Какой была бы хорошая конфигурация жесткого диска / памяти для нового сервера? Я надеюсь потратить меньше 5-6 тысяч долларов. Например:

  1. Подходит ли RAID0 для этой рабочей нагрузки? Я слышал, что RAID0 может повредить время поиска, что, как я полагаю, может повредить при компиляции большого количества небольших файлов?

  2. Если я хочу поддержать 3 разработчиков, что лучше купить 3 дешевые машины или 1 большой сервер для моего ценового диапазона?

  3. Учитывая мой ценовой диапазон, следует ли мне рассматривать диски SCSI 15K? Или два диска SW / HW-RAID0 SATA 7.2K будут работать почти так же хорошо?

Пример загрузки за 2 цикла:

Tasks: 238 total,   1 running, 237 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.5% us,  3.5% sy,  0.6% ni, 90.0% id,  4.3% wa,  0.0% hi,  0.1% si
Mem:   8096556k total,  8052960k used,    43596k free,    50248k buffers
Swap:  2040212k total,      224k used,  2039988k free,  6745740k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18972 user1     15   0  138m 131m 1076 D   10  1.7   0:03.25 ld
 3414 user2     18   0  6148 1024  476 D    8  0.0   0:14.97 mv
18975 user3     18   0 61672  12m  652 D    6  0.2   0:00.52 make

Приветствую. Это хороший вопрос, и мне недавно приходилось сталкиваться с подобным. Хотя при рассмотрении важны память и процессор, вы удивитесь, насколько сильно меняет ввод-вывод жесткого диска во время компиляции кода. Мне было поручено найти новые машины для разработки для наших разработчиков, учитывая, что параметры были немного другими ... это разработчики C #, проверяющие SVN и компилирующие код C #, но конечный продукт должен быть довольно похожим. Прочтите следующую запись в дневнике моего босса с нашими выводами: http://it.toolbox.com/people/martin_sielaff/journal-entry/4562

В конце концов мы обнаружили, что SSD-диски, процессор Core i5 или i7 и 64-битная ОС имеют огромное значение.

Поскольку в настоящее время у вас есть существующая система, найдите время, чтобы взглянуть на нее. Узнайте, связана ли ваша текущая система с процессором, памятью или вводом-выводом во время компиляции. Затем купите оборудование для устранения самого слабого звена.

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

Я не могу комментировать, какие факторы влияют на производительность GCC для вашей рабочей нагрузки, но в целом вам нужно больше ресурсов процессора и больше оперативной памяти \ большей пропускной способности. Возможно, для этого стоит подумать о покупке подходящего сервера.

С точки зрения стоимости вы должны иметь возможность получить двухпроцессорный сервер с Xeon 5520 и 12 ГБ оперативной памяти DDR3 1333 МГц для такого бюджета (~ 6 КБ). Это дает вам четырехкратное количество ядер, а также ускорение от гиперпоточности, которое легко стоит еще одного или двух ядер. Суммарная пропускная способность основной памяти также примерно в 4 раза быстрее (6 каналов при 1333 МГц против 2 при 1066 МГц). Часы для часов 5520 оставляют в пыли и Core Duo. И вы получите преимущества более современной подсистемы ввода-вывода.

Добавьте пару Intel X25M в массиве RAID 0 в качестве временного рабочего пространства для компиляций, и вы сможете с легкостью снизить производительность рабочей станции Core2 X6800. Для размера файлов, с которыми вы имеете дело, подойдет даже самый маленький Flash SSD.

Я склонен согласиться с Zoredache здесь, хотя ваши процессоры простаивают на 90% в приведенном вами верхнем отпечатке.

Использование памяти пользователем user2 кажется довольно обширным и составляет 1 ГБ (если только это не K, хотя я не думаю, что это так, это может быть неправильно). Если это 1 ГБ, было бы интересно узнать, что они перемещали ("mv" command), чтобы занять столько памяти.

Фаза компоновки действительно кажется наиболее ресурсоемкой для ЦП (как вы уже выяснили). Если бы это была моя система, я бы захотел посмотреть на использование памяти и, вероятно, проанализировать вывод iostat во время компиляции.

Это четырехъядерный вариант процессора или двухъядерный? В любом случае это довольно мощная рабочая станция, поэтому я не думаю, что добавление в нее дополнительного оборудования поможет так сильно. Как говорит Зоредаш, лучше проанализировать имеющуюся у вас систему, выявить узкие места и поработать над ними.)