Кластерные системы на основе ОС Linux. Построение учебного кластера

Автор работы: Пользователь скрыл имя, 26 Февраля 2012 в 21:03, реферат

Краткое описание

На протяжении выполнения работы были изучены вопросы организации кластерных вычислительных систем, их разновидности и классификация, были рассмотрены особенности и механизмы построения программного обеспечения для кластеров. Также был изучен один из современных подходов к построению хорошо распараллеливающегося программного обеспечения посредством использования интерфейса MPI (message passing interface), его реализация и особенности ЯВУ для разработки распараллеливающихся программ.

Содержание работы

1 КЛАСТЕРЫ. ОБЩИЕ ПОНЯТИЯ.
1.1 ВИДЫ КЛАСТЕРОВ.
1.2 МОДЕЛИ КЛАСТЕРОВ.
2 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ КЛАСТЕРОВ.
2.1 ОСОБЕННОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
2.2 МЕХАНИЗМЫ ПОСТРОЕНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
2.2.1 ИНТЕРФЕЙС MPI.
2.2.2 РЕАЛИЗАЦИИ MPI.
2.2.3 СРЕДСТВА ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ.
3 СОВРЕМЕННЫЕ ВАРИАНТЫ LINUX - КЛАСТЕРОВ.
3.1 BEOWULF.
3.2 MOSIX.
4 РАЗВОРАЧИВАНИЕ LINUX КЛАСТЕРА НА БАЗЕ OPENMOSIX.
4.1 КОМПИЛЯЦИЯ ЯДРА.
4.2 КОНФИГУРАЦИИ КЛАСТЕРА.
4.3 НАСТРОЙКА ФАЙЛОВОЙ СИСТЕМЫ OMFS.
4.4 НАСТРОЙКА DSH (DISTRIBUTED SHELL).
4.5 ТЕСТ ПРОИЗВОДИТЕЛЬНОСТИ КЛАСТЕРА.
5 ИТОГИ.
6 СИПИСОК ИСТОЧНИКОВ ИНФОРМАЦИИ

Содержимое работы - 1 файл

Кластерные системы на основе ОС Linux.doc

— 148.00 Кб (Скачать файл)


МИНИСТЕРСТВО НАУКИ И ОБРАЗОВАНИЯ УКРАИНЫ

Одесский национальный политехнический университет

"Кафедра интеллектуальных компьютерных систем и сетей"

 

 

 

 

 

 

Методические указания по теме:

«Кластерные системы на основе ОС Linux. Построение учебного кластера.»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнили:

студенты группы АМ-055

Василиади Николай

Стеля Андрей

 

 

 

 

Одесса 2010

СОДЕРЖАНИЕ:

 

1 КЛАСТЕРЫ. ОБЩИЕ ПОНЯТИЯ.

 1.1 ВИДЫ КЛАСТЕРОВ.

 1.2 МОДЕЛИ КЛАСТЕРОВ.

2 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ КЛАСТЕРОВ.

2.1 ОСОБЕННОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

2.2 МЕХАНИЗМЫ ПОСТРОЕНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

2.2.1 ИНТЕРФЕЙС MPI.

2.2.2 РЕАЛИЗАЦИИ MPI.

2.2.3 СРЕДСТВА ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ.

3 СОВРЕМЕННЫЕ ВАРИАНТЫ LINUX - КЛАСТЕРОВ.

3.1 BEOWULF.

3.2 MOSIX.

4 РАЗВОРАЧИВАНИЕ LINUX КЛАСТЕРА НА БАЗЕ OPENMOSIX.

4.1 КОМПИЛЯЦИЯ ЯДРА.

4.2 КОНФИГУРАЦИИ КЛАСТЕРА.

4.3 НАСТРОЙКА ФАЙЛОВОЙ СИСТЕМЫ OMFS.

4.4 НАСТРОЙКА DSH (DISTRIBUTED SHELL).

4.5 ТЕСТ ПРОИЗВОДИТЕЛЬНОСТИ КЛАСТЕРА.

5 ИТОГИ.

