Установка и администрирования PVM - Администрирование параллельных процессов

Для установки PVM в системе необходимо создать каталог, где будет располагаться система PVM. Будем считать, что установка PVM в каталог /pvm3. В этот каталог необходимо распаковать архив с исходниками системы:

Tar zxvf pvm3.3.4.tgz

Перед сборкой и запуском PVM необходимо установить переменную окружения $PVM_ROOT, указав в ней полный путь к каталогу, в котором хранится система. Если используется в качестве командной оболочки csh, необходимо добавить следующую строку в файл. cshrc:

Setenv PVM_ROOT=/pvm3

Если же используете оболочки, которые используют. profile, например sh или ksh, или bash, которая использует. bashrc, тогда нужно добавить в соответствующий файл такую команду:

Export PVM_ROOT=/pvm3

Так же необходимо определить другие переменные окружения, необходимые для функционирования PVM, добавив после команды определения PVM_ROOT содержимое соответствующих командной оболочке файлов: pvm3/lib/cshrc. stub, pvm3/lib/kshrc. stub или pvm3/lib/bashrc. stub.

По умолчанию PVM использует протокол rsh для общения с другими компьютерами кластера. Далее нужно заменить rsh на ssh, изменив файл /pvm3/conf/LINUX. def, прописав в переменной ARCHCFLAGS параметр RSHCOMMAND, определив для него полный путь к команде ssh (например /usr/bin/ssh). На кластере файл /pvm3/conf/LINUX. def выглядит так:

#

ARCHCFLAGS = - DSYSVSIGNAL - DNOWAIT3 - DRSHCOMMAND="/usr/bin/ssh"

    -DNEEDENDIAN - DFDSETNOTSTRUCT - DHASERRORVARS -DCTIMEISTIMET - DSYSERRISCONST - DNOTMPNAM

ARCHDLIB =

ARCHDOBJ =

ARCHLIB =

HASRANLIB = t

AR = ar

PVM_ARCH = LINUX

MAKE = make

Для сборки и установки PVM, находясь в каталге /pvm3, необходимо выполнить команду make. По окончании ее работы система PVM готова к запуску. Следует отметить, что для уменьшения проблем, связанных с настройкой PVM на узлах кластера, на всех машинах кластера PVM следует устанавливать в один и тот же каталог.

Прежде чем перейти к описанию командной системы PVM, необходимо разобраться в некоторых общих вопросах функционирования кластера.

PVM является пользовательской задачей, и как любая пользовательская задача может быть запущена любым пользователем, имеющим на то права. Если к консоли кластера (или к другим машинам кластера) одновременно подключилось несколько пользователей, то все они имеют возможность одновременно запустить свои собственные виртуальные машины PVM. Другими словами, на основе кластера, понимаемого нами здесь как комплекс компьютеров, соединенных сетью, одновременно может работать несколько параллельных виртуальных машин различной конфигурации.

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

Для кластера кафедры АИС необходимо выделить пользователя Admin_cluster, и под его аккаунтом можно запустить PVM на серверном компьютере.

Для запуска виртуальной машины необходимо выполнить команду pvm. Эта команда запускает консоль параллельной виртуальной машины PVM. Команда pvm перед запуском консоли проверяет наличие в системе демона pvmd, запущенного от имени пользователя, который выполняет команду pvm, и в случае отсутствия такового запускает его. Таким образом в системе может присутствовать несколько демонов pvmd (несколько параллельных виртуальных машин), принадлежащих разным пользователям. С другой стороны два пользователя, подключившихся к консоли кластера под одним именем, будут пользоваться одной и той же виртуальной машиной. Доступ пользователей к консоли под разными именами обеспечит безопасность для выполняемых программ. Поскольку запускаемые программы будут выполнятся под разными виртуальными машинами, то пользователи не смогут помешать друг другу, например снять с исполнения чужую задачу. С другой стороны, работа всех пользователей под одним login'ом обеспечит простоту администрирования запускаемых задач. В этом случае пользователь может быть лишен необходимости самостоятельно конфигурировать состав кластера. Однако это добавит риск неправомочного воздействия пользователем на чужие задачи. Пользователь может, например, остановить виртуальную машину командой halt, сняв тем самым с исполнения все запущенные в рамках этой виртуальной машины задачи. Каким образом обеспечить пользователям доступ к консоли кластера вы должны решить самостоятельно.

Запустив команду pvm, пользователь попадает в командную строку виртуальной машины. Список допустимых в PVM команд можно получить, выполнив команду help. Далее рассмотрены только те команды, которые будут постоянно необходимы для выполнения задач на параллельном компьютере под управлением PVM.

Первое, что необходимо сделать после запуска виртуальной машины определить ее конфигурацию. Под конфигурацией понимается список узлов кластера, которые составляют параллельную виртуальную машину. При первоначальном запуске демона pvmd, в виртуальную машину входит только один узел - тот, на котором был запущен демон. Для добавления в виртуальную машину нового узла, необходимо выполнить команду add:

Pvm>add node1

Pvm>add 192.168.1.3

Pvm>add node3.cluster. mydomain. org

Параметром этой команды может быть ip-адрес, краткое или полное доменное имя включаемого узла. При подключении дополнительного узла, виртуальная машина связывается с подключаемым компьютером по протоколу SSH для выполнения действий связанных с запуском демона pvmd на этом компьютере. Поэтому следует синхронизировать список пользователей на узлах кластера со списком пользователей консоли кластера. Если не предпринимать никаких действий, направленных на обеспечение беспарольного доступа по протоколу SSH на узла кластера с консоли кластера, то при добавлении каждого нового узла в виртуальную машину, система будет запрашивать пароль доступа. При отсутствии проблем, подключение нового узла выглядит на консоли так:

