Logo GenDocs.ru

Поиск по сайту:  


Загрузка...

Кластеры на Linux - файл 1.docx


Кластеры на Linux
скачать (249.3 kb.)

Доступные файлы (1):

1.docx250kb.30.11.2011 13:00скачать

содержание
Загрузка...

1.docx

Реклама MarketGid:
Загрузка...
Федеральное агентство по образованию

Государственное образовательное учреждение

Высшего профессионального образования

Тульский государственный университет

Кафедра АТМ

Контрольно-курсовая работа

«Кластерные системы Linux»

по курсу: Операционные системы

Вариант № 18


Выполнил: ст. гр. № 220461

Чибисов А.А.________

Проверила: Сулимова В. В.________

Тула 2009



Содержание

 3

Введение 3

2.1. Архитектура SMP 5

2.2 Архитектура MPP 6

 7

2.3 Появление кластерных систем и их преимущества перед традиционными архитектурами вычислительных сетей 7

 12

3.3 Концепция кластерных систем 12

 13

3.3.1 Разделения кластеров по распределению программно-аппаратных ресурсов 13

 13

3.3.2 Разделение на High Avalibility и High Performance системы 13

 14

3.3 Общие принципы построения кластерной архитектуры 14

4.1 Обеспечение параллельных вычислений операционной системой Linux 16

4.2 Выбор Linux для кластерных систем 24

 27

4.3. Примеры LINUX – кластеров 27

4.3.1 Проект BEOWULF 27

 29

4.3.2 Проект Mosix 29

 31

4.3.3 Проект Avalon 31

4.3.4 Современный Linux-кластер IBM Roadrunner 31

 36

Заключение 36

 38

Список использованных источников 38


^



Введение


Кластерные системы различных классов, работающие на Linux, используются в различных образовательных и научных учреждениях, проводящих сложные вычисления, а также в коммерческих компаниях для выполнения ресурсоемких задач. К примеру, кластеры на Linux есть в Центре суперкомпьютерных вычислений Российской академии наук, Московском физико-техническом институте, ведущих научно-исследовательских институтах России и мира.

В проводимых в последнее время исследованиях Linux показывает высочайшие результаты горизонтальной масштабируемости, т.е. в увеличении вычислительной мощности за счет кластеризации серверов. Кроме того, Linux постоянно совершенствуется в области вертикальной масштабируемости (увеличения мощности отдельного сервера) и в настоящее время поддерживает 32-процессорные системы. IBM использует и расширяет возможности Linux и в своих проектах по построению суперкомпьютеров.

Подразделение IBM Research недавно закончила работу над своим суперкластером RoadRunner. Его производительность привысила 1 петафлоп и был приодален барьер в 1 квадрилион операций в секунду! Благодаря таким высоким возможностям Linux обеспечивает тот уровень гибкости, который необходим компаниям для удовлетворения своих растущих требований сегодня и в перспективе.

Кластерные системы получили высокую степень развития, это демонстрирует тот факт, что на сегодняшний день в списке 500 самых мощных компьютеров мира из 20 первых мест 11 занимают кластерные системы. Министерство обороны США использует кластер из 256 серверов IBM x330 для повышения точности прогнозов погоды. Энергетическая компания Royal Dutch Shell добилась производительности, измеряемой в терафлопах, объединив в кластер с помощью Linux свыше одной тысячи серверов xSeries™. Как отметил эксперт по суперкомпьютерам Фрэнк Джилфивер (Frank Gilfeather) из университета Нью-Мексико: «Кластеры Linux будут определять будущее суперкомпьютеров, и компании должны понять, каким образом эта технология может им помочь».


  1. 

  2. Параллельные вычисления, как предпосылки создания вычислительных систем

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

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

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

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

  1. 

  2. Обзор основных многопроцессорных вычислительных систем
^

2.1. Архитектура SMP


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

SMP (symmetric multiprocessing) – симметричная многопроцессорная архитектура. Особенность таких систем является то, что она состоит из массива общей памяти и нескольких однородных процессоров.

Рисунок 1 - Схематический вид SMP-архитектуры

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

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

Главные недостатками SMP-систем:

  • необходимость организации канала память-процессоры, который требует высокую пропускную способность;

  • низкая масштабируемость систем с общей памятью;

  • относительная дороговизна.

Из преимуществ SMP-систем можно назвать:

  • простота и универсальность для программирования, так как SMP не накладывает ограничений на модель программирования, следствием 

  • этого стало существование эффективных средств автоматического распараллеливания;

  • SMP-системы просты в эксплуатации.
^

2.2 Архитектура MPP


MPP(massive parallel processing) – массивно-параллельная архитектура с разделенной памятью. MMP строится из однородных вычислительных узлов, т.к. память физически разделена, при этом система состоит из отдельных модулей, которые содержат один или несколько процессоров, локальную операционную память (ОП), коммуникационные процессоры (рутеры) или сетевые адаптеры, жесткие диски и/или другие устройства I/O.