6 СИПИСОК ИСТОЧНИКОВ ИНФОРМАЦИИ


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. КЛАСТЕРЫ. ОБЩИЕ ПОНЯТИЯ.

 

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

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


 

1.1. ВИДЫ КЛАСТЕРОВ.

 

Существуют три основных вида кластеров: Fail-over (отказоустойчивые), Load-balancing (балансировочные, распределяющие нагрузку) и High Performance Computing (высокопроизводительные вычислительные).

Отказоустойчивые кластеры представляют собой два или более связанных по сети компьютера с дополнительным выделенным контрольным (heartbeat) соединением между ними. Это выделенное соединение между машинами используется для мониторинга состояния сервисов: как только заданный сервис на одной машине выходит из строя, то другая начинает выполнять её функции.

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

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

 

 

1.2. МОДЕЛИ КЛАСТЕРОВ.

 

Существует несколько технологий реализации параллельных вычислений: (N)UMA, DSM, PVM и MPI – всё это различные схемы параллельных вычислений. Некоторые из них уже реализованы аппаратно, другие только в программном, а некоторые – и в том, и в другом виде.

(N)UMA: здесь машины пользуются разделяемым доступом к памяти, в которой они могут выполнять свои программы. В ядре Linux реализована поддержка NUMA, позволяющая получать доступ к разным областям памяти. При этом задача ядра использовать ту память, которая находится ближе к процессору, работающему с ней.

DSM уже реализована не только в программном виде, но и в аппаратном. Основная концепция DSM в организации абстрактного слоя для физически распределённой памяти.

Технологии PVM и MPI наиболее часто упоминаются, когда речь заходит о GNU/Linux Beowulf кластерах.

MPI – это открытая спецификация библиотеки передачи сообщений. Самой популярной реализацией MPI является MPICH. Второй по популярности после MPICH можно назвать LAM, также являющейся свободной реализацией MPI.

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


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ КЛАСТЕРОВ.

 

2.1 ОСОБЕННОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

 

Главным препятствием к внедрению практически всех параллельных архитектур является отсутствие параллельных программ. У унаследованных от последовательного мира программ имеется недостаток - большой объем кода, принципиально не допускающий параллельного исполнения. Его нельзя преодолеть за счет усовершенствования техники компиляции. Так, если программа половину времени занимается действиями, которые требуется совершать строго последовательно, то параллельное выполнение оставшейся половины в предельном случае даст лишь двукратное ускорение. В результате, хотим мы этого или нет, последовательные вычислительные алгоритмы придется заменять параллельными.

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


 

2.2 МЕХАНИЗМЫ ПОСТРОЕНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

 

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


 

2.2.1 ИНТЕРФЕЙС MPI.

 

За последние годы в деле создания ПО для систем с распределенной памятью наметился серьезный прогресс. Самым крупным достижением была стандартизация интерфейса передачи сообщений MPI (message passing interface). Набор функций этого интерфейса вобрал в себя лучшие черты своих предшественников p4 и PVM. Во-первых, MPI поддерживает несколько режимов передачи данных, важнейшие из которых: синхронная передача, не требующая выделения промежуточных буферов для данных и обеспечивающая надежную передачу данных сколь угодно большого размера, и асинхронная передача, при которой посылающий сообщение процесс не ждет начала приема, что позволяет эффективно передавать короткие сообщения. Во-вторых, MPI позволяет передавать данные не только от одного процесса к другому, но и поддерживает коллективные операции: широковещательную передачу (broadcasting), разборку-сборку (scatter и gather), операции редукции. В-третьих, MPI предусматривает гетерогенные вычисления. Вычислительная система может включать разные процессоры, в том числе имеющие различные наборы команд и разное представление данных. Если у вас имеется суперкомпьютер, то это кажется излишним, но для организаций, эксплуатирующих сети рабочих станций с различными процессорами и версиями Unix, - это находка.

