Green-sell.info

Новые технологии
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Создание кластера на linux

Linux.yaroslavl.ru

2. Как,что и где.

4. Настройка

Теперь после перезапуска mosix ваша машина уже будет работать в кластере, что можно увидеть запустив монитор командой mon. В случае, если вы увидите в мониторе только свою машину или вообще не увидите никого, то, как говорится — надо рыть. Скорее всего у вас ошибка именно в /etc/mosix.map.
Ну вот, увидили, но не победили. Что дальше? А дальше очень просто 🙂 — нужно собрать утилиты для работы с измененным /proc из пакета mproc. В частности в этом пакете идет неплохая модификация top — mtop, в который добавили возможность отображения узла(node), сортировки по узлам, переноса процесса с текущего узла на другой и установления минимальной загрузки процессора узла, после которой процессы начинают мигрировать на другие MOSIX — узлы.
Запускаем mtop, выбираем понравившийся не спящий процесс (рекомендую запустить bzip) и смело давим клавишу «g» на вашей клавиатуре, после чего вводим на запрос PID выбранного в качестве жертвы процесса и затем — номер узла, куда мы хотим его отправить. А уже после этого внимательно посмотрите на результаты, отображаемые командой mon — та машина должна начать брать на себя нагрузку выбранного процесса.
А собственно mtop — в поле #N отображать номер узла, где он выполняется.
Но это еще не все — ведь вам правда не хочется отправлять на другие узлы процессы вручную? Мне не захотелось. У MOSIX есть неплохая встроенная балансировка внутри кластера, которая позволяет более-менее равномерно распределять нагрузку на все узлы. Ну а вот здесь нам придется потрудится. Для начала я расскажу, как сделать тонкую настройку (tune) для двух узлов кластера? в процессе которой MOSIX получает информацию о скоростях процессоров и сети:
Запомните раз и навсегда — tune можно выполнять только в single-mode. Иначе вы либо получите не совсем корректный результат, либо ваша машина может просто зависнуть.
Итак, выполняем tune. После перевода операционной системы в single — mode например командой init 1 или init S запускаем скрипт prep_tune, который поднимет cетевые
интерфейсы и запустит MOSIX. После этого на одной из машин запускаем tune, вводим ему номер другого узла для настройки и ждем результата — утилита должна выдать запрос на ввод шести чисел, полученных от выполнения команды tune -a на другом узле. Собственно операцию придется повторить на другом узле командой tune -a , а результат из шести чисел ввести на первый узел. После подобного тюнинга в вашей системе должен появится файл /etc/overheads, содержащий информацию для MOSIX в виде неких числовых данных. В случае, если по каким-то причинам tune не смог сделать его, просто скопируйте из текущего каталога файл mosix.cost в /etc/overheads. Это поможет ;-).
При тюнинге кластера из более чем двух машин нужно использовать утилиту, которая также поставляется с MOSIX — tune_kernel. Данная утилита позволяет
вам в более простом и привычном виде настроить кластер, ответив на несколько вопросов и проведя тюнинг с двумя машинами кластера.
Кстати, по собственному опыту могу сказать, что при настройке кластера я рекомендую вам не загружать сеть, а наоборот — приостановить все активные операции в локальной сети.

5. Управление кластером

mosctl — контроль над узлом. Позволяет изменять параметры узла — такие, как block, stay, lstay, delay и т.д
Давайте рассмотрим несколько параметров этой утилиты:
stay — позволяет останавливать миграцию процессов на другие узлы с текущей машины. Отменяется параметром nostay или -stay
lstay — запрещает только локальным процессам миграцию, а процессы с других машин могут продолжать это делать. Отменяется параметром nolstay или -lstay.
block — запрещает удаленным/гостевым процессам выполнятся на этом узле. Отменяется параметром noblock или -block.
bring — возвращает обратно все процессы с текущего узла выполняемые на других машинах кластера. Этот параметр может не срабатывать, пока мигрировавший процесс не получит прерывание от системы.
setdelay устанавливает время, после которого процесс начинает мигрировать.
Ведь согласитесь — в случае, если время выполнения процесса меньше секунды смысл переносить его на другие машины сети исчезает. Именно это время и выставляется утилитой mosctl с параметром setdecay. Пример:
mosctl setdecay 1 500 200
устанавливает время перехода на другие узлы 500 миллисекунд в случае, если процесс запущен как slow и 200 милисекунд для fast процессов. Обратите внимание, что параметр slow всегда должен быть больше или равен параметру fast.

mosrun — запускает приложение в кластере. например mosrun -e -j5 make запустит make на 5-ом узле кластера, при этом все его дочерние процессы будут также выполнятся на 5-ом узле. Правда здесь есть один нюанс, при чем довольно существенный:
в случае, если дочерние процессы выполняются быстрее чем установленная утилитой mosctl задержка (delay) то процесс не будет мигрировать на другие узлы кластера. у mosrun еще довольно много различных интересных параметров, но подробно узнать
о них вы сможете из руководства по этой утилите. (man mosrun)

mon — как мы уже знаем, это монитор кластера, который в псевдографическом виде отображает загрузку каждого рабочего узла вашего кластера, количество свободной и занятой памяти узлов и выдает много другой, не менее интересной информации.

mtop — модифицированная для использования на узлах кластера версия команды top. Отображает на экране динамическую информацию о процессах, запущенных на данном узле, и узлах, куда мигрировали ваши процессы.

mps — тоже модифицированная версия команды ps. Добавлено еще одно поле — номер узла, на который мигрировал процесс.

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

6. Эксперементируем.

7. Использование

8. Заключение

В заключение хочу сказать, что в этой статье не рассмотрены все возможности MOSIX, т.к. я просто до них еще не добрался. Если доберусь — ждите продолжения. 🙂

Создание кластера на linux

Юрий Сбитнев

Родился в 1965 г. в Волгограде.

Образование высшее: Волгоградский государственный университет, физический факультет, специальность — теоретическая физика.