Рисунок 2 - Схематический вид MPP-архитектуры

К системе возможно добавление специальных устройства I/O и управляющих узлов. Все узлы связаны коммуникационной средой, построенной, например, на основе коммутатора или высокоскоростной сети.

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

Из недостатков MPP можно выделить:

  • отсутствие общей памяти, при этом скорость межпроцессорного обмена заметно снижается. Это также требует специальной техники программирования для реализации обмена сообщениями между процессорами;

  • процессоры используют ограниченный объем локальной памяти;

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



^



2.3 Появление кластерных систем и их преимущества перед традиционными архитектурами вычислительных сетей


Традиционные архитектуры SMP, MPP, а также векторные параллельные системы развиваются достаточно быстрыми темпами. Растет производительность, повышается отказоустойчивость и надежность. Но у всех этих перечисленных архитектур есть один существенный недостаток – цена на созданные системы, часто высокая и недоступная для широкого круга пользователей таких систем - научно-исследовательских, военных и образовательных организаций. Усложнения программных и аппаратных составляющих системы, которые требуются для обеспечения роста темпов производительности, и привели к их высокой стоимости. Кроме того постоянно возрастает потребность в вычислительных ресурсах во многих отраслях практической деятельности, для ее обеспечения не хватает производительности и ресурсов суперкомпьютерных систем, построенных на традиционных архитектурах .

Создание вычислительных систем на основе кластеров задумывалось с целью понижения стоимости программных и аппаратных средств за счет использования в своей архитектуре относительно дешевых технологий, таких как Linux, Ethernet, персональных компьютеров (PC), которые к тому времени стали широко распространятся. Более того решились проблемы нехватки вычислительных ресурсов .

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

Привлекательной чертой кластерных технологий является то, что они позволяют для достижения необходимой производительности объединять в единые вычислительные системы компьютеры самого разного типа, начиная от персональных компьютеров и заканчивая мощными суперкомпьютерами. Широкое распространение кластерные технологии получили как средство создания систем суперкомпьютерного класса из составных частей массового производства, что значительно удешевляет стоимость вычислительной системы. В частности, одним из первых был реализован проект COCOA, в котором на базе 25 двухпроцессорных персональных компьютеров общей стоимостью порядка $100000 была создана система с производительностью, эквивалентной 48-процессорному Cray T3D стоимостью несколько миллионов долларов США.

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

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

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

Преимущества кластера наряду с обычными компьютерами, работающими независимо, очевидны. Благодаря специально разработанным диспетчерским системам пакетной обработки данных, можно распределять задачу на все узлы кластера и использовать для решения задачи ресурсы всей системы. От правильного выбора системного программного обеспечения, его установки и конфигурации зависит как общая производительность кластерной системы, так и её надёжность, удобство пользовательского интерфейса, который также в немалой степени косвенно определяет эффективность выполнения вычислений. Отдельные вычислительные узлы кластера работают под собственной локальной копией операционной системы, в качестве которой в большинстве случаев выбирают один из дистрибутивов ОС Linux, Windows, NetWare, Solaris или UNIX. Для централизованного управления кластерными системами как единым вычислительным массивом, в данный момент используются специализированные системы управления кластерами. Такая система позволяет осуществлять централизованное управление и мониторинг кластера, осуществлять перераспределение потоков задач, выделение под них ресурсов.

  1. ^ Основы кластерных систем

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

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

^ 3.1. Виды кластеров

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

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

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

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

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

^ 3.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.


^



3.3 Концепция кластерных систем


Рисунок 1 - Кластерная система

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

Первые кластеры компании Digital были построены на машинах VAX. Эти машины уже не производятся, но все еще работают на площадках, где были установлены много лет назад. И наверное самое важное то, что общие принципы, заложенные при их проектировании, остаются основой при построении кластерных систем и сегодня.

К общим требованиям, предъявляемым к кластерным системам, относятся:

  1. Высокая готовность

  2. Высокое быстродействие

  3. Масштабирование

  4. Общий доступ к ресурса

  5. Удобство обслуживания

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

^



3.3.1 Разделения кластеров по распределению программно-аппаратных ресурсов


В общем случае кластер функционирует как мультипроцессорная система, поэтому, важно понимать классификацию таких систем в рамках распределения программно-аппаратных ресурсов. Рассмотрим её на примере рисунков:

Рисунок 2 - Тесно связанная мультипроцессорная система

Рисунок 3 - Умеренно связанная мультипроцессорная система

Рисунок 4. Слабо связанная мультипроцессорная система
^



3.3.2 Разделение на High Avalibility и High Performance системы


В функциональной классификации кластеры можно разделить на "Высокоскоростные" (High Performance, HP), "Системы Высокой Готовности" (High Availability, HA), а также "Смешанные Системы".

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

  1. обработка изображений: рендеринг, распознавание образов

  2. научные исследования: физика, биоинформатика, биохимия, биофизика

  3. промышленность (геоинформационные задачи, математическое моделирование)