Синтаксис MPI облегчает создание приложений в модели SPMD (single program multiple data) - одна программа работает в разных процессах со своими данными. Одна и та же функция вызывается на узле-источнике и узлах-приемниках, а тип выполняемой операции (передача или прием) определяется с помощью параметра. Такой синтаксис вызовов делает SPMD-программы существенно компактнее, хотя и труднее для понимания.

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

Поддержка модульного программирования в сочетании с независимостью от аппаратуры дала мощный импульс к созданию библиотек. Одна из самых интересных разработок - пакет линейной алгебры ScaLAPACK, разработанный группой Дж. Донгарра.


>>к содержанию>>

2.2.2 РЕАЛИЗАЦИИ MPI

 

Библиотеки MPI реализованы практически на всех современных суперкомпьютерах.

Основное достоинство пакета LAM - богатые отладочные возможности. Трассировка обращений к MPI и анализ состояния параллельной программы после аварийного завершения - серьезный аргумент в пользу этой библиотеки, особенно учитывая серьезность проблем отладки. С другой стороны, пакет MPICH более мобилен - имеются инструкции, следуя которым можно перенести MPI на новую платформу. Для этого необходимо написать лишь несколько драйверов нижнего уровня. Установка библиотеки MPICH проходит труднее, чем установка LAM MPI, поскольку приходится задавать гораздо большее число параметров, причем назначение некоторых из них известно только разработчикам. К тому же, по нашим наблюдениям, MPICH несколько эффективнее передает сообщения, однако отлаживать программы в среде MPICH труднее.

Самые последние экспериментальные версии MPICH поддерживают мультипротокольную передачу сообщений. Часто на одном узле (особенно если он включает несколько процессоров, имеющих доступ к общей памяти) функционирует несколько процессов. Однако однопротокольные библиотеки не учитывают это обстоятельство, и для передачи сообщений как вовне, так и внутри узла используют стек TCP/IP. Из-за этого передача сообщения внутри узла сопровождается бесчисленными вызовами функций стека и многократным копированием информации в локальной памяти узла. Мультипротокольная реализация позволяет в рамках узла передавать данные через общую память, что намного быстрее.

MPICH дает возможность использовать механизм сокетов и протокол TCP/IP для реализации драйверов нижнего уровня. При этом библиотека берет на себя все преобразования типов, работу с внутренними очередями и организацию коллективных операций. Но, несмотря на то что протокол сетевого уровня поддерживает передачу сообщений "один - многие", на транспортном уровне такая поддержка отсутствует. В результате для реализации широковещательной рассылки существующие общедоступные реализации MPI используют цикл одиночных посылок. Если коммуникатор включает в себя более двух процессов, время выполнения широковещательных операций возрастает пропорционально числу процессов.

Чтобы исправить этот недостаток, следует воспользоваться одним из экспериментальных протоколов транспортного уровня, поддерживающих передачу данных от одного узла группе. Зачастую дело тормозит отсутствие стандарта. Здесь могут помочь протоколы MTP-2 (Multicast Transport Protocol), RMP (Reliable Multicast Transport), RMTP (Reliable Multicast Transport Protocol). Отметим, что в идеале передача широковещательного сообщения будет занимать столько же времени, сколько и пересылка сообщения между двумя процессами.

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


>>к содержанию>>

2.2.3 СРЕДСТВА ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ.

 

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

Часто в сетях отдельные компьютеры неравноценны, и имеет смысл нагружать их по-разному, однако даже простейшая программа, учитывающая балансировку нагрузки, - если кодировать ее, используя лишь средства MPI, - становится необъятной, и отладка ее мало кому окажется по силам. Так, матрицы в пакете SсаLAPACK, независимо от решаемой задачи и мощностей вычислительных элементов, всегда распределяются по процессорам равномерно. В результате, при наличии хотя бы одного слабого компьютера в сети, вычисления затягиваются - все ждут отстающего. Динамическая балансировка нагрузки, практически бесплатно получающаяся на SMP-компьютерах, в распределенных системах чрезвычайно трудна, и даже простое распределение данных в соответствии с мощностями узлов и последующие пересылки кодируются весьма непросто.

Информация о работе Кластерные системы на основе ОС Linux. Построение учебного кластера