С 1987 по 1997 г. — системный программист ВЦ ВолГУ, старший преподаватель кафедры радиофизики физического факультета ВолГУ.

В настоящее время руководитель Службы Информационно-Технического Обеспечения ОАО «Ювелиры Урала», Корпорация ЯВА, Екатеринбург.

Ubuntu кластер

*** ЧТО ТАКОЕ UBUNTU?

Ubuntu — это разрабатываемая сообществом, основанная на ядре Linux операционная система, которая идеально подходит для использования на персональных компьютерах, ноутбуках и серверах. Она содержит все необходимые программы, которые вам нужны: программу просмотра Интернет, офисный пакет для работы с текстами, электронными таблицами и презентациями, программы для общения в Интернет и много других.

Дистрибутивы семейства Ubuntu являются комплектом специально подобранного ПО. Это операционная система плюс множество нужных и полезных программ, которые свободно и без ограничений могут быть использованы вами и вашими друзьями и коллегами. Базовая полнофункциональная версия системы для персональных компьютеров и ноутбуков или версия для серверов занимают всего 1 CD, поэтому вы легко можете получить её для себя и делиться с окружающими. Специальные DVD версии дистрибутива включают практически всё ПО, которое вам может понадобиться для решения любых повседневных задач.

Для установки линукс-кластера на основе дистрибутива Ubuntu вам потребуется установочный диск Ubuntu Desktop Edition, с помощью которого вы установить операционную систему на консоль (главный компьютер) кластера. С того же самого диска нужно будет установить операционную систему на вычислительные узлы кластера. Однако, если вычислительные узлы не предполагается использовать в качестве офисных машин, но только как узлы кластера, то на эти компьютеры правильнее будет установить серверную редакцию дистрибутива — Ubuntu Server Edition, не содержащую графического интерфейса, и соответственно более легкую и быструю.

Сеть кластера следует спроектировать так, чтобы все узлы имели доступ в интернет. Это нужно для большего комфорта при настройке кластера и установки необходимого программного обеспечения на его узлах. Дело в том, что установка ПО в Ubuntu выполняется посредством закачки новейших версий необходимых пакетов из внешних репозиториев. В действительности достаточно будет обеспечить выходом в Интернет только главный компьютер (консоль кластера), а для вычислительных узлов необходима только возможность загружать программные пакеты через прокси. Осуществить это можно, установив на консоли кластера пакет apt-cacher-ng, а на вычислительных узлах сконфигурировать менеджер пакетов apt-get для работы через прокси. Для этого на консоли кластера выполним команду:

sudo apt-get install apt-cacher-ng

После этого на всех остальных узлах выполним команды:

sudo sh -c «echo «Acquire::http < Proxy \"http://192.168.1.1:3142\"; >; «> /etc/apt/apt.conf.d/01proxy»
sudo apt-get update

Здесь мы предполагаем, что адрес 192.168.1.1 — это адрес консоли кластера во внутренней сети кластера.

После установки базовой операционной системы необходимо доустановить необходимое для функциониования кластера по: компиляторы, библиотеки и программы OpenMPI, SSH, NFS. Выполнить это можно с помощью следующих команд:

sudo apt-get install mc build-essential fort77 gfortran libstdc++5 libltdl7-dev
sudo apt-get install openssh-server nfs-kernel-server
sudo apt-get install openmpi-bin openmpi-doc

Данная последовательность команд устанавливает в систему OpenMPI и компиляторы из набора Gnu Compiller Collection (gcc). Компиляторы gcc обладают одним существенным (в некоторых случаях) недостатком. В них нет поддержки работы с типами данных REAL*16 и COMPLEX*32 (в терминологии Фортрана). Если для ваших задач необходима такая точность вычислений, то вы вместо стандартного набора компиляторов и пакета OpenMPI из состава дистрибутива должны будете установить компиляторы фирмы Intel и скомпилировать OpenMPI с поддержкой этих компиляторов. Как это сделать — рассказано в следующих двух параграфах этой статьи. Если же точность REAL*8 и COMPLEX*16 вас устраивает, то следующие два параграфа вы можете пропустить.

ВАЖНО! Если вы решили использовать компиляторы фирмы Intel, то не следует устанавливать OpenMPI из состава дистрибутива. То есть команду sudo apt-get install openmpi-bin openmpi-doc (см. выше) выполнять не следует.

*** УСТАНОВКА КОМПИЛЯТОРА INTEL FORTRAN

Скачать свежую версию компилятора можно с официального сайта компании Intel, с этой страницы. Получив и разархивировав в своем домашнем каталоге архив с компилятором, выполним процедуру установки, запустив скрипт install.sh, который находится в каталоге, получившимся после разархивации. При запуске скрипт спросит вас о том, в каком варианте произвести установку компилятора. Нужно выбрать вариант N3 — установку в пользовательский каталог. Для ответа на все дальнейшие вопросы программы следует выбирать вариант, предложенный программой по умолчанию.

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

echo «. $HOME/intel/Compiler/11.1/046/bin/ifortvars.sh ia32″ >> $HOME/.bashrc

Эта команда построена в предоложении, что используется версия 11.1.046 компилятора. Если же к тому моменту, когда вы воспользуетесь данными рекомендациями, фирма Intel выпустит новую версию, то команду надо будет поправить соответствующим образом.

Читать еще:  Artmoney ошибка открытия процесса

*** УСТАНОВКА OpenMPI ДЛЯ КОМПИЛЯТОРА INTEL

К сожалению пакет OpenMPI, имеющийся в дистрибутиве Ubuntu, не знает о существовании компилятора Intel. Поэтому его придется установить из исходников, которые можно загрузить с официального сайта проекта OpenMPI. Разархивировав загруженный файл, перейдем в полученный в результате этого каталог исходников и выполним процедуру установки, последовательно запустив на исполнение следующие команды:

./configure —prefix=$HOME/openmpi F77=ifort FC=ifort
make
make install