Рисунок 5 - Высокоскоростной кластер

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

  1. биллинговые системы

  2. банковские операции

  3. электронная коммерция

  4. управление предприятием, и т.п....

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

функциональности системы. Такую характеристику как правило называют – NSPF (No Single Point of Failure, - англ., отсутствие единой точки отказа).

Рисунок 6. Кластерная система высокой готовности с отсутствием точек отказов

^ Смешанные системы объединяют в себе особенности как первых, так и вторых. Позиционируя их, следует отметить, что кластер, который обладает параметрами как High Performance, так и High Availability, обязательно проиграет в быстродействии системе, ориентированной на высокоскоростные вычисления, и в возможном времени простоя системе, ориентированной на работу в режиме высокой готовности.

Рисунок 7 - Высокоскоростной отказоустойчивый кластер


^



3.3 Общие принципы построения кластерной архитектуры


Как уже было сказано раньше вычислительный кластер — это совокупность компьютеров, объединенных в рамках некоторой сети для решения одной задачи (рис.8), которая для пользователя представляется в качестве единого ресурса. Такую концепцию кластера впервые предложила и реализовала в начале 80-х корпорация Digital Equipment, которая и по сей день развивает эту технологию.

Рисунок 8 – Вычислительный кластер

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

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



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

Из определения архитектуры кластерных систем следует, что она включает в себя очень широкий спектр систем. Рассматривая крайние точки, кластером можно считать как пару ПК, связанных локальной 10-мегабитной сетью Ethernet, так и вычислительную систему, создаваемую в рамках проекта Cplant в Национальной лаборатории Sandia: 1400 рабочих станций на базе процессоров Alpha, связанных высокоскоростной сетью Myrinet.

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



  1. 

  2. Linux как ОС для кластерных систем
^

4.1 Обеспечение параллельных вычислений операционной системой Linux


С точки зрения ядра операционной системы поддержка кластеров и распределенных систем заключается в эффективной работе с сетью, что выражается во взаимодействии с сетевым процессором. Собственно, сейчас практически любой компьютер является многопроцессорным, кроме центрального процессора есть еще микропроцессоры видеоплат, дисков и сетевых плат. Каждый из процессоров работает со своей собственной операционной системой, которая должна корректно взаимодействовать с ядром Linux. Так, в первом драйвере для платы Gigabit Ethernet каждый полученный по сети пакет вызывал прерывание центрального процессора и, в результате, могла возникнуть ситуация, когда прерываний генерировалось так много, что процессор был полностью загружен их обработкой. В следующих версиях эта проблема была решена путем компоновки пакетов в большие блоки. Тем не менее, разработчикам программного обеспечения постоянно приходится помнить о «многопроцессорности» даже однопроцессорного компьютера.

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



Рисунок 9 – Системная архитектура кластера высокой надежности

Системная архитектура, приведенная на рис.9, не имеет внутренних одиночных точек отказа. Вне зависимости от того, что выйдет из строя в кластере, система продолжит функционировать. И хотя отказ репликационного канала приведет к невозможности синхронизации данных, это не вызовет отказа всего кластера, значит это не одиночная точка отказа. (Здесь мы рассматриваем реплицирующую систему, однако часто используются и разделяемые диски. Плюсы и минусы каждого варианта будут рассмотрены ниже). Как можно понять из схемы, даже физическое уничтожение первичной системы не повлияет на работоспособность кластера и он продолжит функционировать.

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

В некоторых решениях представляемых на IT рынке, в отличие от этой технологии, применяются разделяемые диски. Это обычно очень дорогие дисковые массивы RAID с несколькими подключениями, с двойными контроллеры RAID (например, IBM ServeRAID), разделяемые диски с интерфейсом fiber-channel, высокоуровневые хранилища класса IBM 

Enterprise Storage Server или другие EMC-решения высокого уровня. Эти системы сравнительно дороги (начиная от 50.000$ до миллионов долларов).

Но лишь в наиболее дорогих решениях нет внутренних одиночных точек отказа.

Текущая, почти стандартная для Linux файловая система Extended-2 (ext2) вполне стабильна и работоспособна на одиночной машине. Однако в случае отказа узла файловая система не будет размонтирована корректно, что приведет к занимающей существенное время проверке файловой системы на узле, принимающим ее. Кроме того, нет гарантии, что автоматическая проверка и исправление файловой системы найдет и устранит все ошибки.

Все это плохо отражается на системы высокой доступности, когда пользователь ожидает, что принимающий узел запуститься через несколько секунд (в крайнем случае - минут) без ошибок и без вмешательства оператора. Таким образом, для обеспечения нормального функционирования системы высокой доступности необходима файловая система, работающая по механизму транзакций, основанная на журнализации (Log-structured file system).

