Смекни!
smekni.com

«Оптимизация кластерной системы на базе pvm компьютерной лаборатории физического факультета» (стр. 4 из 9)

Система PVM состоит из двух частей. Первая часть - это “демон” под названием pvmd3 - часто сокращается как pvmd, - который помещается на все компьютеры, создающие виртуальную машину. (Примером программы-демона может быть почтовая программа, которая выполняется в фоновом режиме и обрабатывает всю входящую и исходящую электронную почту компьютера). Разработан pvmd3 таким образом, чтобы любой пользователь с достоверным логином мог инсталлировать его на машину. Когда пользователь желает запустить приложение PVM, он, прежде всего, создает виртуальную машину. После этого приложение PVM может быть запущено с любого UNIX-терминала на любом из хостов. Несколько пользователей могут конфигурировать перекрывающиеся виртуальные машины, каждый пользователь может последовательно запустить несколько приложений PVM. Вторая часть системы - это библиотека подпрограмм интерфейса PVM. Она содержит функционально полный набор примитивов, которые необходимы для взаимодействия между задачами приложения. Эта библиотека содержит вызываемые пользователем подпрограммы для обмена сообщениями, порождения процессов, координирования задач и модификации виртуальной машины.

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

В настоящее время PVM поддерживает языки программирования C, C++ и Фортран. Этот набор языковых интерфейсов взят за основу в связи с тем, что преобладающее большинство целевых приложений написаны на C и Фортран, но наблюдается и тенденция экспериментирования с объектно-ориентированными языками и методологиями.

Привязка языков C и C++ к пользовательскому интерфейсу PVM реализована в виде функций, следующих общепринятым подходам, используемым большинством C-систем, включая UNIX - подобные операционные системы. Уточним, что аргументы функции - это комбинация числовых параметров и указателей, а выходные значения отражают результат работы вызова. Прикладные программы, написанные на C и C++, получают доступ к функциям библиотеки PVM путем прилинковки к ним архивной библиотеки (libpvm3.a) как часть стандартного дистрибутива.

Привязка к языку Фортрана реализована скорее в виде подпрограмм, чем в виде функций. Такой подход применен по той причине, что некоторые компиляторы для поддерживаемых архитектур не смогли бы достоверно реализовать интерфейс между C и Фортран функциями. Непосредственным следствием из этого является то, что для каждого вызова библиотеки PVM вводится дополнительный аргумент - для возвращения результирующего статуса в вызвавшую его программу. Также унифицированы библиотечные подпрограммы для размещения введенных данных в буферы сообщения и их восстановления, они имеют дополнительный параметр для отображения типа данных. Кроме этих различий (и разницы в стандартных префиксах при именовании: pvm_ - для C и pvmf_ - для Фортран), возможно взаимодействие “друг с другом” между двумя языковыми привязками. Интерфейсы PVM на Фортране реализованы в виде библиотечных надстроек, которые в свою очередь, после разбора и/или определения состава аргументов, вызывают нужные C-подпрограммы. Так, Фортран - приложения требуют прилинковки библиотеки-надстройки (libfpvm3.a) в дополнение к C библиотеке(libpvm3.a).

Оптимизация кластерной системы на базе PVM.

Описание оборудования и предыдущей конфигурации программного обеспечения кластера.

Парк оборудования компьютеризированной лаборатории физического факультета состоит из 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 имена хостов по тому же принципу.