В случае, если вы намереваетесь использовать и установили кроме компилятора Intel Fortran, так же и Intel С++, то команда конфигурации должна будет выглядеть так:

./configure —prefix=$HOME/openmpi CC=icc CXX=icpc F77=ifort FC=ifort

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

echo «PATH=$HOME/openmpi/bin:$PATH» >> $HOME/.bashrc
echo «export PATH» >> $HOME/.bashrc
echo «LD_LIBRARY_PATH=$HOME/openmpi/lib:$LD_LIBRARY_PATH» >> $HOME/.bashrc
echo «export LD_LIBRARY_PATH» >> $HOME/.bashrc

По окончании процедуры необходимо переподключиться в систему (перелогиниться).

*** НАСТРОЙКА СЕТИ КЛАСТЕРА

Для того, чтобы MPI имела возможность без дополнительных запросов запускать части параллельной прогаммы на вычислительных узлах кластера, вы должны будете организовать беспарольный доступ по протоколу SSH с консоли кластера на все вычислительные узлы. Как это сделать — читайте соответствующий раздел этого сайта.

Следующим нашим шагом будет организация общего для всех узлов кластера каталога, где будут храниться исходники параллельных программ, их исполняемые модули и файлы с данными. Сделать это можно, настроив сетевую файловую систему NFS. Для простоты общий каталог сделаем подкаталгом домашне директории пользователя. Назовем его к прмеру «mpi».

Предположим, что узлы кластера имеют адреса внутри сети 192.168.1.0/255.255.255.0, и консоль кластера имеет адрес 192.168.1.1.

На консоли кластера, выполнив следующую команду, добавляем строчку в файл /etc/exports для создания сетевого ресурса:

sudo sh -c «echo «$HOME/mpi 192.168.1.0/24(rw,insecure,nohide,all_squash,anonuid=1000,anongid=1000,no_subtree_check)» >> /etc/exports»

После этого необходимо перезапустить сервис NFS:

sudo /etc/init.d/nfs-kernel-server restart

На всех остальных узлах кластера мы должны будем поправить файл /etc/fstab, добавив туда запись для автоматического монтирования сетевого ресурса. Делается это командой:

sudo sh -c «echo «192.168.1.1:$HOME/mpi $HOME/mpi nfs rsize=8192,wsize=8192,rw,auto,exec 0 0″ >> /etc/fstab»

Теперь для проверки перезагрузим вычислительные узлы кластера. После перезагрузки каталог mpi в домашней директории пользователя должен быть смонтирован и его содержимое должно быть эквивалентно содержимому такого же каталога на консоли кластера.

Если вы решили использовать компилятор Intel Fortran/Intel C++ и, соответственно, на консоли кластера установили этот компилятор и OpenMPI, скомпиленный из исходников, то то же самое вы должны сделать на всех вычислительных узлах. Однако последнее — не обязательно. Вместо этого вы можете подключить по сети (через NFS) каталоги с установленными компилятором и OpenMPI (openmpi и intel) аналогично тому, как вы только что это сделали подключая рабочий каталог mpi. В дополнение к этому вам необходимо подкорректировать на всех вычислительных узлах кластера файл /etc/environment следующими командами:

sudo sed -i -e ‘s;PATH=»;PATH=»‘»$HOME»‘/openmpi/bin:'»$HOME»‘/intel/Compiler/11.1/046/bin/ia32:;’ /etc/environment
sudo sh -c «echo «LD_LIBRARY_PATH=\»$HOME/openmpi/lib:$HOME/intel/Compiler/11.1/046/lib/ia32:$HOME/intel/Compiler/11.1/046/lib/32\»» >> /etc/environment»

*** НАСТРОЙКА ПАРАЛЛЕЛЬНОЙ СРЕДЫ

Настройка OpenMPI максимально проста. Вы должны в любом удобно месте создать текстовый файл (назовем его например mpi.hosts), в который запишете список всех узлов вашего кластера, как вычислительных узлов, так и консоли. Для простоты будем считать, что вы перечислите там ip-адреса узлов. Один узел — одна строчка. В самом простом варианте конфигурации кластера этого будет достаточно для начала работы.

*** КОМПИЛЯЦИЯ ПАРАЛЛЕЛЬНОЙ ПРОГРАММЫ

Для примера и для проверки работоспособности кластера скачаем в каталог mpi тестовую программу вычисления числа flops.f. Для компиляции необходимо выполнить следующую простую команду:

mpif77 flops.f -o flops

В результате должен получится исполняемый файл с именем «flops». Для запуска его в локальном однопроцессорном режиме достаточно запустить этот файл на исполнение обычным образом, то есть выполнить команду ./flops. На выходе мы получим информацию о скорости работы программы. Если все прошло нормально, то можем переходить к тестированию кластера.

*** ЗАПУСК ПАРАЛЛЕЛЬНОЙ ПРОГРАММЫ

Для запуска нашей программы параллельно на нескольких процессорах (узлах кластера) необходимо использовать диспетчер задач MPI или менеджер очередей, например Torque. Про менеджер очередей и ресурсов Torque мы поговоирм позже. Пока же обойдемся без него. Нам понадобится созданный нами ранее файл-список узлов mpi.hosts. С помощью этого списка запуск нашей параллеььной программы осуществляется командой:

mpiexec -hostfile mpi.hosts -np 5 ./flops

Параметр -np 5 означает, что программа будет запущена на пяти узлах кластера. Отработав, программа выдаст на экран информацию о скоростных характеристаках кластера в целом и отдельных его узлов.

В случае, если ваша параллельная программа состоит из отдельных программных модулей, то имеется возможность запускать из вместе, как единый комплекс. Предположим, что ваша программа состоит из двух модулей — visio и calc. Модуль calc — это собственно параллельная программа, которая в многопроцессороном режиме обрабатывает большой массив данных, и которая занимает 5 процессоров кластера. Модуль visio — программа визуализации полученных данных. Программа visio должна работать на одном процессоре. Запуск такой комплексной программы будет выглядеть так:

Linux Exp Group