Программное обеспечение Кластера Высокой Надежности следит за состоянием серверов в кластере, обычно используя механизм сердцебиения. Этот механизм немного напоминает своей работой процесс Linux init, но для всего кластера. Он отвечает за запуск и останов сервисов, таким образом, что каждый сервис в один момент времени выполняется где-то в кластере.

Механизм сердцебиения использует скрипты аналогично стандартному init для запуска и останова сервисов. Управление ресурсами происходит на основе групп. Ресурсы одной группы всегда выполнятся на одной и той же системе в кластере. В дополнение к обычным скриптам сервисов (как nfsserver и dhcpd), механизм сердцебиения управляет IP адресами с помощью специальных скриптов. Группы ресурсов задаются в конфигурационных файлах.

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

Следует отметить, что на кластере нужно исполнять приложения, которые уже написаны с учетом параллельных вычислений и «знают», что 

разные части программы будут выполняться на разных узлах кластера. Основные стандартные компоненты современных многоуровневых систем, как правило, соответствуют этим требованиям. Так сервер Apache каждый запрос отрабатывает отдельным потоком, и может быть эффективно использован как на одной SMP-машине, так и на сбалансированном по нагрузке кластере. Серверы приложений и баз данных, такие как WebSphere, DB2, Oracle, MySQL, Postgress, также могут быть сконфигурированы с учетом многопроцессорности (а иногда — и многокомпьютерности), что позволяет запускать их на кластере и балансировать нагрузки на каждый узел.

Авторами книги «Параллельные вычисления» Валентином и Владимиром Воеводиными была проведена большая работа по изучению существующих программ, написанных на языке Фортран для решения задач минимизации, линейной алгебры и математической физики. На основе этого исследования ими была разработана теория изучения и выделения параллельной структуры программ для определенного ими линейного класса алгоритмов. Оказалось, что среди 12 тыс. строк, изученных ими алгоритмов, к линейному классу можно свести около 90-95% текстов. Таким образом, постепенно появляются теоретические основы для выделения параллельной структуры алгоритмов с последующей их реализацией в виде параллельных программ. В то же время часто в бизнес-приложениях решаются комбинаторные задачи, которые связаны с изучением небольшой выборки из достаточно большого массива информации.

Собственно, многие ресурсоемкие задачи представляют собой достаточно короткие фрагменты кода, обрабатывающие небольшую выборку данных из большого массива. Такие фрагменты можно выносить на удаленные компьютеры в отдельные потоки и только выдавать им новые порции данных, получать и обрабатывать результат. Именно так и устроено большинство распределенных вычислительных систем, например, seti@home. В них есть центральный сервер, раздающий задания множеству клиентов, получающий и обрабатывающий результаты. Клиенты в большинстве своем работают только в фоновом режиме при минимальной загрузке центрального процессора. Хотя все приложения, которые требуют распределенных вычислений, индивидуальны, имеется базовый набор компонентов, позволяющих упростить создание необходимой инфраструктуры. В качестве примера можно привести свободно распространяемый пакет Globus Toolkit, который позволяет разрабатывать кроссплатформные распределенные системы. Таким образом, для Linux как 

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

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

Поговорим более подробно про коммуникационную библиотеку PVM.

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

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

Команду conf показывает конфигурации кластера. Например можно увидеть:

Листинг 1.

pvm> conf

conf

1 host, 1 data format

^ HOST DTID ARCH SPEED DSIG

dhsilabs 40000 LINUX 1000 0x00408841

Из листинга 1 видно, что сейчас кластер состоит из одной машины – центрального узла, который работает под управлением Linux. Можно добавить в кластер еще два узла. Добавление узлов осуществляется с помощью команды:

add hostname

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

$PVM_ROOT/bin/$PVM_ARCH/. Можно запустить самую простую программу – hello. Прежде чем запустить ее, нужно сделать несколько замечаний:

Вы не можете запускать процессы прямо из консоли pvm. Консоль служит лишь для управления кластером.

Запуск задачи осуществляется обычным способом – из консоли операционной системы. Но «распараллеливаться» будут лишь те процессы, которые поддерживают pvm. С помощью команды spawn также можно породить задачу (см. ниже)

При запуске hello вы должны увидеть сообщение

hello, world from hostname,

где hostname – это узел кластера. Другими словами все узлы кластера должны поприветствовать вас.

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



Таблица 1.

add hostname

Команда

Описание

add hostname

Добавляет узел в кластер

alias

Определяет псевдоним для команды

conf

Выводит текущую конфигурацию кластера

delete hostname

Удаляет узел из кластера

halt

Останавливает кластер (точнее завершает процесс pvmd – узлы при этом не выключаются, а продолжают работать)

help [command]

Выводит список всех команд или краткую справку по указанной команде

id

Выводит идентификатор процесса pvm (консоли)

jobs

Выводит список выполняемых задач

kill TID (task id)

«Убивает» задачу

mstat host, tid

Показывает состояние узлов

ps -a

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

