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

Оптимизация вычислительного кластера Linux

Я настраиваю на работе суперкомпьютерный Linux-кластер. Мы провели самые последние тесты HPCC с использованием OpenMPI и GoToBlas2, но получили очень плохие результаты. Когда я запускал тесты, используя один процесс для каждого ядра в кластере, результаты были намного хуже (более чем в 100 раз), чем при запуске теста в одном процессе. Это явно не та производительность, которую мы ожидали. Я думаю только о том, что MPI занимает слишком много времени для передачи сообщений между процессами. Есть ли у кого-нибудь идеи, как я могу оптимизировать настройку сервера, чтобы производительность не была такой плохой?

Мы используем кластерный дистрибутив Rocks с OpenMPI v1.4.3. Наши вычислительные узлы представляют собой стоечные серверы Dell с двумя четырехъядерными процессорами Intel Xeon каждый. Они соединены гигабитными Ethernet-кабелями.

Когда я смотрю на научный кластер и производительность, я вижу некоторые из основных узких мест:

  • Какие у вас сети? Да, вы говорите, что у вас есть гигабитный Ethernet, но используете ли вы неблокирующие коммутаторы, чтобы каждый узел на коммутаторе мог получить полную скорость линии?
  • Вы используете распределенную файловую систему или оптимизированный NAS?
  • Все ли ваши ссылки на полную ставку? Опять же, это возвращается к первому пункту, но вы будете удивлены, увидев, что iperf иногда запускается на узлах
  • Какая у вас задержка. Время от времени это может стать проблемой для гигабитных сетей, если у вас есть проблемы с сетью, и это действительно может помешать приложениям, которым необходимо использовать MPI.
  • Каковы ваши настройки для вашего основного устройства в network-scripts? Ваш MTU установлен на 9000?

Iperf обычно можно найти в системах RHEL по адресу

/apps/rhel5/iperf/bin/iperf

Чтобы запустить iperf, сначала настройте сервер на узле.

/apps/rhel5/iperf/bin/iperf -s

Затем с узла, который вы хотите проверить ссылку, выполните

/apps/rhel5/iperf/bin/iperf -c <host or IP of server>

В случае успеха вы увидите такой вывод на клиенте:

------------------------------------------------------------
Client connecting to <host or IP of server>, TCP port 4200
TCP window size:   256 KByte (default)
------------------------------------------------------------
[  3] local 123.11.123.12 port 4400 connected with 123.456.789.12 port 4200
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.1 GBytes  1.01 Gbits/sec

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