Построение двухузлового Linux-кластера с помощью Heartbeat

Building a Two-Node Linux Cluster with Heartbeat
Mar 11, 2002 By C T Leung
in Software

Термин «кластер» на самом деле не очень хорошо определен и может означать разное для разных людей. Согласно Webopedia, кластер — это группа секторов на жестком диске. Большинство пользователей Windows наверняка знакомы с понятием потерянных кластеров, нечто, что можно побороть запуском утилиты дефрагментации диска.

Тем не менее, на более продвинутом уровне компьютерных технологий термин кластер обычно означает группу компьютеров, объединенных сетью для достижения большой производительности, обычно измеряемой в MIPS (миллионы операций в секунду), или для достижения большей доступности (HA).

Beowulf, суперкомпьютер для бедных
Большинство суперкомпьютеров в мире построено на основе концепции параллельных вычислений. Большая вычислительная мощность достигается путем сложения мощностей отдельных вычислителей на задачах, которые можно хорошо разделить между этими вычислителями. Например, построенный IBM «Deep Blue», который выиграл в шахматы у Каспарова, представляет собой объединение нескольких сотен RS6000. Другой пример: многие голливудские компании, занимающиеся мультипликацией, например Pixar, Industrial Light или Magic, используют кластеры компьютеров для рендеринга.

В прошлом только отдельные университетские или исследовательские центры могли себе позволить сосредоточить ресурсы для построения топового суперкомпьютера. Стартовавший в относительно недавнем времени в NASA проект Beowulf посвящен построению кластеров из устаревшего дешевого оборудования, типа первых Pentium и прочих подобных устройств, на которых запускается Linux.

За несколько последних лет сразу во многих университетах по всему миру были развернуты кластеры Beowulf для научных вычислений или исследования достижений переднего края кластеростроения.

High Availability (HA), кластер высокой доступности
Кластеры из этой категории используют несколько различных технологий для обеспечения отказоустойчивых сервисов высокой доступности. Такие компании, как Red Hat, TurboLinux и PolyServe имеют решения для превращения группы компьютеров в самоподдерживающийся пул, где машины наблюдают за состоянием друг друга и когда мастер-сервер аварийно завершает работу, его функции подхватываются подчиненными серверами. В основном это похоже на зеркалирование дисков между различными машинами, то есть программное обеспечение и информация идентичны на разных узлах.

Теория
Поскольку я не имею «белых» IP-адресов, я построю свой кластер в приватной сети с несколькими Linux-серверами и рабочими станциями на Win9x.

Если у вас есть доступ к трем или более внешним IP-адресам, вы можете построить кластер и в Интернете.

В моей схеме в Интернет имеет доступ Linux-маршрутизатор, подключенный к кабельному модему одним из интерфейсов (eth1).

Двухузловой кластер состоит из машины node1 (192.168.1.2) и машины node2 (192.168.1.3). В зависимости от ваших установок любая из них может быть мастер-сервером и любая другая — подчиненным сервером. В примере я выбрал node1 мастером и node2 — резервным. С момента, когда кластер установлен, основной сервер будет работать на псевдониме интерфейса с адресом 192.168.1.4. Во время работы мастер-сервера все сервисы (DHCP, DNS, HTTP, FTP, etc.) будут доступны по обоим адресам (фактически, IP-алиасинг есть ключевая концепция для данного двухузлового кластера).

Когда мастер-сервер уходит в даун, node2 берет на себя все сервисы, которые были запущены на узле node1 с помощью запуска их на том же самом псевдоинтерфейсе с адресом 192.168.1.4. Поскольку некоторые серверы могут быть запущены на многих узлах, но зато другие, как например DHCP, могут быть подняты только на одном узле физического сегмента, они не могут существовать одновременно на node1 и node2. То есть алиас с адресом 192.168.1.4 существует одномоментно только или на мастере, или на резервном сервере.

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

Двухузловой кластер на основе «Heartbeat»
Вам понадобятся две машины не слабее 100MHz CPU, 32MB RAM, имеющие по одной сетевой карте и 1Gb жесткий диск. Эти машины не обязаны быть идентичными.

У меня были AMD K6 350M Hz и Pentium 200 MMX. Я выбрал машинку AMD в качестве первичного сервера. Старое и почти полностью вышедшее из употребления оборудование в отличном состоянии — прекрасный объект для экспериментов.

AMD K6 350MHz cpu
4G SCSI hard drive (you certainly can use IDE hard drive)
128MB RAM
1.44 Floppy drive
24x CD-ROM (not needed after installation)
3COM 905 NIC

Pentium 200 MMX
4G SCSI hard drive
96MB RAM
1.44 Floppy
24x CD-ROM
3COM 905 NIC

Необходимое программное обеспечение
На узлах node1 и node2 необходимо иметь установленный Linux. Мой выбор — Red Hat 7.2 на node1 и Red Hat 6.2 на node2 (хотел посмотреть, будет ли схема работать на разных версиях операционной системы). Проверьте, все ли серверные программы, нужные вам, установлены на обоих машинах.

Детали установки:
128 Мб для раздела swap и весь оставшийся диск для корневого раздела файловой системы.
Установленные пакеты: Apache, FTP, Samba, DNS, dhcpd, Squid, Heartbeat.

Heartbeat — часть проекта Ultra Monkey (The Linux HA Project), и rpm-пакет может быть загружен с сайта www.UltraMonkey.org.

Та часть работы, которая относится к скачиванию и установке пакета проста. Но документация труднонаходима и неполна. Это одна из причин, по которой написано эта инструкция.

Содержание некоторых конфигурационных файлов, необходимых для рабочей схемы:

/etc/hosts
127.0.0.1 localhost
192.168.1.1 router
192.168.1.2 node1
192.168.1.3 node2

Этот файл должен быть одинаковым на node1 и node2; можно по необходимости добавить и другие узлы.

Проверьте, что команда cat /etc/HOSTNAME выдает соответственно node1 или node2 в зависимости от машины. При необходимости воспользуйтесь редактированием файла /etc/HOSTNAME для исправления ситуации.