pstat task-tid

Показывает состояние задачи

reset

Сброс – завершаются все задачи

setenv

Отображает или устанавливает переменные окружения

sig signum task

Посылает сигнал задаче

spawn [opt] a.out

Порождает задачу.

trace

Устанавливает/отображает маску трассировки событий. Более подробное объяснение вы найдете в документации.

unalias

Удаляет ранее созданный псевдоним команды

version

Отображает версию библиотеки libpvm



В таблице 1 описаны не все команды консоли pvm, обо всех остальных можно прочитать, введя команду man pvm.

Одна из самых интересных команд – spawn. Данная команда порождает задачу. С ее помощью можно указать некоторые параметры задачи, например, узел, на котором она должна выполняться.

spawn [opt] a.out

a.out – любой исполнимый бинарный файл – программа, которая даже не поддерживает библиотеку libpvm. Для таких программ также можно указать, на какой машине она будет выполняться. В среде Windows параметр a.out – это exe или com – файл.



Можно указать такие параметры команды spawn:

Таблица 2.

Параметр

Описание

-(count)

Число задач. По умолчанию - 1.

-(host)

Определяет узел, на котором будет выполняться задача

-(ARCH)

Задает архитектуру узлов, на которых будет выполняться задача.

-?

Включает отладку (debugging)

->

Перенаправляет стандартный вывод задачи на консоль

->file (*)

Перенаправляет стандартный вывод задачи в файл

->>file (*)

Дописывает стандартный вывод задачи в файл


^

4.2 Выбор Linux для кластерных систем


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

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

Основой кластера является не операционная система, а коммуникационная среда (PVM, MPI), обеспечивающая возможность частям параллельной программы, выполняющимся на разных компьютерах, эффективно взаимодействовать между собой. Рассмотренные ранее средства для построения кластера (PVM, MPI) имеют реализации как для операционных систем семейства UNIX (Linux, FreeBSD и т.п.), так и для систем фирмы Майкрософт. Поэтому, в принципе кластер может работать под Windows, причем трудозатраты на установку коммуникационной среды будут такими же как и в варианте с UNIX, то есть небольшими. Основная трудность заключается в том, что под Winodws администраторам сложнее научиться параллельные программы.



Следует заметить, что подавляющее большинство более-менее серьезных кластеров в мире работает все же в среде UNIX. Важно так же заметить что поскольку библиотеки для параллельных вычислений MPICH/MPI являются кроссплатформенными, то выбор операционной системы (Windows vs Linux) не важен. Однако следует и учесть тот факт, что Linux является заметно менее ресурсоемкой системой. Например при использовании PelicanHPC GNU Linux система занимает в оперативной памяти не более 40Мб! Вся остальная память доступна параллельной программе. Это очень важный фактор в том случае, когда кластер используется с целью моделирования процессов на как можно более подробной сетке.

Специалисты также отмечают один немаловажный аспект, проявляющийся при попытке перенести свою работу из Windows в Linux. Имеются в виду психологический и административный факторы. Человек, приходящий в мир Linux, испытывает чувство растерянности и неуверенности в том, что он сможет найти в новой системе привычные для него инструменты. Но давно прошли те времена, когда работа в UNIX была уделом компьютерных гуру, разговаривающих на непонятном языке и пишущих программы в машинных кодах. Современный уровень развития Linux позволяет чувствовать себя пользователю не менее комфортно, чем в Windows.

В настоящее время основной операционной системой, используемой во всем мире, является операционная система Windows. При всех достоинствах системы ей присущи некоторые недостатки, существенно затрудняющие ее использование в кластерных системах. К таким недостаткам можно отнести:

  1. малую защищенность системы от неквалифицированных действий пользователей;

  2. подверженность системы различного рода "взломам" при сетевом использовании и подверженность вирусам;

  3. неустойчивость работы системы, проявляющаяся в зависаниях и потере информации;

  4. большая стоимость лицензий на использование систем;

  5. закрытость операционной системы, затрудняющая написание программ в ее среде;

  6. большие требования к возможностям компьютера (память, быстродействие);

  7. частая смена версий ОС (примерно каждые два года).



Использование Linux в качестве базовой операционной системы для построения кластера позволит:

  1. более эффективно использовать имеющиеся вычислительные средства;

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

  3. решить проблемы с необходимостью приобретения лицензий на используемое ПО;

  4. сделать работу компьютеров в сети более надежной и устойчивой;

.
^



4.3. Примеры LINUX – кластеров

4.3.1 Проект BEOWULF


Одним из проектов развития параллельных распределенных вычислений является Beowulf, целью которого является применение технологии распределенных вычислений на сетях кластеров широко распространенных персональных ЭВМ. Основанием для такого проекта являлась широкое распростанение ПЭВМ, их дешивизна и увеличившаяся в достаточной степени производительность. В результате выполнения этого проекта на различных задачах была продемонстрирована пиковая производительность кластеров из 16 ПЭВМ доходящая до 1 Гоп/сек и суммарная емкость дискового простанства существенно превышающая возможности сравнимых по стоимости единичных ЭВМ.