Pvm>add node1

Add node1

Yuri@node1's password:

1 successful

HOST DTID

node1 80000

Pvm>

Посмотреть список подключенных к виртуальной машине узлов можно выдав команду conf:

Pvm> conf

Conf

2 hosts, 1 data format

HOST DTID ARCH SPEED DSIG

Server 40000 LINUX 1000 0x00408841

Node1 80000 LINUX 1000 0x00408841

Pvm>

Для каждой машины списка дана информация, включающая в себя имя машины (короткое или полное доменное имя, или ip-адрес) HOST, идентификатор задачи DTID демона PVM, название архитектуры подключаемой машины ARCH, некое число SPEED, отражающее скоростные характеристики машины и идентификатор самой виртуальной машины DSIG, который будет различен для виртуальных машин, запущенных разными пользователями.

Вместо того, чтобы вручную добавлять каждый узел кластера в виртуальную машину, можно при первом запуске pvm указать в качестве первого параметра команды имя текстового файла, в котором перечислены имена (краткие или полные доменные) или ip-адреса узлов кластера. Правило составления такого файла простое: один узел одна строка. В случае использования списка узлов, PVM самостоятельно выполнит подключение перечисленных в файле машин. Вероятно, правильным и удобным будет обеспечить беспарольный доступ по протоколу SSH к узлам кластера с консоли кластера и выполнение команды "pvm hostlist" из startup-файла пользователя (например. bashrc).

Следующее действие, которым систематически будет заниматься пользователь, находясь в виртуальной машине, это запуск параллельных задач. Запуск осуществляется командой spawn. В качестве параметра этой команды указывается название исполняемого файла, который следует запустить внутри виртуальной машины. Файл с таким названием ищется в каталоге /pvm3/bin/LINUX/.

Pvm> spawn timing

Spawn timing

1 successful

T40002

Pvm>

В приведенном примере выполняется запуск программы "timing". В этом варианте программа запускается в фоновом режиме и весь вывод в STDOUT будет записываться в log-файл. Команду запуска можно модифицировать с тем, чтобы вывод в STDOUT от всех процессов задачи направлялся на консоль виртуальной машины. Для этого команда запуска и вывод программы на экране будут выглядеть так:

Pvm>spawn -> hello

Spawn -> hello

[1]

1 successful

T40004

[1:t40005] Message from slave process

[1:t40004] i'm t40004

[1:t40004] from t40005: hello, world from yis

[1:t40005] EOF

[1:t40004] EOF

[1] finished

Pvm>

Для просмотра списка запущенных задач можно воспользоваться командой ps. Запуск с консоли этой команды без параметров покажет список процессов задач, которые запущены на консоли кластера. Используя параметр "-a", мы можем посмотреть, какие процессы запущены на всех узлах виртуальной машины. Пример:

Pvm> ps - a

Ps - a

HOST TID FLAG 0x COMMAND

server 40002 6/c, f timing

Node1 80002 6/c, f timing_slave

Pvm>

В примере мы видим, что запущенная нами задача timing осталась работать на консоли кластера "server" и породила на узле "node1" дочерний процесс timing_slave.

Для снятия процесса со счета можно воспользоваться командой kill, параметрами которой являются идентификаторы задач (TID) процессов, которые подлежат удалению из системы. Идентификаторы задач можно посмотреть с помощью ранее описанной команды ps. Так, для удаления из системы процессов "timing" и "timing_slave" из предыдущего примера, команда ps будет выглядеть следующим образом:

Pvm> kill 40002 80002

Для удаления всех задач следует воспользоваться командой reset.

Pvm> reset

Часто бывает, что не вся пользовательская работа должна проводится внутри виртуальной машины. Некоторые программы могут запускаться на локальной машине как обычные задачи. Например, визуализацию данных, получаемых в результате счета параллельной программы, можно осуществлять отдельной программой, которая может быть активна не все то время, когда идет счет, запускаться периодически. Такая программа может получать данные для визуализации через специальные файлы FIFO, известные так же как "именованные каналы". О такой методике мы поговорим ниже. В подобных случаях возникает необходимость завершить работу консоль виртуальной машины и выйти в обычную командную строку локальной операционной системы. Выход в операционную систему без остановки виртуальной машины и всех ее процессов осуществляется командой quit.

Pvm> quit

Повторный вход в консоль работающей виртуальной машины осуществляется запуском команды pvm.

В том случае, когда необходимо снять с исполнения все параллельные задачи и остановить работу параллельной виртуальной машины, используется команда halt.

Pvm> halt

Результатом выполнения этой команды является, во-первых, "убивание" всех процессов виртуальной машины на всех присоединенных к ней узлах кластера (в том числе и на консоли кластера), во-вторых, остановка системы PVM на всех узлах кластера (отсоединение узлов), и, в заключение, остановка системы PVM на консоли кластера с выходом к командную строку локальной операционной системы.

Система команд параллельной виртуальной машины PVM не ограничена перечисленными командами. Полный список разрешенных команд можно получить с помощью инструкции help, заданной в командной строке PVM. Однако, для начала работы с PVM и в подавляющем большинстве случаев описанные нами команды достаточны для продуктивной работы пользователя.

Похожие статьи




Установка и администрирования PVM - Администрирование параллельных процессов

Предыдущая | Следующая