Читать еще:  Скачать ms sql сервер для linux

Вывод ifconfig на узле node1:

eth0 Link encap:Ethernet HWaddr 00:60:97:9C:52:28
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18617 errors:0 dropped:0 overruns:0 frame:0
TX packets:14682 errors:0 dropped:0 overruns:0 carrier:0
collisions:3 txqueuelen:100
Interrupt:10 Base address:0x6800
eth0:0 Link encap:Ethernet HWaddr 00:60:97:9C:52:28
inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:10 Base address:0x6800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:38 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

Обратите внимание: eth0:0 показывает адрес алиаса сетевого интерфейса с адерсом 192.168.1.4.

Вывод ifconfig для node2:

eth0 Link encap:Ethernet HWaddr 00:60:08:26:B2:A4
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15673 errors:0 dropped:0 overruns:0 frame:0
TX packets:17550 errors:0 dropped:0 overruns:0 carrier:0
collisions:2 txqueuelen:100
Interrupt:10 Base address:0x6700
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:142 errors:0 dropped:0 overruns:0 frame:0
TX packets:142 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

Установите rpm-пакет Heartbeat. Для этого пройдите на FTP Ultra Monkey, затем в pub, затем в Ultra Monkey и найдите последнюю версию. Скачайте, выполните от суперпользователя:

rpm -ivh heartbeat-0.4.9-1.um.1.i386.rpm

(Вероятнее всего, на текущий момент понадобится выполнить yum install heartbeat, возможно понадобится добавить репозиторий Ultra Monkey — прим. перев.)

Кабель Null Modem, кросс-кабель, вторая сетевая карта
В соответствии с документацией, в каждый узел нужно установить по второй сетевой карте и соединить узлы через эти карты кросс-кабелем. Кроме того, опять же в соответствии с документацией, нужно соединить последовательные порты узлов нульмодемным кабелем. Проводя эксперименты, я установил, что ни дополнительные сетевые карты, ни нульмодемный, ни кросс-кабель не являются обязательными для функционирования схемы.

Конфигурирование Heartbeat — наиболее значимая вещь во время установки. Ошибки, допущенные в конфигурации, не дадут кластеру работать корректно. Конфигурация должна быть идентичной на обоих узлах.
Имеется три конфигурационных файла, все в каталоге /etc/ha.d: ha.cf, haresource и authkeys.

Содержимое файла /etc/ha.d/ha.cf:

debugfile /var/log/ha-debug
#
# File to write other messages to
#
logfile /var/log/ha-log
#
# Facility to use for syslog()/logger
#
logfacility local0
#
# keepalive: how many seconds between heartbeats
#
keepalive 2
#
# deadtime: seconds-to-declare-host-dead
#
deadtime 10
udpport 694
#
# What interfaces to heartbeat over?
#
udp eth0
#
node node1
node node2
#
# ——> end of ha.cf

Наиболее важны три последние опции:

udp eth0
#
node node1
node node2

Если нет нульмодемного кабеля, вы должны использовать интерфейс eth0, то есть единственную сетевую карту для udp; два описателя узла должны быть одинаковыми, их значения соответствовать тому, что возвращает команда uname -n на каждом узле.

Содержимое файла /etc/ha.d/haresources:

node1 IPaddr::192.168.1.4 httpd smb dhcpd

Это единственная нужная строка, вы можете добавить столько служб, сколько нужно, сообразуясь с именами инит-скриптов в /etc/rc.d/init.d.

Файл /etc/ha.d/authkeys: в нем ничего не требуется менять, но необходимо изменить права на файл:

chmod 600 /etc/ha.d/authkeys

Запуск службы Heartbeat
Запуск демона Heartbeat можно осуществить с помощью команды

service heartbeat start

Сразу после запуска Heartbeat вывод ifconfig на node1 должен быть примерно следующим:

eth0 Link encap:Ethernet HWaddr 00:60:97:9C:52:28
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18617 errors:0 dropped:0 overruns:0 frame:0
TX packets:14682 errors:0 dropped:0 overruns:0 carrier:0
collisions:3 txqueuelen:100
Interrupt:10 Base address:0x6800
eth0:0 Link encap:Ethernet HWaddr 00:60:97:9C:52:28
inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:10 Base address:0x6800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:38 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

Если вы видите строку eth0:0, значит Heartbeat поднялся, теперь можно проверить доступ к сервисам на адресе http://192.168.1.4 и просмотреть журналы /var/log/ha-log на обоих узлах. Также с помощью ps -A | grep dhcpd убедитесь, что dhcpd не запущен на резервном узле.

Теперь тест доступности. Выгрузите систему и выключите питание на node1. В течение 10 секунд должно произойти поднятие алиаса на узле 2. Проверьте с помощью ifconfig:

eth0 Link encap:Ethernet HWaddr 00:60:08:26:B2:A4
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15673 errors:0 dropped:0 overruns:0 frame:0
TX packets:17550 errors:0 dropped:0 overruns:0 carrier:0
collisions:2 txqueuelen:100
Interrupt:10 Base address:0x6700
eth0:0 Link encap:Ethernet HWaddr 00:60:08:26:B2:A4
inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15673 errors:0 dropped:0 overruns:0 frame:0
TX packets:17550 errors:0 dropped:0 overruns:0 carrier:0
collisions:2 txqueuelen:100
Interrupt:10 Base address:0x6700

Если есть eth0:0 с адресом 192.168.1.4 — значит мы в деле. Кроме того, с помощью команды

ps -A | grep dhcpd

можно проверить, поднялся ли DHCP-сервер.

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

Предложение от 8host.com

Создание кластера Beowulf в Ubuntu 12.04

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

Кластеры просты в настройке и их легко расширять при помощи развертываемых экземпляров серверов. В этом руководстве речь пойдёт о настройке кластера Beowulf для распределенной обработки данных между нодами.

Требования