Проект возник в научно-космическом центре NASA - Goddard Space Flight Center (GSFC), точнее в созданном на его основе CESDIS (Center of Excellence in Space Data and Information Sciences).

Проект Beowulf начался летом 1994 года сборкой в GSFC 16-процессорного кластера (на процессорах 486DX4/100MHz, 16MB памяти и 3 сетевых адаптера на каждом узле, 3 "параллельных" Ethernet-кабеля по 10Mbit). Данный кластер, который и был назван "Beowulf", создавался как вычислительный ресурс проекта Earth and Space Sciences Project (ESS).

Beowulf это мультикомпьютерная архитектура, которая предназначена для проведения параллельных вычислений. Такая система обычно состоит из одного server node (сервера) и нескольких (в самом простом случае - одного) client nodes (клиента), которые соединены между собой сетью Ethernet. Параллельная структура Beowulf строится из обычных общеупотребимых аппаратных средств, таких как персональные компьютеры класса IBM PC, стандартные Ethernet-адаптеры и маршрутизаторы. Комплекс работает под операционной системой Linux. Отказ от использования каких-либо специальных hardware-компонентов делает архитектуру Beowulf легко воспроизводимой и имеющей уникальное соотношение быстродействие/стоимость В число программных компонентов Beowulf кроме ОС Linux входят так же Parallel Virtual Machine (PVM) и Message Passing Interface (MPI). Сервер кластера управляет работой всего кластера и обслуживает файловые системы клиентских машин. Машина-сервер выполняет так же роль консоли кластера и моста в остальной intranet/internet. Крупные системы Beowulf могут иметь больше одного сервера и/или иметь несколько узловых машин (клиентов), посвященных исключительно 

выполнению отдельных задач, например консоль кластера или станция мониторинга системы. В болшинстве случаев клиенты кластера - очень тупые и несамостоятельные машины. И чем тупее они, тем лучше для кластера. Клиенты конфигурируются и управляются сервером кластера и делают только то, что он им задает. В случае бездисковой конфигурации клиенты не знают даже их IP-адреса или имена до тех пор, пока пока их не установит сервер. Одно из главных отличий между Beowulf и Cluster of Workstations (COW) является то, что Beowulf ведет себя больше как одиночная машина нежели чем как много рабочих станций. В большинстве случаев клиенты не имеют мониторов и клавиатур и доступны только через remote login или, возможно, через serial terminal. Другими словами, клиентские машины кластера выступают в роли просто дополнительных процессоров и модулей памяти.

Beowulf это не специальный пакет программ, новая сетевая топология или новая версия ядра. Beowulf - это технология кластеризации Linux-машин, технология формирования виртуального параллельного суперкомпьютера. Хотя имеются много программных пакетов, таких как kernel modifications, PVM- и MPI-библиотеки, и средства конфигурации, делающие архитектуру Beowulf быстрее, легче в настройке, и намного более годным к употреблению, Вы можете построить машину класса Beowulf, используя только стандартную дистрибуцию Linux без каких-либо дополнительных пакетов программ. Если у Вас есть два сетевых компьютера с расшаренным через NFS файловой системой /home, и вы доверяете этим компьютерам запускать друг у друга remote shells (rsh), тогда можно сказать, что у Вас есть простейшая двухнодовая Beowulf машина.

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

^



4.3.2 Проект Mosix


Mosix - это пакет кластерообразующих программ, предназначенный для расширения ядра Linux . Расширенное ядро позволяет создавать кластеры любых размеров на базе семейства x86, Pentium процессоров. Для запуска приложений в Mosix кластере не требуется их модификация или перекомпиляция , а также не нужны дополнительные библиотеки. Ядром Mosix управляют адаптивные алгоритмы распределения ресурсов, эти алгоритмы используют приоритетное перемещение процессов, чтобы назначать и переназначать процессы среди узлов, выбирая наилучший среди доступных узлов, по признаку наименьшей занятости. Проще говоря, Mosix распределяет процессы на разные узлы кластера, при этом процесс мигрирует на наименее занятый узел.

Mosix начинался на компьютерах PDP-11 в 1977/79 годах и назывался:"UNIX with Satellite Processors" в качестве ОС использовалась Bell Lab's Unix Level 6 В 1981-83/84 годах вышли две версии под названием MOS на PDP-11 и CADMUS/PCS MC68K под обновленной ОС Bell Lab's Unix 7 с BSD 4.1. В 1987/88 вышел NSMOS на NS32332 и ОС AT&T Unix system V release 2 Также в 1988 году появилась версия под VAX, для которой впервые было использовано название MOSIX, использовалась таже ОС что и для NSMOS Первая реализация на семействе X86/Pentium появилась в 1992/93 под BSD/OS. Новая реинкарнация на X86/Pentium вышла уже на LINUX в 1998/99.

