Описание оборудования и предыдущей конфигурации программного обеспечения кластера.
Парк оборудования компьютеризированной лаборатории физического факультета состоит из 10 машин с процессорами: AMD ATHLON-64 X2 4200+, оперативной памятью: 2 ГБ, сетевым адаптером: 10/100/1000 Мб/с.
Процессор: ATHLON-64 X2 4200+ - является суперскалярным, содержит 3 декодера команд, теоретически позволяющих достичь пиковой производительности до 3-х операций за 1 такт в каждом ядре. Таким образом, для данного процессора, имеющего в своём составе 2 ядра и работающего на частоте 2.2 ГГц теоретический предел производительности составляет 3х2х2.2=13.2 GFlops. В данную кластерную систему входи всего 9 компьютеров, значит теоретически предел всего кластера равен 13.2х9=118.8 GFlops.
Предыдущая конфигурация программного обеспечения кластерной системы позволяла использовать пропускную способность сетевого интерфейса лишь на 10 Мб/с, что плохо сказывалось на производительности установки, когда на ней считались сильно связные задачи, требующие большого количества синхронизаций друг с другом.
Старая конфигурация программного обеспечения:
· Операционная система: Ubuntu Linux v.8.10
· Механизм коммуникации: внутренние механизмы связи PVM, основанные на стандартном транспортном протоколе.
· Интерфейс управления кластером: консоль PVM 3.4.2, GNU bash, version 3.2.48.
· Компилятор: GCC (GNU Compiler Collection) v.4.3.
Установка и настройка новой конфигурации программного обеспечения кластера.
1) Переустановка операционной системы.
Старая операционная система была заменена на более новую Ubuntu 9.10, с более новым ядром.
2) Установка и настройка PVM.
PVM версии 3.4.5. была скачана с официального сайта: http://www.netlib.org/pvm3/index.html. Распаковав скачанный архив в домашнюю папку пользователя (~/pvm3/). В конфигурационный файл командного интерпретатора bash (/etc/bash.bashrc) добавлены следующие строчки:
#pvm configuration
export PVM_ROOT=/home/root/pvm3
if [ -z $PVM_ROOT ]; then
if [ -d ~/pvm3 ]; then
export PVM_ROOT=~/pvm3
else
echo "Warning - PVM_ROOT not defined"
echo "To use PVM, define PVM_ROOT and rerun your.bashrc"
fi
fi
if [ -n $PVM_ROOT ]; then
export PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch`
export PATH=$PATH:$PVM_ROOT/lib/$PVM_ARCH # arch-specific
export PATH=$PATH:$PVM_ROOT/bin/$PVM_ARCH
fi
export PVM_PATH=$PVM_ROOT/bin/$PVM_ARCH
export PVM_DPATH=pvm3/lib/pvmd
export PVMHOSTFILE=/home/root2/.rhosts
В системе установлен SSH. Для коммуникаций, PVM использует RSH или SSH, по умолчанию в файле конфигурационном файле для каждой операционной системы в PVM (например, для Linux 64-bit: ~/pvm3/conf/LINUX64.def), стоит RSH, но лучше использовать SSH. Для этого в этом файле нужно прописать значение переменной ARCHCFLAGS, параметр RSHCOMMAND должен содержать путь к команде SSH, например DRSHCOMMAND=\"/usr/bin/ssh\".
В каталоге /pvm3 выполняем команду для сборки и установки:
Make
По окончании ее работы PVM будет готова к использованию. (На одном из этапов выполнения, команда завершилась выходом с ошибкой из-за отсутствия библиотеки m4_1.4.13-2_amd64, которая необходимо было скачать через sudo apt-get install m4 из интернета.)
На этом процесс установки и настройки PVM завершен. Для удобства работы, данная конфигурация была скопирована на все узлы кластера.
Следующие действия проводились только на главном узле кластера.
Выполнена процедура создания беспарольного доступа пользователя root2 с консоли кластера на узлы кластера по протоколу SSH. Беспарольный доступ обеспечит более комфортную работу в PVM. Так, отпадет необходимость вводить пароли доступа при добавлении каждого нового узла и при копировании исполняемых модулей в локальные файловые системы узлов кластера. Алгоритм обеспечения беспарольного доступа следующий:
а) Логинимся к консоли кластера: ssh root2@server
б) Переходим в каталог ssh: cd ~/.ssh
в) Генерируем rsa-ключи: ssh-keygen -t rsa
г) На вопрос задать имя файла жмем Enter - остается имя по умолчанию id_rsa.
д) На просьбу задать пароль жмем Enter два раза (второй раз для проверки).
е) Копируем публичный ключ на узел кластера: scp id_rsa.pub
ж) root2@phys1:~/.ssh
з) Логинимся к узлу phys1: ssh root2@phys1
и) Переходим в каталог ssh: cd ~/.ssh
к) Копируем публичный ключ: cat id_rsa.pub >> authorized_keys2
л) Отключаемся от узла phys1
м) Повторяем пункты 6-10 для остальных узлов кластера (phys2... physN).
После проведения вышеописанной процедуры пользователь "root2" сможет подключаться к узлам кластера с консоли кластера, не вводя свой пароль. Следует отметить, таким образом, обеспечивается беспарольный доступ только для одного пользователя и только в одном направлении: консоль кластера -> узлы кластера. И только для случая, когда root2 подключается к узлам кластера под своим именем.
Также был установлен CSSH, для более комфортного управления всеми узлами кластера.
Для автоматического подключения узлов кластера в PVM в файле ~.rhosts были указаны имена всех хостов, которые должны входить в кластер и подключаться автоматически при старте PVM. В данном файле они указываются по принципу одно имя хоста - одна строчка, также в этом же файле можно указать дополнительные особенности конфигурации PVM на узлах кластера, за более подробным описанием данного файла рекомендуется обратиться к руководству PVM.
Для автоматической проверки конфигурации кластера в файл ~.pvmrc была введена команда conf. Данный файл PVM считывает построчно при запуске и исполняет все команды стоящие каждой строке, если она не начинается с символа комментария(#).
3) Установка и настройка XPVM.
Установка графической консоли проводилась только на главном узле кластера командой: sudo apt-get install xpvm.
Для автоматической регистрации хостов в XPVM в файл ~.xpvm_host необходимо добавить также как и в файл.rhosts имена хостов по тому же принципу.
Таким образом, новая конфигурация программного обеспечения:
· Операционная система: Ubuntu Linux v. 9.10 kernel 2.6.31-14
· Механизм коммуникации: внутренние механизмы связи PVM, основанные на стандартном транспортном протоколе.
· Интерфейс управления кластером: консоль PVM 3.4.5, GNU bash, version 4.0.33(1), SSH, CSSH, XPVM 1.2.5.
· Компилятор: GCC (GNU Compiler Collection) v. 4.1.1