В руководстве используется четыре виртуальных выделенных сервера Ubuntu 12.04: один в качестве ведущей ноды, остальные — ведомые. Большинство конфигураций повторяется на каждом сервере. Потому вы можете выполнить начальную настройку на одном сервере, а затем распространить полученное окружение на другие серверы с помощью снапшотов.

Серверы, использованные в руководстве, имеют 4 Гб памяти, что позволяет воспользоваться преимуществами более высокой вычислительной мощности. Однако для подобной настройки можно использовать и серверы с меньшим объёмом памяти.

Ведущий сервер (Control):

  • Имя хоста: command
  • Внутренний IP-адрес: 1.1.1.1

Ведомый сервер 1 (Worker):

  • Имя хоста: work1
  • Внутренний IP-адрес: 1.1.1.2

Ведомый сервер 2:

  • Имя хоста: work2
  • Внутренний IP-адрес: 1.1.1.3

Ведомый сервер 3:

  • Имя хоста: work3
  • Внутренний IP-адрес: 1.1.1.4
  • Система Ubuntu 12.04.
  • Пользователь с доступом к sudo (инструкции здесь).
  • Частная сеть.

Начальная настройка ведущей ноды

Создание пользователя

Сначала нужно создать непривилегированного пользователя для управления кластером (не путайте его с пользователем с доступом к sudo, который уже существует в системе). В данном руководстве такой пользователь условно называется cluster:

sudo adduser cluster —uid 900

Параметр –uid указывает id пользователя, который будет связан с данным аккаунтом. Если порядковый номер ниже 1000, то такой пользователь не будет выполнять системных задач.

Установите надёжный пароль для нового пользователя cluster. На остальные запросы можно просто нажать Enter.

Создание учётных данных

Теперь создайте учётные данные SSH для нового пользователя. Ноды кластера будут взаимодействовать по SSH и обмениваться данными путём монтирования NFS. Создайте пару ключей SSH.

Перейдите в сессию пользователя cluster:

Сгенерируйте ключ RSA:

Чтобы принять опции по умолчанию, нажмите Enter.

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

Чтобы принять ключ, введите yes и укажите пароль пользователя cluster.

Чтобы вернуться в сессию предыдущего пользователя, введите:

Установка MPI

Ноды кластера будут взаимодействовать с помощью системы MPI (Message Passing Interface), что позволит параллельным процессам легко обмениваться данными о состоянии и рабочей информацией.

В руководстве используется популярная версия MPICH2.

Чтобы установить её, введите:

sudo apt-get install mpich2

Развёртывание ведомых нод с помощью ведущей

Чтобы настроить ведомые ноды, создайте снапшот конфигурации полученной ведущей ноды, а затем распространите его между серверами кластера.

Также для дальнейшей работы вам понадобится IP-адрес частной сети для каждой ноды.

Установка NFS

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

Перейдите на ведущий сервер.

Как говорилось ранее, данный кластер будет использовать NFS-монтирование для распространения домашнего каталога между всеми нодами. Сервер NFS будет установлен на ведущей ноде. Для этого запустите команду:

sudo apt-get update && sudo apt-get install nfs-kernel-server

Экспортируйте домашний каталог пользователя cluster на все ноды:

sudo nano /etc/exports

Добавьте в конец файла:

Перезапустите сервер NFS:

sudo service nfs-kernel-server restart

Настройка нод

Теперь нужно добавить файл hosts на каждую ноду кластера, чтобы они могли взаимодействовать.

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

Отредактируйте файл /etc/hosts и добавьте данные о нодах в следующем формате.

1.1.1.1 command
1.1.1.2 work1
1.1.1.3 work2
1.1.1.4 work3

Примечание: Замените условные IP-адреса IP-адресами своих серверов.

Откройте файл hosts:

sudo nano /etc/hosts

Вставьте в файл следующие строки:

127.0.0.1 localhost command
1.1.1.1 command
1.1.1.2 work1
1.1.1.3 work2
1.1.1.4 work3

Сохраните и закройте файл.

Настройка ведомых нод

Затем нужно установить и настроить компоненты NFS на ведомые ноды.

Примечание: Выполните данный раздел на всех ведомых нодах кластера.

sudo apt-get install nfs-common -y

Теперь ноды могут получить экспортируемые данные:

sudo showmount -e command
Export list for command:
/home/cluster *

Это значит, что данные были успешно переданы с ведущего сервера command.

Примечание: В случае сбоя или ошибки попробуйте перезапустить сервер NFS на ведущей ноде:

sudo service nfs-kernel-server restart

Вернитесь на ведомую ноду и смонтируйте домашний каталог пользователя cluster.

sudo mount command:/home/cluster /home/cluster

Домашний каталог будет смонитрован. Чтобы монтирование каталога выполнялось автоматически, добавьте эту команду в файл /etc/fstab. Откройте файл:

sudo nano /etc/fstab

И вставьте в конец файла следующую строку:

command:/home/cluster /home/cluster nfs

Сохраните и закройте файл.

Заключительные действия

Теперь ведущий сервер передаёт свой домашний каталог на остальные серверы кластера при помощи монтирования NFS.

Проверьте подключения SSH. При создании такого подключения не должен запрашиваться пароль.

Откройте сессию пользователя cluster на ведущей ноде:

Создайте SSH подключение к каждой ноде в кластере:

Введите yes, чтобы принять хост. Чтобы вернуться, введите:

Затем повторите это на каждой ведомой ноде по очереди (ssh work1, ssh work2 и т.д.). Убедитесь, что все ноды могут взаимодействовать по SSH.

Создание файла hosts

Теперь нужно создать ещё один файл hosts, в котором будет храниться список рабочих нод кластера.

Для выполнения команд в кластере будет использоваться ведущий сервер. Все команды будут распределяться между ведомыми нодами.

Ведущую ноду не нужно добавлять в кластер, иначе в случае высокой нагрузки она может отказать. На ведущей ноде войдите как пользователь cluster:

Создайте файл hosts:

Добавьте в него список рабочих нод:

work1
work2
work3

Сохраните и закройте файл.

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

Тестирование кластера

Программа mpich2, которая отправляет сообщения между нодами, включает в себя некоторые приложения, которые можно использовать для тестирования кластера. К сожалению, по умолчанию они не собраны. Их нужно скомпилировать самостоятельно.

Читать еще:  Linux for server

Соберите необходимые приложения на ведущей ноде в сессии обычного пользователя с доступом к sudo:

sudo apt-get build-dep mpich2

Теперь можно получить исходные файлы с веб-сайта проекта:

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

tar xzvf mpich*
cd mpich*

Выполнение команды займёт некоторое время. После этого откройте сессию пользователя cluster:

Скопируйте программу, скомпилированную в каталоге bin:

cp /home/regular_user/mpich2-1.4.1/examples/cpi /home/cluster/bin

С помощью этой программы можно протестировать кластер.

Для этого нужно сослаться на файл hosts и указать номер процесса, который нужно запустить. Также нужно зажать интерфейс.

mpiexec -f hosts -iface eth1 -n 12 /home/cluster/bin/cpi
Process 6 of 12 is on work1
Process 2 of 12 is on work3
Process 9 of 12 is on work1
Process 11 of 12 is on work3
Process 0 of 12 is on work1
Process 5 of 12 is on work3
Process 8 of 12 is on work3
Process 3 of 12 is on work1
Process 7 of 12 is on work2
Process 10 of 12 is on work2
Process 4 of 12 is on work2
Process 1 of 12 is on work2
pi is approximately 3.1415926544231256, Error is 0.0000000008333325
wall clock time = 0.003485

Как видите, в кластере выполняется 12 процессов. Если проверить каждый процесс в отдельности, вы увидите, что каждый из них работает по принципу round robin.

Заключение

Теперь у вас есть полностью рабочий кластер Beowulf. При необходимости в кластер можно добавить новые ноды.

Создание кластера на linux

Для начала нужно разобраться что же такое кластер в общем случае. Как правило, кластер состоит из узлов (отдельных компьютеров) и объединяющей их сети. Для построения сети обычно используется технология Fast Ethernet (100Mbit/sec), но в простейшем случае (например, создание кластера в домашних условиях или в демонстративных целях) подойдет и один сегмент Ethernet на 10Mbit/sec.

Обычно кластеры используются научно-исследовательскими организациями для моделирования различного рода задач или проведения сложных расчетов. Цена суперкомпьютеров является недоступной для большинства организаций, поэтому появилась идея собрать свой ‘суперкомпьютер’ из ‘подручного материала’ — рабочих станций на базе процессоров Intel. Производительность процессоров производства Intel сейчас практически достигла уровня процессоров архитектуры RISC (процессоры Intel включая Pentium III используют архитектуру CISC, а P4 — VLIW).

Собираем свой кластер

Конфигурация узлов кластера зависит от задач, которые они будут выполнять. Если ваша цель — само создание кластера без решения каких-нибудь важных задач, подойдут и старенькие машины с 486-ым процессором (желательно DX2 или DX4). Для решения относительно важных задач подойдут компьютеры с процессорами Pentium II от 400Mhz или Pentium III (от 600Mhz).

Обратите внимание на объем оперативной памяти. В первом случае (486/демонстрация работы кластера) достаточным будет 16-32MB (желательно). Во втором — минимум 64Мб, рекомендуется 128Мб ОЗУ.
При использовании многопроцессорных машин объем ОЗУ желательно увеличить до уровня Nx64Mb, где N — это количество процессоров, то есть по 64Мб на каждый процессор. Обычно используются двухпроцессорные машины — в этом случае минимальный объем ОЗУ будет равен 128Мб, а рекомендуемый — 256Мб.

Один компьютер (узел) будет центральным. Желательно, чтобы он был более мощным, чем остальные узлы кластера. На нем нужно установить более мощный процессор, в два раза большим объем оперативной памяти, чем на остальных узлах (минимум 128Мб). Желательно на центральном компьютере использовать SCSI-диск, но подойдет и ATA133 / 7200 rpm. Лучше поставить быстрый SCSI, а на узлах вообще отказаться от жесткого диска — так будет дешевле. Все эти требования — желательные, но не обязательные.

Если вы откажетесь от использования жестких дисков на узлах кластера, операционная система будет загружаться по сети, но об этом мы поговорим немного позже. В этом случае вы получите лишь выигрыш во времени: операционную систему и программное обеспечение нужно будет настраивать только один раз.
Вполне возможен отказ и от видеоплат при сборке узлов кластера (на центральном узле видеоплата все-таки будет нужна).

Теперь поговорим о сети. Как я уже писал, желательно использовать Fast Ethernet. Если количество узлов довольно велико (от 20), для уменьшения коллизий необходимо разбить на отдельные сегменты или использовать для их соединения коммутатор (swith), а не повторитель (hub).
В некоторых случаях имеет смысл разбить сеть на сегменты даже при небольшом числе узлов (от 8), например, если вы используете Ethernet (10Mbit/sec).

При использовании Ethernet отказываться от жестких дисков не рекомендуется: кластер будет работать ужасно медленно, будет возникать огромное число коллизий.
Одним из самых эффективных решений для связи узлов кластера является использование 1.28GBit-ных коммутаторов Myrinet. Также можно использовать технологию Gigabit Ethernet.

Программное обеспечение

В качестве операционных систем можно использовать:

  1. Linux
  2. FreeBSD
  3. Windows NT

Предпочтительнее использовать любую Unix-систему, так как именно эти операционные системы наиболее эффективнее используют сетевые ресурсы. Оптимальным решением является операционная система Linux — она бесплатна и довольно проста в настройке.

Можно использовать любую Linux-систему с версией ядра 2.2.* и выше. Я бы порекомендовал использовать шестую версию Linux RedHat, так как она нетребовательна к системным ресурсам (минимальная конфигурация — 486 33Mhz/8MB RAM/120MB HDD) и в состав дистрибутива входит относительно новое программное обеспечение по сравнению с версией 5.2, которую также можно использовать для построения кластера. Версия ядра, используемая этим дистрибутивом (RH 6), 2.2.5-15.