Программный пакет openMosix позволяет превратить в кластер компьютеры под управлением GNU/Linux, объединённые в сеть. Такой кластер позволит автоматически балансировать нагрузку на узлах, при этом новые узлы могут присоединяться или покидать кластер без прерывания его работы. Нагрузка на узлы распределяется исходя из скорости соединения и мощностей процессоров.

Поскольку openMosix является частью ядра и полностью совместим с Linux, то и все пользовательские программы, файлы и прочие ресурсы будут работать также, как и раньше, без каких-либо изменений. Простой пользователь даже не заметит разницы между Linux и openMosix системой. В целом картину можно представить, как будто весь кластер работает как одна (быстрая) GNU/Linux система.

ОpenMosix представляет собой патч для ядра Linux, который, тем не менее, обеспечивает полную совместимость с платформой IA32. Благодаря внутреннему механизму балансировки нагрузки процессы могут мигрировать 

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

Такой механизм прозрачной миграции процессов позволяет представить кластер как одну большую SMP-систему с множеством процессоров на доступных узлах кластера (конечно, следует учитывать и количество процессоров в двух и четырёх процессорных системах). К тому же openMosix предоставляет оптимизированную файловую систему (oMFS) для HPC-приложений, которая, в отличие от NFS, поддерживает кэширование, отметки о времени и ссылки.

Миграция процессов. ОpenMosix позволяет запустить процесс на одной машине, а потом обнаружить, что фактически он выполняется на другой машине кластера. Каждый процесс имеет свой собственный UHN, на котором он был создан.

Миграция означает, что процесс разделяется на две части: пользовательскую и системную. Пользовательская часть будет перемещена на другой узел, в то время как системная останется на UHN. Системная часть иногда называется представительским процессом: такой процесс отвечает за разрешение большинства системных вызовов. Задачей же openMosix является поддержка связи между этими двумя процессами.

Файловая система openMosix (oMFS).OMFS является частью openMosix и позволяет обеспечить доступ к удалённым файловым системам кластера точно также, как и к любым другим смонтированным файловым системам. Таким образом, можно, к примеру, файловые системы всех узлов смонтировать в /mfs, и в результате получится, что содержимое /home третьего узла доступно с любой машины в каталоге /mfs/3/home. И Mosix, и openMosix поддерживают кластерную файловую систему MFS с опцией DFSA (Direct File System Access), что позволяет получить доступ ко всем локальным и удалённым файловым системам узлов в Mosix или openMosix кластере.
^



4.3.3 Проект Avalon


В 1998 году в Лос-аламосской национальной лаборатории астрофизик Michael Warren и другие ученые из группы теоретической астрофизики построили суперкомпьютер Avalon, который представляет из себя Linux-кластер на базе процессоров DEC Alpha/533MHz. Avalon первоначально состоял из 68 процессоров, затем был расширен до 140. В каждом узле установлено 256MB оперативной памяти, EIDE-жесткий диск на 3.2GB, сетевой адаптер от Kingston (общая стоимость узла - $1700). Узлы соединены с помощью 4-х 36-портовых коммутаторов Fast Ethernet и расположенного "в центре" 12-портового коммутатора Gigabit Ethernet от 3Com.

Общая стоимость Avalon - $313 тыс., а его производительность по LINPACK (47.7 GFLOPS) позволила ему занять 114 место в 12-й редакции списка Top500 (рядом с 152-процессорной системой IBM SP2). 70-процессорная конфигурация Avalon по многим тестам показала такую же производительность, как 64-процессорная система SGI Origin2000/195MHz стоимость которой превышает $1 млн.

В настоящее время Avalon активно используется в астрофизических, молекулярных и других научных вычислениях. На конференции SC'98 создатели Avalon представили доклад, озаглавленный "Avalon: An Alpha/Linux Cluster Achieves 10 Gflops for $150k" и заслужили премию по показателю цена/производительность ("1998 Gordon Bell Price/Performance Prize").
^

4.3.4 Современный Linux-кластер IBM Roadrunner


Право называться самым быстрым компьютером в мире получил IBM Roadrunner - суперкомпьютер, установленный в Национальной Лаборатории Лос Аламоса (США). Производительность Roadrunner достигла 1,026 петафлопс (пиковая - 1,376 петафлопс), что позволяет называть его первым компьютером, преодолевшим барьер в 1 квадриллион операций с плавающей точкой в секунду Также разработчики называют его первым гибридным суперкомпьютером, в котором согласованно работают процессоры Cell BE и AMD Opteron.

Roadrunner состоит из двухсот семидесяти восьми шкафов IBM BladeCenter (каждый размером с холодильник), "напичканных" 6562 двухъядерными чипами AMD Opteron, 12240 процессорами IBM PowerXCell 8i и модулями памяти с общей емкостью 98 терабайт. Для объединения всех компонентов в единую систему было использовано около десяти тысяч соединений Infiniband и Gigabit Ethernet, что потребовало более 88 

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