После установки и настройки (настройки сети) операционной системы нужно установить специальные компиляторы. Дело в том, что бесплатно распространяемые компиляторы gcc/g77/egcs не обеспечивают необходимого уровня оптимизации программ для процессоров Intel (PII, PIII). Рекомендуется использовать коммерческие компиляторы, например, входящие в проект PGI Workstation.
При использовании Windows NT как операционной системы кластера можно также выбрать компилятор компании Intel, оптимизированный для платформы Intel.

В первом и во втором случае доступны тестовые версии компиляторов. Shareware-версию пакета PGI вы можете скачать на сайте PGI Group. А тестовую (14 дней) версию компилятора Intel можно скачать на сайте Intel.

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

MPI CHameleon представляет собой реализацию промышленного стандарта MPI 1.1. MPI CHameleon позволяет программам выполнятся внутри локальной системы или на сетевом кластере с использованием TCP-соединений.
Среда Condor обеспечивает равномерную нагрузку на кластер путем миграции процессов между несколькими машинами.

Я выбрал более простой вариант — PVM (Parallel Virtual Machine). PVM обеспечивает условия для выполнения одной (или нескольких — в большинстве случаем) задач на нескольких машинах. Другими словами PVM просто распределяет процессы на узлах кластера также как планировщик заданий операционной системы распределяет процессорное время для выполнения нескольких задач.
PVM может работать на следующих архитектурах:

Это далеко не все архитектуры, которые поддерживает PVM. Список всех доступных архитектур вы найдете в документации pvm. Интересующие нас (точнее, доступные нам) архитектуры выделены жирным шрифтом.

Работа с ‘параллельной машиной’ довольно проста. Нужно установить ее на всех машинах кластера. Мой ‘кластер’ состоял из двух машин класса Pentium (100 и 150Mhz) с объемом ОЗУ по 32Мб и одной (центральной) Celeron 433 (128Mb). От сетевой загрузки я отказался из-за использование 10Mbit-го Ethernet’a. К тому же на всех узлах уже были установлены жесткие диски. На центральном была установлена ОС Linux Mandrake 7, а на вспомогательных машинах Linux RedHat 6.0 Hedwig. Я не устанавливал каких-нибудь коммерческих комплиляторов, а использовал те, которые входят в состав дистрибутива.
Кстати, PVM может работать и на платформе Windows 9x, но вот этого не рекомендую делать. Ради интереса я установил PVM для Windows 98. Скорость работы даже тестовых приложений (не говоря уже о реальных расчетах) была значительно ниже. То, что кластер работает медленнее было видно даже ‘невооруженным глазом’. Скорее всего, это объясняется неэффективной работой Windows с сетью. К тому же, довольно часто весь кластер ‘зависал’ даже при выполнении тестовых задач, которые входят в состав пакета PVM.

Использование PVM

PVM компилируется с помощью привычной тройки команды:
configure; make; make install

Перед запуском make установите переменную окружения PVM_ROOT. В этой переменной окружения нужно указать каталог, в котором находятся каталоги PVM (например, $HOME/pvm, если вы распаковали архив в свой домашний каталог). Еще одной важной переменной окружения является PVM_ARCH. В ней содержится название архитектуры операционной системы. Данная переменная должна устанавливаться автоматически, но если этого не произошло (как в моем случае), нужно установить архитектуру самостоятельно. При использовании Linux эта переменная должна содержать значение LINUX.

Как я уже писал, нужно установить PVM на всех узлах кластера. Вся параллельная машина состоит из демона pvmd и консоли pvm. Назначение опций запуска демона можно узнать, выполнив команду man pvmd. На центральной машине нужно запустить демон pvmd и выполнить команду:
pvm
Этим мы запустим консоль, с помощью которой мы будем управлять всем кластером.

После запуска консоли вы должны увидеть приглашение, которое свидетельствует о том, что кластер готов к работе:
pvm >
Введите команду conf для печати конфигурации кластера. Вы должны увидеть примерно это:
Листинг 1.

Из листинга 1 видно, что сейчас наш кластер состоит из одной машины — центрального узла, который работает под управлением Linux. Теперь самое время добавить в наш кластер еще два узла. Добавление узлов осуществляется с помощью команды:
add hostname
После успешного добавления узла в кластер он должен быть отображен в списке узлов кластера. Теперь уже можно запускать программы, которые поддерживают PVM. Примеры таких программ вы можете найти в каталоге $PVM_ROOT/bin/$PVM_ARCH/.В нашем случае это будет каталог /root/pvm/bin/LINUX (я установил pvm в каталог /root). Для начала запустим самую простую программу — hello. Прежде чем запустить ее, нужно сделать несколько замечаний:

  1. Вы не можете запускать процессы прямо из консоли pvm. Консоль служит лишь для управления кластером.
  2. Запуск задачи осуществляется обычным способом — из консоли операционной системы. Но ‘распараллеливаться’ будут лишь те процессы, которые поддерживают pvm. С помощью команды spawn также можно породить задачу (см. ниже)

При запуске hello вы должны увидеть сообщение
hello, world from hostname,
где hostname — это узел кластера. Другими словами все узлы кластера должны поприветствовать вас.

Более интересной является программа gexample. После запуска нужно ввести два аргумента: n и число процессоров. Не вдаваясь в математические подробности, она рассчитывает сумму от 1 до n и факториал числа n. Второй аргумент определяет количество процессоров, которые будут задействованы в вычислении. В нашем случае второй аргумент равен трем. Просмотреть список всех задач можно с помощью команды ps -a. Эту команду нужно вводить в консоли pvm, а не в консоли операционной системы! Породить задачу можно также с помощью команды spawn, которая подробно рассмотрена ниже. Назначение всех команд консоли pvm представлено в таблице 1.

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×