При построении суперкомпьютера IBM использовала конфигурационную схему, которая в качестве структурного компонента рассматривает объединенные между собой два blade-сервера IBM QS22 (Cell) и один blade-сервер IBM LS21 (Opteron). Всего в системе насчитывается 3060 структур типа "tri-blade", каждая из которых обеспечивает производительность в 400 гигафлопс. В основных системных операциях задействованы процессоры Opteron, а за математические расчеты и операции с интенсивным использованием ЦП отвечают чипы Cell. Программная часть разработана компанией Red Hat на базе операционной системы Linux. Стоимость Roadrunner составила около $100 млн долларов.

  1. 

  2. Построение простого кластера на примере linux-проекта Beowulf

1) Узлы кластера.

Подходящим выбором являются системы на базе процессоров Сore 2 Duo, или SMP-сервера с небольшим числом процессоров (4- 8). По некоторым причинам оптимальным считается построение кластеров на базе двухпроцессорных систем.Стоит установить на каждый узел не менее 2048MB оперативной памяти .

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

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

Возможна организация кластеров на базе уже существующих сетей рабочих станций, т.е. рабочие станции пользователей могут использоваться в качестве узлов кластера ночью и в выходные дни. Системы такого типа иногда называют COW (Cluster of Workstations).

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

2) Сеть.

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



3) Операционная система.

Следует установить бесплатно распространяемую OC Linux с усовершенствованным ядром Дистрибутивы Linux распространяются через Интернет или на CD-ROM. Рекомендуемый дистрибутив - RedHat Linux Существует также русифицированный дистрибутив - KSI Linux. Также же отлажена техника загрузки Linux через сеть, что очень полезно для бездисковых конфигураций. Необходимо найти и правильно настроить наиболее подходящие к установленным адаптерам драйвера.

^ 4) Компиляторы.

Так, для процессоров Intel лучшим выбором будет разработанные Intel компиляторы с языков C/C++/Fortran95 (доступны бесплатно для некоммерческого использования в версии Linux), либо компиляторы от Portland Group (С/С++/Fortran90/HPF). Если же вам по каким-то причинам нет возможности установить у себя эти компиляторы, то вы можете использовать свободно распространяемые компиляторы серии GCC (Gnu Compiller Collection), которые поддерживают большинство современных аппаратных и программных платформ и поставляются практически со всеми дистрибутивами Linux и Unix.

^ 5) Коммуникационные библиотеки.

Наиболее распространенным интерфейсом параллельного программирования в модели передачи сообщений является MPI. Хотя использование PVM ничем не хуже. Рекомендуемая бесплатная реализация MPI - пакет MPICH, разработанный в Аргоннской Национальной Лаборатории. Для кластеров на базе коммутатора Myrinet разработана система HPVM, куда также входит реализация MPI.

Для эффективной организации параллелизма внутри одной SMP - системы возможны два варианта:

Для каждого процессора в SMP-машине порождается отдельный MPI-процесс. MPI-процессы внутри этой системы обмениваются сообщениями через разделяемую память (необходимо настроить MPICH соответствующим образом).

На каждой машине запускается только один MPI-процесс. Внутри каждого MPI-процесса производится распараллеливание в модели "общей памяти", например с помощью директив OpenMP.



После установки реализации MPI имеет смысл протестировать реальную производительность сетевых пересылок.

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


^



Заключение


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

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

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



ОS Linux является, доминирующей в области построения кластерных систем, так она надежна и быстро действенна. Кластеры с использованием OS Linux начали развиваться больше 15 лет назад, совершив революцию в вычислительных системах. Они стали доступны задолго до появления Wolfрack, используемого в Windows NT,

В ОС Linux имеется все необходимое для построения кластеров, создана среда в которой можно эффективно добиться написания качественных параллельных программ.

В настоящее время не ожидается появление ОС, способной вытеснить Linux, как основу построения и управления кластерными системами.
^



Список использованных источников


  1. Курячий Г.В., Маслинский К.А. Операционная система Linux.Курс лекций. Учебное пособие. ИНТУИТ, Москва, 2005

  2. Цирюлик О., Горошко Е. QNX/UNIX Анатомия параллелизма. СПБ-МОСКВА, 2006

  3. ХьюзК.,Хьюз Т. Параллельное и распределенное программирование с использованием С++

  4. http://rsusu1.rnd.runnet.ru/tutor/method/m1/page06.html

  5. http://www.ci.ru/inform10_99/p_08_9.htm

  6. http://www.citforum.ru/operating_systems/linux/linux_parall/

  7. http://vidrom.narod.ru/

  8. http://www.ixbt.com/cpu/clustering.shtml

  9. http://cluster.linux-ekb.info/os.php

  10. http://www.bestreferat.ru/referat-53017.html






Скачать файл (249.3 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru