Параллельные вычисления: кластеры. Кластер распределения нагрузки

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

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

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

Сегодня недорогой кластер из компонентов, находящихся в массовом производстве, может собрать практически любая уважающая себя компьютерная фирма, а с выходом такой кластерной ОС, как Windows Computing Cluster Server 2003, допускающей довольно простую инсталляцию, кластерные решения начального уровня становятся доступными малому и среднему бизнесу. И, пожалуй, не покажется необоснованным предположение, что перманентное снижение цен на аппаратные и программные компоненты и скоростные сетевые технологии вскоре сделают кластеры начального уровня привычным элементом ИС любого масштаба.

Поэтому в Тему недели, посвященную кластерным вычислениям, мы постарались включить не только обзорную часть, но и статьи о конкретных и, несомненно, востребованных в ближайшем будущем украинским бизнесом продуктах. В частности, читатель найдет здесь и практическое занятие, выполненное в нашей Тестовой лаборатории, и описание кластерных ОС Windows Computing Cluster Server 2003/2008, которые имеют все шансы стать популярными.

Прежде всего напомним определение кластера. Так называется локальная (в противоположность распределенной) вычислительная система, состоящая из множества независимых компьютеров, связанных между собой каналами передачи данных. Локальность кластера заключается в том, что все его подсистемы «видны» в едином административном домене, и управление им выполняется как единой вычислительной системой. Компьютеры, входящие в состав кластера, именуются узлами (node). Обычно это серийно выпускаемые универсальные компьютеры, способные работать самостоятельно. Узлы могут быть одно- или мультипроцессорными (конфигурация SMP). В классической схеме все узлы при работе с приложениями разделяют внешнюю память на массиве жестких дисков, используя внутренние HDD для более специальных функций. Для межузлового взаимодействия обычно применяется какая-либо стандартная сетевая технология, хотя это не исключает отдельно разработанных каналов связи. Кластерная сеть является обособленной - она изолирована от внешней сетевой среды.

Классификация

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

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

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

Кластеры балансировки нагрузки (Load Balancing) . Этот тип кластеров распределяет входящие запросы между множеством узлов, на которых работают одинаковые программы или размещен один и тот же контент (рис. 2). Каждый узел способен обрабатывать запросы к одному и тому же приложению или контенту. Если какой-нибудь из узлов выходит из строя, запросы перераспределяются среди оставшихся. В типичном случае такие кластеры используются для веб-хостинга.

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

Кластеры для высокопроизводительных вычислений (High-Performance Cluster, HPC) . Традиционно параллельные вычисления выполнялись на мультипроцессорных системах, специально для этого спроектированных. В них множество процессоров разделяли общую память и шинный интерфейс в пределах одного компьютера. С появлением высокоскоростной коммутационной технологии стало возможным объединять компьютеры в кластеры для параллельных вычислений.

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

Компоненты кластера

Базовые строительные блоки (компоненты) кластеров разбиваются на несколько категорий: непосредственно узлы, кластерное ПО, выделенная сеть, производящая обмен данными между узлами, и соответствующие сетевые протоколы.

Узлы

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

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

В типичном случае узел в кластере может быть управляющим (главным) или вычислительным (подчиненным) (рис. 3). Главный узел может быть только один. Он отвечает за работу кластера, а также является ключевым для кластерного ПО промежуточного слоя, процессов маршрутизации, диспетчеризации и мониторинга состояния каждого вычислительного узла. Последние выполняют вычисления и операции с системой хранения данных. Эти узлы, по сути, представляют собой полнофункциональные автономные компьютеры и, как правило, продаются как десктопы или серверы «из коробки».

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

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

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

В приведенном определении кластера было упомянуто, что он виден администратору и пользователю как единая вычислительная система. Это достигается с помощью образа единой системы (Single System Image, SSI) . Именно он скрывает неоднородную и распределенную природу имеющихся ресурсов и представляет их пользователям и приложениям как единый вычислительный ресурс. SSI может быть реализован на одном или нескольких из следующих уровней: аппаратном, ОС, ПО промежуточного слоя или/и приложения. Вот пример нескольких ключевых сервисов, предоставляемых SSI кластера:

  • единая точка входа;
  • единый пользовательский интерфейс;
  • единое пространство процессов;
  • единое пространство памяти и ввода-вывода;
  • единая иерархия файлов;
  • единая точка контроля и управления.

Такие системы, как Digital/Compaq Memory Channel и Distributed Shared Memory обеспечивают SSI на аппаратном уровне и позволяют пользователям видеть кластер как систему с разделяемой памятью. ОС SCO UnixWare NonStop Cluster, Sun Solaris-MC, GLUNIX и MOSIX поддерживают SSI на уровне ядра.

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

Сетевое оборудование и протоколы

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

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

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

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

Для кластерных коммуникаций применяются как традиционные сетевые протоколы, разработанные первоначально для Интернета (IP), так и созданные специально. Помимо этого, имеются два относительно новых стандарта, также специально предназначенных для кластеров. Мы не будем останавливаться на достаточно знакомом нашим читателям протоколе IP, равно как и на остальных, поскольку все они довольно специфичны. Перечислим лишь их названия, чтобы интересующиеся могли обратиться либо к литературе, либо к «всезнающему» Интернету. Это, в частности, протоколы Active Messages, Fast Messages, Virtual Memory-Mapped Communication system, U-net и Basic Interface for Parallelism. Обратимся к двум стандартам.

К 1997 г. исследования в области протоколов с низкой латентностью продвинулись настолько, что в итоге привели к созданию нового стандарта для кластерных коммуникаций Virtual Interface Architecture (VIA). Одновременно индустрия работала над стандартами для разделяемых подсистем хранения. Результатом этих усилий явился InfiniBand.

VIA - это коммуникационный стандарт, объединяющий лучшие достижения различных проектов. Он был создан консорциумом академических и индустриальных партнеров, включающим Intel, Compaq и Microsoft. Версия VIA 1.1 с поддержкой гетерогенных аппаратных средств стала доступной в начале 2001 г. Как следует из названия, базируется VIA на концепции виртуального сетевого интерфейса. Стандарт предусматривает, что перед отправкой сообщения приемный и посылающий буфера должны быть выделены и привязаны к физической памяти. После того как буфера и связанные с ними структуры данных сформированы, никаких системных вызовов не требуется. Операции приема и отправки в пользовательском приложении состоят из записи дескриптора в очередь. Приложение может выбирать, ждать ли ему подтверждения завершения операции или продолжать основную работу, пока сообщение обрабатывается.

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

Стандарт InfiniBand был поддержан консорциумом индустриальных партнеров, в том числе Compaq, Dell, HP, IBM, Intel, Microsoft и Sun Microsystems. Архитектура InfiniBand заменяет разделяемую шину, которая является стандартом для системы ввода-вывода в современных компьютерах, высокоскоростной последовательной, базированной на механизме каналов коммутационной фабрикой. Все системы и устройства подключаются к фабрике посредством канального адаптера хоста (Host Channel Adaptor, HCA), который обеспечивает соединение центрального процессора хоста со структурой InfiniBand, или канального адаптера целевого узла (Target Channel Adaptor, TCA), соединяющего InfiniBand с другими устройствами ввода-вывода типа Ethernet, Fibre Channel или с системами хранения данных. Канал InfiniBand дуплексный и работает с пропускной способностью 2,5 Гб/с в одном направлении в топологии «точка-точка». Данные посылаются пакетами, имеется шесть режимов передачи: надежное и ненадежное соединение, надежная и ненадежная дейтаграмма, многоадресная рассылка и необработанные пакеты («сырой» режим). Вдобавок InfiniBand поддерживает удаленный прямой доступ к памяти, который позволяет одному процессору читать или писать в память другого.

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

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

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

Помимо этого, существуют гибридные системы, которые комбинируют особенности нескольких категорий, скажем, InfiniBand позволяет посылать как данные на диск, так и сообщения другим узлам. Аналогично Scalable Coherent Interface (SCI) может также использовать оба механизма обмена.

Кластерные сети

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

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

Giganet (cLAN) . Технология cLAN (collapsed LAN), сегодня принадлежащая компании Emulex, была разработана с целью аппаратной поддержки VIA. Это была первая в индустрии нативная аппаратная реализация стандарта VIA. Ключевые особенности сети следующие.

На самом низком уровне коммуникационной модели находится некогерентная распределенная разделяемая память (Distributed Shared Memory, DSM). Часть виртуального адресного пространства приложения логически отображается поверх сети на физическую память в другом узле. Данные передаются между приложениями посредством записи в разделяемую область памяти с помощью стандартных инструкций записи процессора. Буфер в удаленном узле представляется посредством cookie Remote Direct Memory Access, узел-владелец которого получает право доступа к буферу.

Myrinet . Эта дуплексная сеть поставляется компанией Myricom. Она широко используется во многих академических проектах, в частности в Berkeley Network of Workstations (NOW). Физически сеть состоит из двух оптоволоконных кабелей (для нисходящего и восходящего потоков), подключаемых к хосту через общий коннектор. Компьютеры объединяются с помощью маршрутизаторов или коммутаторов (их можно конфигурировать для получения избыточных путей). Поддерживается коммутация без буферизации пакетов (cut-through), которая позволяет передавать сообщения из конца в конец с минимальной задержкой. Myrinet имеет внутриплатный программируемый процессор - он дает возможность экспериментировать со многими коммуникационными протоколами.

В Myrinet реализован ряд механизмов, обеспечивающих отказоустойчивость. К ним относятся управление потоком, контроль ошибок, проверка работоспособности каналов (heartbeat).

Последняя версия, так называемая четвертая генерация Myrinet 10G, поддерживает скорость передачи данных 10 Гб/с в каждом из направлений и совместима с 10 GE на уровне PHY. Латентность сети очень низкая - всего 5 мкс.

QsNet . Эта высокоскоростная с низкой латентностью сеть разработана компанией Quadrics Supercomputers World (QSW). Конструктивно QsNet включает две подсистемы:

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

Сетевой интерфейс базируется на заказных микросхемах, именуемых Elan. Модификация Elan III объединяет выделенный процессор ввода-вывода для разгрузки ЦП, шину PCI (66 МГц, 64 бита), дуплексный канал (400 МГц, 8 бит), устройство управления памятью (MMU), кэш и интерфейс локальной памяти. Микросхема выполняет три типа базовых операций:

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

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

Модификация сети, выпущенная в 2003 г., основана на шине PCI-X 133 МГц и имеет латентность 1,22 мкс.

Scalable Coherent Interface (SCI) . Это первая технология взаимосвязи, разработанная специально для кластерных вычислений, которая была доведена до уровня стандарта. Архитектура SCI базируется на соединениях «точка-точка», пакетах малого размера и расщепленных транзакциях. Стандарт IEEE 1596 был опубликован в 1992 г. и специфицировал физический уровень сети и выше для распределенной по сети разделяемой кэш-когерентной (опциональной) памяти. На более высоких уровнях стандарт описывает распределенную базированную на указателях схему когерентной кэш-памяти. Такая схема позволяет кэшировать удаленную SCI-память: всякий раз, когда данные, расположенные в удаленной памяти, модифицируются, все строки кэша на всех узлах, на которых они хранятся, становятся недействительными. Кэширование удаленной SCI-памяти увеличивает производительность и допускает непосредственное прозрачное программирование разделяемой памяти.

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

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

Базовый эскиз проекта ОС
Userspace System Processes User Processes
not using
the middleware
User Processes using the middleware
Middleware
System Services User Libraries
Kernel Middleware-related Kernel Extentions
Filesystems / Communication / Programmatic Interface
Memory Manager Scheduler Drivers
Hardware Abstraction Layer
Hardware Resourses Timers & Interrupts
RAM CPUs Disks Network Cluster Interconnect Others

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

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

Главные свойства кластеров

Кластеры состоят из нескольких компьютерных систем;

Они работают как одна вычислительная система (не все);

Кластер управляется и представляется пользователю как одна вычислительная система;

Зачем нужны кластеры

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

Какие бывают кластеры

Отказоустойчивые кластеры

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

Данные кластера могут быть построены по трём основным принципам

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

Кластер распределения нагрузки

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

Вычислительные кластеры

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

Не забываем оставлять


кафедра 29 "Управляющие Интеллектуальные Системы"

Реферат на тему:

Кластерные системы

Выполнил:

студент группы К9-292

Попов И.А

МОСКВА 2001

1. Введение

2. Основные классы современных параллельных компьютеров

3. Кластерная архитектура параллельных компьютеров

4. Цели создания кластерных систем

5. Отказоустойчивые кластеры

6. Высокопроизводительные кластеры

7. Проект Beowulf

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

9. Литература


Введение

Развитие многопроцессорных вычислительных систем

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

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

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

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

Высокую степень развития кластерных систем на сегоднящний день показывает тот факт, что в списке самых мощных суперкомпьютеров мира Top500 – числится 11 кластерных установок.


Основные классы современных параллельных компьютеров

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

С аппаратной точки зрения, основным параметром классификации паралелльных компьютеров является наличие общей (SMP) или распределенной памяти (MPP). Нечто среднее между SMP и MPP представляют собой NUMA-архитектуры, где память физически распределена, но логически общедоступна.

Симметричные мультипроцессорные системы

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

Каждая операция доступа к памяти интерпретируется как транзакция по шине процессоры-память. Когерентность кэшей поддерживается аппаратными средствами.

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

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

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

Массивно-параллельные системы

Массивно-параллельная система MPP состоит из однородных вычислительных узлов , включающих в себя:

  • один или несколько центральных процессоров (обычно RISC)
  • локальную память (прямой доступ к памяти других узлов невозможен)
  • коммуникационный процессор или сетевой адаптер
  • жесткие диски и/или другие устройства В/В

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

Системы с неоднородным доступом к памяти NUMA

NUMA (nonuniform memory access) в отличие от привычной SMP архитектуры с разделяемой памятью представляет собой несколько отдельных процессоров, каждый из которых, кроме собственного кэша, обладает также локальной памятью:

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

Проще всего охарактеризовать NUMA-систему, представив себе большую систему SMP, разделенную на несколько частей, эти части связаны коммуникационной магистралью, подключенной к системным шинам, и каждая часть включает собственную основную память и подсистему ввода/вывода. Это и есть NUMA: большая SMP, разбитая на набор более мелких и простых SMP. Основной проблемой NUMA является обеспечение когерентности кэшей. Аппаратура позволяет работать со всеми отдельными устройствами основной памяти составных частей системы (называемых обычно узлами) как с единой гигантской памятью.

Кластерная архитектура

Рассмотрим место кластерной архитектуры вычислительных систем в данной классификации.

Кластер - это связанный набор полноценных компьютеров, используемый в качестве единого ресурса. Под понятием "полноценный компьютер" понимается завершенная компьютерная система, обладающая всем, что требуется для ее функционирования, включая процессоры, память, подсистему ввода/вывода, а также операционную систему, подсистемы, приложения и т.д. Обычно для этого годятся персональные компьютеры или параллельные системы, которые могут обладать архитектурой SMP и даже NUMA. Кластеры являются слабосвязанными системами, связи узлов используется одна из стандартных сетевых технологий (Fast/Gigabit Ethernet, Myrinet) на базе шинной архитектуры или коммутатора. Поэтому они являются более дешевой в построении модификацией MPP архитектуры.

Кластерная архитектура параллельных компьютеров

Общие принципы

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

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

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

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

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

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

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

Кластеры могут стоится как на основе специализированных высокоскоростных шин передачи данных, так и на основе массовых сетевых технологий. Среди массовых коммуникационных стандартов сейчас чаще всего используется сеть Ethernet или более ее производительный вариант - Fast Ethernet, как правило, на базе коммутаторов. Однако большие накладные расходы на передачу сообщений в рамках Fast Ethernet приводят к серьезным ограничениям на спектр задач, которые можно эффективно решать на таком кластере. Если от кластера требуется большая производительность и универсальность, то необходимо применять более скоростные и специализированные технологии. К ним относятся SCI, Myrinet, cLAN, ServerNet и др. Сравнительная характеристика параметров этих технологий приведена в
таблице 1.

Латентность (MPI)

Пропускная способность(MPI)

180 Мбайт/c

Пропускная способность (аппаратная)

400 Мбайт/c

160 Мбайт/c

150 Мбайт/c

12,5 Мбайт/c

Реализация MPI

HPVM, MPICH-GM и др.

Таблица 1.

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

Скорость передачи данных по сети в рамках технологий Fast Ethernet и Scalable Coherent Interface (SCI) зависит от длины сообщения. Для Fast Ethernet характерна большая величина латентности – 160-180 мкс, в то время как латентность для SCI это величина около 5,6 мкс. Максимальная скорость передачи для этих же технологий 10 Мбайт/c и 80 Мбайт/с соответственно.

Цели создания кластерных систем

Разработчики архитектур кластерных систем приследовали различные цели при их создании. Первой была фирма Digital Equipment с кластерами VAX/VMS. Целью создания этой машины было повышение надежности работы системы, обеспечение высокой готовности и отказоустойчивости системы. В настоящее время существует множество аналогичных по архитектуре систем от других производителей.

Другой целью создания кластерных систем является создание дешевых высокопроизводительных параллельных вычислительных систем. Один из первых проектов, давший имя целому классу параллельных систем – кластер Beowulf – возник в центре NASA Goddard Space Flight Center для поддержки необходимыми вычислительными ресурсами проекта Earth and Space Sciences. Проект Beowulf начался летом 1994 года, и вскоре был собран 16-процессорный кластер на процессорах Intel 486DX4/100 МГц. На каждом узле было установлено по 16 Мбайт оперативной памяти и по 3 сетевых Ethernet-адаптера. Эта система оказалась очень удачной по отношению цена/производительность, поэтому такую архитектуру стали развивать и широко использовать в других научных организациях и институтах.

Для каждого класса кластеров характерны свои особенности архитекуры и применяемые аппаратные средства. Рассмотрим их более подробно.

Отказоустойчивые кластеры

Принципы построения

Для обеспечения надежности и отказоустойчивости вычислительных систем применяется множество различных аппаратурных и программных решений. Например, в системе может дублироваться все подверженные отказам элементы - источники питания, процессоры, оперативная и внешняя память. Такие отказоустойчивые системы с резервированием компонентов применяются для решения задач, в которых недостаточно надежности обычных вычислительных систем, оцениваемой в настоящий момент вероятностью безотказной работы 99%. В таких задачах требуется вероятность 99,999% и выше. Такую надежность можно достичь применяя отличные от приведенного выше методы повышения отказоустойчивости. В зависимости от уровня готовности вычислительной системы к использованию выделяют четыре типа надежности:

PRIVATEУровень готовности, %

Мaкс. время простоя

Тип системы

3,5 дня в год

Обычная (Conventional)

8,5 часов в год

Высокая надежность (High Availability)

1 час в год

Отказоустойчивая (Fault Resilient)

5 минут в год

Безотказная (Fault Tolerant)

Таблица 2.

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

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

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

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

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

Узлы кластера контролируют работоспособность друг друга и обмениваются специфической «кластерной» информацией, например, о конфигурации кластера, а также передавать данные между разделяемыми накопителями и координировать их использование. Контроль работоспособности осуществляется с помощью специального сигнала, который узлы кластера передают друг другу, для того чтобы подтвердить свое нормальное функционирование. Прекращение подачи сигналов с одного из узлов сигнализирует кластерному программному обеспечению о произошедшем сбое и необходимости перераспределить нагрузку на оставшиеся узлы. В качестве примера рассмотрим отказоустойчивый кластер VAX/VMS.

Кластера VAX/VMS

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

VAX-кластер обладает следующими свойствами:

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

Высокая готовность. Если происходит отказ одного из VAX-компьютеров, задания его пользователей автоматически могут быть перенесены на другой компьютер кластера. Если в системе имеется несколько контроллеров HSC и один из них отказывает, другие контроллеры HSC автоматически подхватывают его работу.

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

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

Расширяемость. Увеличение вычислительной мощности кластера достигается подключением к нему дополнительных VAX-компьютеров. Дополнительные накопители на магнитных дисках и магнитных лентах становятся доступными для всех компьютеров, входящих в кластер.

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

Основные методы связи в VAX-кластере представлены на рис. 4.

Рис. 4 VAX/VMS-кластер

Шина связи компьютеров CI (Computer Interconnect) работает со скоростью 70 Мбит/с и используется для соединения компьютеров VAX и контроллеров HSC с помощью коммутатора Star Coupler. Каждая связь CI имеет двойные избыточные линии, две для передачи и две для приема, используя базовую технологию CSMA, которая для устранения коллизий использует специфические для данного узла задержки. Максимальная длина связи CI составляет 45 метров. Звездообразный коммутатор Star Coupler может поддерживать подключение до 32 шин CI, каждая из которых предназначена для подсоединения компьютера VAX или контроллера HSC. Контроллер HSC представляет собой интеллектуальное устройство, которое управляет работой дисковых и ленточных накопителей.

Компьютеры VAX могут объединяться в кластер также посредством локальной сети

Ethernet, используя NI - Network Interconnect (так называемые локальные VAX-кластеры), однако производительность таких систем сравнительно низкая из-за необходимости делить пропускную способность сети Ethernet между компьютерами кластера и другими клиентами сети.

Также кластера могут стоиться на основе шины DSSI (Digital Storage System Interconnect). На шине DSSI могут объединяться до четырех компьютеров VAX нижнего и среднего класса. Каждый компьютер может поддерживать несколько адаптеров DSSI. Отдельная шина DSSI работает со скоростью 4 Мбайт/с (32 Мбит/с) и допускает подсоединение до 8 устройств. Поддерживаются следующие типы устройств: системный адаптер DSSI, дисковый контроллер серии RF и ленточный контроллер серии TF. DSSI ограничивает расстояние между узлами в кластере 25 метрами.

Системное программное обеспечение VAX-кластеров

Для гарантии правильного взаимодействия процессоров друг с другом при обращениях к общим ресурсам, таким, например, как диски, компания DEC использует распределенный менеджер блокировок DLM (Distributed Lock Manager). Очень важной функцией DLM является обеспечение когерентного состояния дисковых кэшей для операций ввода/вывода операционной системы и прикладных программ. Например, в приложениях реляционных СУБД DLM несет ответственность за поддержание согласованного состояния между буферами базы данных на различных компьютерах кластера.

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

Работа с DLM связана со значительными накладными расходами. Накладные расходы в среде VAX/VMS могут быть большими, требующими передачи до шести сообщений по шине CI для одной операции ввода/вывода. Накладные расходы могут достигать величины 20% для каждого процессора в кластере.

Высокопроизводительные кластеры

Принципы построения

Архитектура высокопроизводительных кластеров появилась как развитие принципов построения систем MPP на менее производительных и массовых компонентах, управляемых операционной ситемой общего назначения. Кластеры также как и MPP системы состоят из слабосвязанных узлов, которые могут быть как однородными, так и, в отличие от MPP, различными или гетерогенными. Особое внимание при проектировании высокопроизводительной кластерной архутектуры уделяется обеспечению высокой эффективности коммуникационной шины, связывающей узлы кластера. Так как в кластерах нередко применяются массовые относительно низкопроизводительные шины, то приходится принимать ряд мер по исключению их низкой пропускной способности на производительность кластеров и организацию эффективного распараллеливания в кластере. Так например пропускная способность одной из самых высокоскоростных технологий Fast Ethernet на порядки ниже, чем у межсоединений в современных суперкомпьютерах МРР-архитектуры.

Для решения проблем низкой производительности сети применяют несколько методов:

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

IPX). Такой метод часто используют в ситемах класса Beowulf.

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

Проект Beowulf

Beowulf - это скандинавский эпос, повествующий о событиях VII - первой трети VIII века, участником которых является одноименный герой, прославивший себя в сражениях.

Одним из примеров реализации кластерной системы такой структуры являются кластеры Beowulf. Проект Beowulf объединил около полутора десятков организаций (главным образом университетов) в Соединенных Штатах. Ведущие разработчики проекта - специалисты агентства NASA. В данном виде кластеров можно выделить следующие основные особенности:

История проекта Beowulf

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

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

Далее в GSFC и других подразделениях NASA были собраны другие, более мощные кластеры. Например, кластер theHIVE (Highly-parallel Integrated Virtual Environment) содержит 64 узла по 2 процессора Pentium Pro/200MHz и 4GB памяти в каждом, 5 коммутаторов Fast Ethernet. Общая стоимость этого кластера составляет примерно $210 тыс. В рамках проекта Beowulf был разработан ряд высокопроизводительных и специализированных сетевых драйверов (в частности, драйвер для использования нескольких Ethernet-каналов одновременно).

Архитектура Beowulf

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

Это или однопроцессорные ПК, или SMP-сервера с небольшим числом процессоров (2-4, возможно до 6). По некоторым причинам оптимальным считается построение кластеров на базе двухпроцессорных систем, несмотря на то, что в этом случае настройка кластера будет несколько сложнее (главным образом потому, что доcтупны относительно недорогие материнские платы для 2 процессоров Pentium II/III). Стоит установить на каждый узел 64-128MB оперативной памяти (для двухпроцессорных систем 64-256MB).

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

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

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

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

Сеть

Основные типы локальных сетей, задействованные в рамках проекта Beowulf, - это Gigabit Ethernet, Fast Ethernet и 100-VG AnyLAN. В простейшем случае используется один сегмент Ethernet (10Mbit/sec на витой паре). Однако дешевизна такой сети, вследствие коллизий оборачивается большими накладными расходами на межпроцессорные обмены; а хорошую производительность такого кластера следует ожидать только на задачах с очень простой параллельной структурой и при очень редких взаимодействиях между процессами (например, перебор вариантов).

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

Более дорогостоящим, но также популярным вариантом являются использование коммутаторов типа Myrinet (1.28Gbit/sec, полный дуплекс).

Менее популярными, но также реально используемыми при построении кластеров сетевыми технологиями являются технологии сLAN, SCI и Gigabit Ethernet.

Иногда для связи между узлами кластера используют параллельно несколько физичеких каналов связи - так называемое «связывание каналов» (channel bonding), которое обычно применяется для технологии Fast Ethernet. При этом каждый узел подсоединяется к коммутатору Fast Ethernet более чем одним каналом. Чтобы достичь этого, узлы оснащаются либо несколькими сетевыми платами, либо многопортовыми платами Fast Ethernet. Применение связывания каналов в узлах под управлением ОС Linux позволяет организовать равномерное распределение нагрузки приема/передачи между соответствующими каналами.

Системное ПО

Операционная система . Обычно используется система Linux в версиях, специально оптимизированных под распределенные параллельные вычисления. Была проведена доработку ядра Linux 2.0. В процессе построения кластеров выяснилось, что стандартные драйверы сетевых устройств в Linux весьма неэффективны. Поэтому были разработаны новые драйверы, в первую очередь для сетей Fast Ethernet и Gigabit Ethernet, и обеспечена возможность логического объединения нескольких параллельных сетевых соединений между персональными компьютерами (аналогично аппаратному связыванию каналов) , что позволяет из дешевых локальных сетей, обладающих низкой пропускной способностью, соорудить сеть с высокой совокупной пропускной способностью.

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

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

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

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

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

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

Пример реализации кластера Beowulf - Avalon

PRIVATEMichael Warren и другие ученые из группы теоретической астрофизики построили суперкомпьютер Avalon, который представляет из себя Beowulf -кластер на базе процессоров 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").

Заключение

Ведущие производители микропроцессоров: Sun Microsystems, Dell и IBM придерживаются одинаковой точки зрения на будущее отрасли суперкомпьютеров: на смену отдельным, независимым суперкомпьютерам должны прийти группы высокопроизводительных серверов, объединяемых в кластер. Уже сегодня распределенные кластерные системы опережают современные классические суперкомпьютеры по производительности: самый мощный на сегодняшний день компьютер в мире - IBM ASCI White - обладает производительностью в 12 ТераФЛОП, производительность сети SETI@Home оценивается примерно в 15 ТераФЛОП. При этом, IBM ASCI White был продан за 110 миллионов долларов, а за всю историю существования SETI@Home было потрачено около 500 тысяч долларов.

Проанализировав итоги работ, выполненных в рамках проекта Beowulf, можно прийти к следующему выводу: найденные решения позволяют самостоятельно собрать высокопроизводительный кластер на базе стандартных для ПК компонентов и использовать обычное программное обеспечение. Среди самых крупных экземпляров нельзя не отметить 50-узловой кластер в CESDIS, включающий 40 узлов обработки данных (на базе одно- и двухпроцессорных плат Рentium Рro/200 МГц) и 10 масштабирующих узлов (двухпроцессорная плата Рentium Рro/166 МГц). Соотношение стоимость/пиковая производительность в таком кластере представляется очень удачным. Вопрос в том, насколько эффективно удается распараллелить приложения - иными словами, какова будет реальная, а не пиковая производительность. Над решением этой проблемы сейчас и работают участники проекта.


Литература

3. http://newton.gsfc.nasa.gov/thehive/

4. http://www.lobos.nih.gov

5. http://parallel.ru/news/kentucky_klat2.html

6. http://parallel.ru/news/anl_chibacity.html

7. http://parallel.ru/cluster/

8. http://www.ptc.spbu.ru


Resources

MIMD компьютеры

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

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

  • Компьютеры с распределенной памятью (Distributed memory)
    Процессор может обращаться к локальной памяти, может посылать и получать сообщения, передаваемые по сети, соединяющей процессоры. Сообщения используются для осуществления связи между процессорами или, что эквивалентно, для чтения и записи удаленных блоков памяти. В идеализированной сети стоимость посылки сообщения между двумя узлами сети не зависит как от расположения обоих узлов, так и от трафика сети, но зависит от длины сообщения.
  • Компьютеры с общей (разделяемой) памятью (True shared memory)
    Все процессоры совместно обращаются к общей памяти, обычно, через шину или иерархию шин. В идеализированной PRAM (Parallel Random Access Machine - параллельная машина с произвольным доступом) модели, часто используемой в теоретических исследованиях параллельных алгоритмов, любой процессор может обращаться к любой ячейке памяти за одно и то же время. На практике масштабируемость этой архитектуры обычно приводит к некоторой форме иерархии памяти. Частота обращений к общей памяти может быть уменьшена за счет сохранения копий часто используемых данных в кэш-памяти, связанной с каждым процессором. Доступ к этому кэш-памяти намного быстрее, чем непосредственно доступ к общей памяти.
  • Компьютеры с виртуальной общей (разделяемой) памятью (Virtual shared memory)
    Общая память как таковая отсутствует. Каждый процессор имеет собственную локальную память и может обращаться к локальной памяти других процессоров, используя "глобальный адрес". Если "глобальный адрес" указывает не на локальную память, то доступ к памяти реализуется с помощью сообщений, пересылаемых по коммуникационной сети.

Примером машин с общей памятью могут служить:

  • Sun Microsystems (многопроцессорные рабочие станции)
  • Silicon Graphics Challenge (многопроцессорные рабочие станции)
  • Sequent Symmetry
  • Convex
  • Cray 6400.

Следующие компьютеры относятся к классу машин с распределенной памятью

  • IBM-SP1/SP2
  • Parsytec GC
  • CM5 (Thinking Machine Corporation)
  • Cray T3D
  • Paragon (Intel Corp.)
  • nCUBE
  • Meiko CS-2
  • AVX (Alex Parallel Computers)
  • IMS B008

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

Сеть с топологией 2D реш§тка(тор)



Сеть с топологией 2D тор

Сеть с топологией клика

Национального Центра Суперкомпьютерных Приложений (университет шт. Иллинойс, Urbana-Champaign)

MPI: The Message Passing Interface

Название "интерфейс передачи сообщений", говорит само за себя. Это хорошо стандартизованный механизм для построения параллельных программ в модели обмена сообщениями. Существуют стандартные "привязки" MPI к языкам С/С++, Fortran 77/90. Существуют бесплатные и коммерческие реализации почти для всех суперкомпьютерных платформ, а также для сетей рабочих станций UNIX и Windows NT. В настоящее время MPI - наиболее широко используемый и динамично развивающийся интерфейс из своего класса.

Beowulf - кластеры на базе ОС Linux

Михаил Кузьминский

"Открытые системы"

На пороге тысячелетий мы имеем все шансы стать свидетелями монополизации компьютерной индустрии, которая может охватить как микропроцессоры, так и операционные системы. Конечно же, речь идет о микропроцессорах от Intel (Merced грозит вытеснить процессоры архитектуры RISC) и ОС от Microsoft.

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

Некоторые специалисты сопоставляют потенциальную монополизацию компьютерного рынка с наблюдавшимся в 70-е годы монопольным господством IBM - как в области мэйнфреймов, так и операционных систем. Я долгое время работаю с этой техникой и по мере распространения в нашей стране ОС Unix все больше осознаю многие преимущества операционной системы MVS производства IBM. Тем не менее я разделяю распространенную точку зрения, что подобная монополия не способствовала ускорению прогресса.

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

Linux как общественное явление

Мы уже не удивляемся тому, что Linux cтала заметным явлением компьютерной жизни. В сочетании с богатейшим набором свободно распространяемого программного обеспечения GNU эта операционная система стала чрезвычайно популярна у некоммерческих пользователей как у нас, так и за рубежом. Ее популярность все возрастает. Версии Linux существуют не только для платформы Intel x86, но и для других процессорных архитектур, в том числе DEC Alрha, и широко используются для приложений Internet, а также выполнения задач расчетного характера. Одним словом, Linux стала своеобразной "народной операционной системой". Hельзя, впрочем, сказать, что у Linux нет слабых мест; одно из них - недостаточная поддержка SMР-архитектур.

Самый дешевый способ нарастить компьютерные ресурсы, в том числе вычислительную мощность, - это построить кластер. Массивно-параллельные суперкомпьютеры с физически и логически распределенной оперативной памятью также можно рассматривать как своеобразные кластеры. Наиболее яркий пример такой архитектуры - знаменитый компьютер IBM SР2.

Весь вопрос в том, что связывает компьютеры (узлы) в кластер. В "настоящих" суперкомпьютерах для этого используется специализированная и поэтому дорогая аппаратура, призванная обеспечить высокую пропускную способность. В кластерах, как правило, применяются обычные сетевые стандарты - Ethernet, FDDI, ATM или HiРРI.

Кластерные технологии с использованием операционной системы Linux начали развиваться несколько лет назад и стали доступны задолго до появления Wolfрack для Windows NT. Так в середине 90-х годов и возник проект Beowulf.

Герой эпической поэмы

"Беовульф" - это скандинавский эпос, повествующий о событиях VII - первой трети VIII века, участником которых является одноименный герой, прославивший себя в сражениях. Неизвестно, задумывались ли авторы проекта, с кем ныне будет сражаться Beowulf (вероятно, с Windows NT?), однако героический образ позволил объединить в консорциум около полутора десятков организаций (главным образом университетов) в Соединенных Штатах. Нельзя сказать, что среди участников проекта доминируют суперкомпьютерные центры, однако кластеры "Локи" и "Мегалон" установлены в таких известных в мире высокопроизводительных вычислений центрах, как Лос-Аламос и лаборатория Sandia Министерства энергетики США; ведущие разработчики проекта - специалисты агентства NASA. Вообще, все без исключения кластеры, созданные участниками проекта, получают громкие имена.

Кроме Beowulf, известна еще одна близкая кластерная технология - NOW. В NOW персональные компьютеры обычно содержат информацию о самих себе и поставленных перед ними задачах, а в обязанности системного администратора такого кластера входит формирование данной информации. Кластеры Beowulf в этом отношении (то есть с точки зрения системного администратора) проще: там отдельные узлы не знают о конфигурации кластера. Лишь один выделенный узел содержит информацию о конфигурации; и только он имеет связь по сети с внешним миром. Все остальные узлы кластера объединены локальной сетью, и с внешним миром их связывает только "тоненький мостик" от управляющего узла.

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

Его основу в Beowulf составляет обычная коммерчески доступная ОС Linux, которую можно приобрести на CD-ROM. Первое время большинство участников проекта ориентировались на компакт-диски, издаваемые Slackware, а сейчас предпочтение отдаетcя версии RedHat.

В обычной ОС Linux можно инсталлировать известные средства распараллеливания в модели обмена сообщениями (LAM MРI 6.1, РVM 3.3.11 и другие). Можно также воспользоваться стандартом р-threads и стандартными средствами межпроцессорного взаимодействия, входящими в любую ОС Unix System V. В рамках проекта Beowulf были выполнены и серьезные дополнительные разработки.

Прежде всего следует отметить доработку ядра Linux 2.0. В процессе построения кластеров выяснилось, что стандартные драйверы сетевых устройств в Linux весьма неэффективны. Поэтому были разработаны новые драйверы (автор большинства разработок - Дональд Бекер), в первую очередь для сетей Fast Ethernet и Gigabit Ethernet, и обеспечена возможность логического объединения нескольких параллельных сетевых соединений между персональными компьютерами, что позволяет из дешевых локальных сетей, обладающих более чем скромной скоростью, соорудить сеть с высокой совокупной пропускной способностью.

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

Кроме того, надо отметить функции загрузки по сети (netbooting) при работе с материнскими платами Intel РR 440FX, причем они могут применяться и для работы с другими материнскими платами, снабженными AMI BIOS.

Очень интересные возможности предоставляют механизмы сетевой виртуальной памяти (Network Virtual Memory) или разделяемой распределенной памяти DSM (Distributed Shared Memory), позволяющие создать для процесса определенную "иллюзию" общей оперативной памяти узлов.

Сеть - дело тонкое

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

При анализе различных сетевых плат ПК, представленных сегодня на рынке, особое внимание было уделено таким характеристикам, как эффективная поддержка широковещательной рассылки (multicasting), поддержка работы с пакетами больших размеров и т. д. Основные типы локальных сетей, задействованные в рамках проекта Beowulf, - это Gigabit Ethernet, Fast Ethernet и 100-VG AnyLAN. (Возможности ATM-технологии также активно исследовались, но, насколько известно автору, это делалось вне рамок данного проекта.)

Как самому собрать суперкомпьютер

Проанализировав итоги работ, выполненных в рамках проекта Beowulf, можно прийти к следующему выводу: найденные решения позволяют самостоятельно собрать высокопроизводительный кластер на базе стандартных для ПК компонентов и использовать обычное программное обеспечение. Среди самых крупных экземпляров нельзя не отметить 50-узловой кластер в CESDIS, включающий 40 узлов обработки данных (на базе одно- и двухпроцессорных плат Рentium Рro/200 МГц) и 10 масштабирующих узлов (двухпроцессорная плата Рentium Рro/166 МГц). Соотношение стоимость/пиковая производительность в таком кластере представляется очень удачным. Вопрос в том, насколько эффективно удается распараллелить приложения - иными словами, какова будет реальная, а не пиковая производительность. Над решением этой проблемы сейчас и работают участники проекта.

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

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

Используются стандартные для рабочих станций ОС, чаще всего, свободно распространяемые - Linux/FreeBSD, вместе со специальными средствами поддержки параллельного программирования и распределения нагрузки. Программирование, как правило, в рамках модели передачи сообщений (чаще всего - MPI). Более подробно она рассмотрена в следующем параграфе.

История развития кластерной архитектуры.

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

Один из первых проектов, давший имя целому классу параллельных систем – кластеры Beowulf – возник в центре NASA Goddard Space Flight Center для поддержки необходимыми вычислительными ресурсами проекта Earth and Space Sciences. Проект Beowulf стартовал летом 1994 года, и вскоре был собран 16-процессорный кластер на процессорах Intel 486DX4/100 МГц. На каждом узле было установлено по 16 Мбайт оперативной памяти и по 3 сетевых Ethernet-адаптера. Для работы в такой конфигурации были разработаны специальные драйверы, распределяющие трафик между доступными сетевыми картами.

Позже в GSFC был собран кластер theHIVE – Highly-parallel Integrated Virtual Environment , структура которого показана на рис. 2. Этот кластер состоит из четырех подкластеров E, B, G, и DL, объединяя 332 процессора и два выделенных хост-узла. Все узлы данного кластера работают под управлением RedHat Linux.

В 1998 году в Лос-Аламосской национальной лаборатории астрофизик Майкл Уоррен и другие ученые из группы теоретической астрофизики построили суперкомпьютер Avalon, который представляет собой Linux-кластер на базе процессоров Alpha 21164A с тактовой частотой 533 МГц. Первоначально Avalon состоял из 68 процессоров, затем был расширен до 140. В каждом узле установлено по 256 Мбайт оперативной памяти, жесткий диск на 3 Гбайт и сетевой адаптер Fast Ethernet. Общая стоимость проекта Avalon составила 313 тыс. долл., а показанная им производительность на тесте LINPACK – 47,7 GFLOPS, позволила ему занять 114 место в 12-й редакции списка Top500 рядом с 152-процессорной системой IBM RS/6000 SP. В том же 1998 году на самой престижной конференции в области высокопроизводительных вычислений Supercomputing’98 создатели Avalon представили доклад «Avalon: An Alpha/Linux Cluster Achieves 10 Gflops for $150k», получивший первую премию в номинации «наилучшее отношение цена/производительность».

В апреле текущего года в рамках проекта AC3 в Корнелльском Университете для биомедицинских исследований был установлен кластер Velocity+, состоящий из 64 узлов с двумя процессорами Pentium III/733 МГц и 2 Гбайт оперативной памяти каждый и с общей дисковой памятью 27 Гбайт. Узлы работают под управлением Windows 2000 и объединены сетью cLAN компании Giganet.

Проект Lots of Boxes on Shelfes реализован в Национальном Институте здоровья США в апреле 1997 года и интересен использованием в качестве коммуникационной среды технологии Gigabit Ethernet. Сначала кластер состоял из 47 узлов с двумя процессорами Pentium Pro/200 МГц, 128 Мбайт оперативной памяти и диском на 1,2 Гбайт на каждом узле. В 1998 году был реализован

следующий этап проекта – LoBoS2, в ходе которого узлы были преобразованы в настольные компьютеры с сохранением объединения в кластер. Сейчас LoBoS2 состоит из 100 вычислительных узлов, содержащих по два процессора Pentium II/450 МГц, 256 Мбайт оперативной и 9 Гбайт дисковой памяти. Дополнительно к кластеру подключены 4 управляющих компьютера с общим RAID-массивом емкостью 1,2 Тбайт.

Одной из последних кластерных разработок стал суперкомпьютер AMD Presto III, представляющий собой кластер Beowulf из 78 процессоров Athlon. Компьютер установлен в Токийском Технологическом Институте. На сегодняшний день AMD построила 8 суперкомпьютеров, объединенных в кластеры по методу Beowulf, работающих под управлением ОС Linux.

Кластеры IBM

Компания IBM предлагает несколько типов слабо связанных систем на базе RS/6000, объединенных в кластеры и работающих под управлением программного продукта High-Availability Clastered Multiprocessor/6000 (HACMP/6000).

Узлы кластера работают параллельно, разделяя доступ к логическим и физическим ресурсам пользуясь возможностями менеджера блокировок, входящего в состав HACMP/6000.

Начиная с объявления в 1991 году продукт HACMP/6000 постоянно развивался. В его состав были включены параллельный менеджер ресурсов, распределенный менеджер блокировок и параллельный менеджер логических томов, причем последний обеспечил возможность балансировки загрузки на уровне всего кластера. Максимальное количество узлов в кластере возросло до восьми. В настоящее время в составе кластера появились узлы с симметричной многопроцессорной обработкой, построенные по технологии Data Crossbar Switch, обеспечивающей линейный рост производительности с увеличением числа процессоров.

Кластеры RS/6000 строятся на базе локальных сетей Ethernet, Token Ring или FDDI и могут быть сконфигурированы различными способами с точки зрения обеспечения повышенной надежности:

  • Горячий резерв или простое переключение в случае отказа. В этом режиме активный узел выполняет прикладные задачи, а резервный может выполнять некритичные задачи, которые могут быть остановлены в случае необходимости переключения при отказе активного узла.
  • Симметричный резерв. Аналогичен горячему резерву, но роли главного и резервного узлов не фиксированы.
  • Взаимный подхват или режим с распределением нагрузки. В этом режиме каждый узел в кластере может "подхватывать" задачи, которые выполняются на любом другом узле кластера.

IBM SP2 лидируют в списке крупнейших суперкомпьютеров TOP500 по числу инсталляций (141 установка, а всего в мире работает 8275 таких компьютеров с общим числом узлов свыше 86 тыс. В основу этих суперкомпьютеров заложенный в основу архитектуры кластерный подход с использованием мощного центрального коммутатора. IBM использует этот подход уже много лет.

Общая архитектура SP2

Общее представление об архитектуре SP2 дает рис. 1. Основная ее особенность архитектуры - применение высокоскоростного коммутатора с низкими задержками для соединения узлов между собой. Эта внешне предельно простая схема, как показал опыт, оказалась чрезвычайно гибкой. Сначала узлы SP2 были однопроцессорными, затем появились узлы с SMP-архитектурой.

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

большую гибкость выбора конфигураций. Общее число узлов в вычислительной системе может достигать 512. Узлы SP2 фактически являются самостоятельными компьютерами, и их прямые аналоги продаются корпорацией IBM под самостоятельными названиями. Наиболее ярким примером этого является четырехпроцессорный SMP-сервер RS/6000 44P-270 c микропроцессорами Power3-II, который сам по себе можно отнести к классу компьютеров среднего класса или даже к мини-суперкомпьютерам.

Устанавливавшиеся в узлах SP2 микропроцессоры развивались по двум архитектурным линиям: Power - Power2 - Power3 - Power3-II и по линии PowerPC вплоть до модели 604e с тактовой частотой 332 МГц.

Традиционными для SP2 являются «тонкие» (Thin Node) и «широкие» (Wide Node) узлы, обладающие SMP-архитектурой. В них могут устанавливаться как PowerPC 604e (от двух до четырех процессоров), так и Power3-II (до четырех). Емкость оперативной памяти узлов составляет от 256 Мбайт до 3 Гбайт (при использовании Power3-II - до 8 Гбайт). Основные отличия между тонкими и широкими узлами касаются подсистемы ввода/вывода. Широкие узлы предназначены для задач, требующих более мощных возможностей ввода/вывода: в них имеется по десять слотов PCI (в том числе три 64-разрядных) против двух слотов в тонких узлах. Соответственно, и число монтажных отсеков для дисковых устройств в широких узлах больше.

Быстродействие коммутатора характеризуется низкими величинами задержек: 1,2 мс (до 2 мс при числе узлов свыше 80). Это на порядок лучше того, что можно получить в современных Linux-кластерах Beowulf. Пиковая пропускная способность каждого порта: она составляет 150 Мбайт/с в одном направлении (то есть 300 Мбайт/с при дуплексной передаче). Той же пропускной способностью обладают и расположенные в узлах SP2 адаптеры коммутатора. IBM приводит также отличные результаты по задержкам и пропускной способности.

Наиболее мощные узлы SP2 - «высокие» (High Node). Высокий узел - это комплекс, состоящий из вычислительного узла с подсоединенными устройствами расширения ввода/вывода в количестве до шести штук. Такой узел также обладает SMP-архитектурой и содержит до 8 процессоров Power3 с тактовой частотой 222 или 375 МГц.

Кроме того, узел этого типа содержит плату ввода/вывода, которая также подсоединена к системной плате. Плата ввода/вывода содержит два симметричных логических блока SABER, через которые осуществляется передача данных к внешним устройствам, таким

как диски и телекоммуникационное оборудование. На плате ввода/вывода имеется четыре слота 64-разрядной шины PCI и один 32-разрядный слот (частота 33 МГц), а также интегрированы контроллеры UltraSCSI, Ethernet 10/100 Мбит/с, три последовательных и один параллельный порт.

C появлением высоких узлов и микропроцессоров Power3-II/375 МГц на тестах Linpack parallel системы IBM SP2 достигли производительности 723,4 GFLOPS. Этот результат достигнут при использовании 176 узлов (704 процессора). Учитывая, что узлов можно установить до 512, этот результат показывает, что серийно выпускаемые IBM SP2 потенциально близки к отметке 1 TFLOPS.

Кластерные решения Sun Microsystems

Sun Microsystems предлагает кластерные решения на основе своего продукта SPARCclaster PDB Server, в котором в качестве узлов используются многопроцессорные SMP-серверы SPARCserver 1000 и SPARCcenter 2000. Максимально в состав SPARCserver 1000 могут входить до восьми процессоров, а в SPARCcenter 2000 до 20 процессоров SuperSPARC. В комплект базовой поставки входят следующие компоненты: два кластерных узла на основе SPARCserver 1000/1000E или SPARCcenter 2000/2000E, два дисковых массива SPARCstorage Array, а также пакет средств для построения кластера, включающий дублированное оборудование для осуществления связи, консоль управления кластером Claster Management Console, программное обеспечение SPARCclaster PDB Software и пакет сервисной поддержки кластера.

Для обеспечения высокой производительности и готовности коммуникаций кластер поддерживает полное дублирование всех магистралей данных. Узлы кластера объединяются с помощью каналов SunFastEthernet с пропускной способностью 100 Мбит/с. Для подключения дисковых подсистем используется оптоволоконный интерфейс Fibre Channel с пропускной способностью 25 Мбит/с, допускающий удаление накопителей и узлов друг от друга на расстояние до 2 км. Все связи между узлами, узлами и дисковыми подсистемами дублированы на аппаратном уровне. Аппаратные, программные и сетевые средства кластера обеспечивают отсутствие такого места в системе, одиночный отказ или сбой которого выводил бы всю систему из строя.

Университетские проекты

Интересная разработка Университета штата Кентукки – кластер KLAT2 (Kentucky Linux Athlon Testbed 2 ). Система KLAT2 состоит из 64 бездисковых узлов с процессорами AMD Athlon/700 МГц и оперативной памятью 128 Мбайт на каждом. Программное обеспечение, компиляторы и математические библиотеки (SCALAPACK, BLACS и ATLAS) были доработаны для эффективного использования технологии 3DNow! процессоров AMD, что позволило увеличить производительность. Значительный интерес представляет и использованное сетевое решение, названное «Flat Neighbourghood Network» (FNN). В каждом узле установлено четыре сетевых адаптера Fast Ethernet от Smartlink, а узлы соединяются с помощью девяти 32-портовых коммутаторов. При этом для любых двух узлов всегда есть прямое соединение через один из коммутаторов, но нет необходимости в соединении всех узлов через единый коммутатор. Благодаря оптимизации программного обеспечения под архитектуру AMD и топологии FNN удалось добиться рекордного соотношения цена/производительность – 650 долл. за 1 GFLOPS.

Идея разбиения кластера на разделы получила интересное воплощение в проекте Chiba City , реализованном в Аргоннской Национальной лаборатории. Главный раздел содержит 256 вычислительных узлов, на каждом

из которых установлено два процессора Pentium III/500 МГц, 512 Мбайт оперативной памяти и локальный диск емкостью 9 Гбайт. Кроме вычислительного раздела в систему входят раздел визуализации (32 персональных компьютера IBM Intellistation с графическими платами Matrox Millenium G400, 512 Мбайт оперативной памяти и дисками 300 Гбайт), раздел хранения данных (8 серверов IBM Netfinity 7000 с процессорами Xeon/500 МГц и дисками по 300 Гбайт) и управляющий раздел (12 компьютеров IBM Netfinity 500). Все они объединены сетью Myrinet, которая используется для поддержки параллельных приложений, а также сетями Gigabit Ethernet и Fast Ethernet для управляющих и служебных целей. Все разделы делятся на «города» (town) по 32 компьютера. Каждый из них имеет своего «мэра», который локально обслуживает свой «город», снижая нагрузку на служебную сеть и обеспечивая быстрый доступ к локальным ресурсам.

Кластерные проекты в России

В России всегда была высока потребность в высокопроизводительных вычислительных ресурсах, и относительно низкая стоимость кластерных проектов послужила серьезным толчком к широкому распространению подобных решений в нашей стране. Одним из первых появился кластер «Паритет», собранный в ИВВиБД и состоящий из восьми процессоров Pentium II, связанных сетью Myrinet. В 1999 году вариант кластерного решения на основе сети SCI был апробирован в НИЦЭВТ, который, по сути дела, и был пионером использования технологии SCI для построения параллельных систем в России.

Высокопроизводительный кластер на базе коммуникационной сети SCI, установлен в Научно-исследовательском вычислительном центре Московского государственного университета . Кластер НИВЦ включает 12 двухпроцессорных серверов «Эксимер» на базе Intel Pentium III/500 МГц, в общей сложности 24 процессора с суммарной пиковой производительностью 12 млрд. операций в секунду. Общая стоимость системы – около 40 тыс. долл. или примерно 3,33 тыс. за 1 GFLOPS.

Вычислительные узлы кластера соединены однонаправленными каналами сети SCI в двумерный тор 3x4 и одновременно подключены к центральному серверу через вспомогательную сеть Fast Ethernet и коммутатор 3Com Superstack. Сеть SCI – это ядро кластера, делающее данную систему уникальной вычислительной установкой суперкомпьютерного класса, ориентированной на широкий класс задач. Максимальная скорость обмена данными по сети SCI в приложениях пользователя составляет более 80 Мбайт/с, а время латентности около 5,6 мкс. При построении данного вычислительного кластера использовалось интегрированное решение Wulfkit, разработанное компаниями Dolphin Interconnect Solutions и Scali Computer (Норвегия).

Основным средством параллельного программирования на кластере является MPI (Message Passing Interface) версии ScaMPI 1.9.1. На тесте LINPACK при решении системы линейных уравнений с матрицей размера 16000х16000 реально полученная производительность составила более 5,7 GFLOPS. На тестах пакета NPB производительность кластера сравнима, а иногда и превосходит производительность суперкомпьютеров семейства Cray T3E с тем же самым числом процессоров.

Основная область применения вычислительного кластера НИВЦ МГУ – это поддержка фундаментальных научных исследований и учебного процесса.

Из других интересных проектов следует отметить решение, реализованное в Санкт-Петербургском университете на базе технологии Fast Ethernet : собранные кластеры могут использоваться и как полноценные независимые учебные классы, и как единая вычислительная установка, решающая единую задачу. В Самарском научном центре

пошли по пути создания неоднородного вычислительного кластера, в составе которого работают компьютеры на базе процессоров Alpha и Pentium III. В Санкт-Петербургском техническом университете собирается установка на основе процессоров Alpha и сети Myrinet без использования локальных дисков на вычислительных узлах. В Уфимском государственном авиационном техническом университете проектируется кластер на базе двенадцати Alpha-станций, сети Fast Ethernet и ОС Linux.

Московский Государственный Инженерно-Физический Институт (Технический Университет) кафедра 29 "Управляющие Интеллектуальные Системы" Реферат на тему: Кластерные системы

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

Потребность в написании этой статьи возникла после прочитанного семинара на выставке ENTEREX’2002 в городе Киеве. Именно тогда, в начале 2002-го я увидел, что интерес к теме кластерных систем значительно возрос по сравнению с тем, что наблюдалось всего пару лет назад.

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

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

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

  • LAN - Local Area Network, локальная сеть
  • SAN - Storage Area Network, сеть хранения данных

Впервые в классификации вычислительных систем термин "кластер" определила компания Digital Equipment Corporation (DEC).

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

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

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

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

  1. Высокая готовность
  2. Высокое быстродействие
  3. Масштабирование
  4. Общий доступ к ресурсам
  5. Удобство обслуживания

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

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


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


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


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

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

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

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

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

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

и много других…

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

  • биллинговые системы
  • банковские операции
  • электронная коммерция
  • управление предприятием, и т.п….

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

Проблематика High Performance кластеров


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

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

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

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

Быстродействие интерфейсов характеризуется двумя параметрами: пропускной способностью непрерывного потока даных и максимальным количеством самых маленьких пакетов, которые можно передать за единицу времени. Варианты реализаций коммуникационных интерфейсов мы рассмотрим в разделе «Средства реализации High Performance кластеров».

Проблематика High Availability кластерных систем

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


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

При построении систем высокой готовности, главная цель - обеспечить минимальное время простоя.

Для того, чтобы система обладала высокими показатели готовности, необходимо:

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

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

Давайте коротко пройдемся по всем трём пунктам.

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

Отказоустойчивость обеспечивается путем использования специализированных компонент (ECC, Chip Kill модули памяти, отказоустойчивые блоки питания, и т.п.), а также с помощью технологий кластеризации. Благодаря кластеризации достигается такая схема функционирования, когда при отказе одного из компьютеров задачи перераспределяются между другими узлами кластера, которые функционируют исправно. Причем одной из важнейших задач производителей кластерного программного обеспечения является обеспечение минимального времени восстановления системы в случае сбоя, так как отказоустойчивость системы нужна именно для минимизации так называемого внепланового простоя.

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

Смешанные архитектуры


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

Сегодня часто можно встретить смешанные кластерные архитектуры, которые одновременно являются как системами высокой готовности, так и высокоскоростными кластерными архитектурами, в которых прикладные задачи распределяются по узлам системы. Наличие отказоустойчивого комплекса, увеличение быстродействия которого осуществляется путем добавления нового узла, считается самым оптимальным решением при построении вычислительной системы. Но сама схема построения таких смешанных кластерных архитектур приводит к необходимости объединения большого количества дорогих компонент для обеспечения высокого быстродействия и резервирования одновременно. И так как в High Performance кластерной системе наиболее дорогим компонентом является система высокоскоростных коммуникаций, ее дублирование приведет к значительным финансовым затратам. Следует отметить, что системы высокой готовности часто используются для OLTP задач, которые оптимально функционируют на симметричных мультипроцессорных системах. Реализации таких кластерных систем часто ограничиваются 2-х узловыми вариантами, ориентированными в первую очередь на обеспечение высокой готовности. Но в последнее время использование недорогих систем количеством более двух в качестве компонент для построения смешанных HA/HP кластерных систем становится популярным решением.

Что подтверждает, в частности, информация агентства The Register, опубликованная на его страничке:

"Председатель корпорации Oracle объявил о том, что в ближайшее время три Unіх сервера, на которых работает основная масса бизнес-приложений компании, будут заменены на блок серверов на базе процессоров Іntеl под управлением ОС Lіnuх. Ларри Эллисон настаивает на том, что введение поддержки кластеров при работе с приложениями и базами данных снижает затраты и повышает отказоустойчивость."

Средства реализации High Performance кластеров

Самыми популярными сегодня коммуникационными технологиями для построения суперкомпьютеров на базе кластерных архитектур являются:

Myrinet, Virtual Interface Architecture (cLAN компании Giganet - одна из первых коммерческих аппаратных реализаций), SCI (Scalable Coherent Interface), QsNet (Quadrics Supercomputers World), Memory Channel (разработка Compaq Computer и Encore Computer Corp), а также хорошо всем известные Fast Ethertnet и Gigabit Ethernet.


Рисунок 8. Скорость передачи непрерывного потока данных


Рисунок 9. Время передачи пакета нулевой длинны

Эти диаграммы (Рис. 8 и 9) дают возможность увидеть быстродействие аппаратных реализаций разных технологий, но следует помнить, что на реальных задачах и при использовании разнообразных аппаратных платформ параметры задержки и скорости передачи данных получаются на 20-40%, а иногда на все 100% хуже, чем максимально возможные.

Например, при использовании библиотек MPI для коммуникационных карточек cLAN и Intel Based серверов с шиной PCI, реальная пропускная способность канала составляет 80-100 MByte/sec, задержка - около 20 мксек.

Одной из проблем, которые возникают при использовании скоростных интерфейсов, например, таких как SCI является то, что архитектура PCI не подходит для работы с высокоскоростными устройствами такого типа. Но если перепроектировать PCI Bridge с ориентацией на одно устройство передачи данных, то эта проблема решается. Такие реализации имеют место в решениях некоторых производителей, например, компании SUN Microsystems.

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

Таблица 1. Сравнение высокоскоростных коммуникационных интерфейсов

Технология Пропускная способность MByte/s Задержка мксек/пакет Стоимость карточки/свича на 8 портов Поддержка платформ Комментарий
Fast Ethertnet 12.5 158 50/200 Linux, UNIX, Windows Низкие цены, популярная
Gigabit Ethernet 125 33 150/3500 Linux, UNIX, Windows Удобство модернизации
Myrinet 245 6 1500/5000 Linux, UNIX, Windows Открытый стандарт, популярная
VI (сLAN от Giganet) 150 8 800/6500 Linux, Windows Первая аппаратная промышленная реализация VI
SCI 400 1.5 1200/5000 * Linux, UNIX, Windows Стандартизирована, широко используется
QsNet 340 2 N/A ** True64 UNIX AlphaServer SC и системы Quadrics
Memory Channel 100 3 N/A True64 UNIX Используется в Compaq AlphaServer

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

** нет данных


Рисунок 10. Тесно связанная мультипроцессорная система с несимметричным доступом к памяти

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

Средства распараллеливания

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

  • на стандартных широко распространенных языках программирования с использованием коммуникационных библиотек и интерфейсов для организации межпроцессорного взаимодействия (PVM, MPI, HPVM, MPL, OpenMP, ShMem)
  • использование специализированных языков параллельного программирования и параллельных расширений (параллельные реализации Fortran и C/C++, ADA, Modula-3)
  • использование средств автоматического и полуавтоматического распараллеливания последовательных программ (BERT 77, FORGE, KAP, PIPS, VAST)
  • программирование на стандартных языках с использованием параллельных процедур из специализированных библиотек, которые ориентированы на решение задач в конкретных областях, например: линейной алгебры, методов Монте-Карло, генетических алгоритмов, обработки изображений, молекулярной химии, и т.п. (ATLAS, DOUG, GALOPPS, NAMD, ScaLAPACK).

Существует также немало инструментальных средств, которые упрощают проектирование параллельных программ. Например:

  • CODE - Графическая система для создания параллельных программ. Параллельная программа изображается в виде графа, вершины которого есть последовательные части программы. Для передачи сообщений используются PVM и MPI библиотеки.
  • TRAPPER - Коммерческий продукт немецкой компании Genias. Графическая среда программирования, которая содержит компоненты построения параллельного программного обеспечения.

По опыту пользователей высокоскоростных кластерных систем, наиболее эффективно работают программы, специально написанные с учетом необходимости межпроцессорного взаимодействия. И даже несмотря на то, что программировать на пакетах, которые используют shared memory interface или средства автоматического распараллеливания, значительно удобней, больше всего распространены сегодня библиотеки MPI и PVM.

Учитывая массовою популярность MPI (The Message Passing Interface), хочется немного о нём рассказать.

"Интерфейс передачи сообщений" - это стандарт, который используется для построения параллельных программ и использует модель обмена сообщениями. Существуют реализации MPI для языка C/C++ и Fortran как в бесплатных, так и коммерческих вариантах для большинства распространенных суперкомпьютерных платформ, в том числе High Performance кластерных систем, построенных на узлах с ОС Unix, Linux и Windows. За стандартизацию MPI отвечает MPI Forum (). В новой версии стандарта 2.0 описано большое число новых интересных механизмов и процедур для организации функционирования параллельных программ: динамическое управление процессами, односторонние коммуникации (Put/Get), параллельные I/O. Но к сожалению, пока нет полных готовых реализаций этой версии стандарта, хотя часть из нововведений уже активно используется.

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


Рисунок 11. Зависимость времени вычисления задачи решения систем линейных уравнений в зависимости от количества задействованных процессоров в кластере

На графике отображены две кривые, синяя - линейное ускорение и красная - полученное в результате эксперимента. То есть, в результате использования каждой новой ноды мы получаем ускорение выше, чем линейное. Автор эксперимента утверждает, что такие результаты получаются из-за более эффективного использования кэш памяти, что вполне логично и объяснимо. Если у кого возникнут мысли и идеи по этому поводу, буду благодарен, если вы ими поделитесь (мой e-mail: [email protected]).

Средства реализации High Availability кластеров

High Availability кластеры можно распределить на:

  • Shared Nothing Architecture (архитектура без разделения ресурсов)
  • Shared Disk Architecture (архитектура с общими дисками)


Рисунок 12. Архитектура без разделения ресурсов

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


Рисунок 13. Архитектура с общими дисками

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

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

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


Рисунок 14. Гетерогенная кластерная система

Самыми популярными коммерческими системами сегодня являются двухузловые отказоустойчивые кластеры. Различают Активный-Активный (Active-Active) и Активный-Пассивный (Active-Passive) модели реализации отказоустойчивых кластерных систем в отношении распределения програмных ресурсов.


Рисунок 15. Модель Активный-Активный

В модели Активный-Активный мы практически получаем вместе с отказоустойчивым решением - решение высокоскоростное, так как одна задача работает на нескольких серверах одновременно. Такой вариант реализован, например, в Oracle Prallel Server, MS SQL 2000, IBM DB2. То есть, реализация такой модели возможна лишь в случае написания прикладного программного обеспечения с ориентацией на функционирование в кластерном режиме (исключение составляют кластерные системы с разделением оперативной памяти). В модели Активный-Активный возможно масштабирование скорости работы задачи путем добавления нового узла, если конечно программным обеспечением поддерживается необходимое количество нод. Например, Oracle Parallel Server 8.0.5 поддерживает работу на кластере от 2-х до 6-ти узлов.


Рисунок 16. Активный-Активный кластер на 3-х узлах

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


Рисунок 17. Модель Активный-Пассивный

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


Рисунок 18. Псевдо Активный-Активный кластер на 3-х узлах

Если вам нужно обеспечить отказоустойчивую работу нескольких программных ресурсов, то достаточно добавить в систему новый узел и запустить на кластере нужные вам задачи, которые в случае отказа этого узла перейдут на выполнение на другом узле. Такая модель реализована в программном обеспечении ReliantHA для ОС Caldera OpenUnix и Unixware, которое поддерживает кластеризацию от 2-х к 4-х узлам, в MSCS (Microsoft Cluster Service) и Linux Failover Cluster модели.

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

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


Рисунок 19. Архитектура с общей SCSI шиной

или с помощью автономной дисковой подсистемы со встроенным контролером SCSI to SCSI. В последнем случае диски подключаются ко внутренним независимым каналам дисковой подсистемы.


Рисунок 20. Вариант с использованием SCSI to SCSI дисковой подсистемы

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

В последнее время начинает приобретать популярность новый последовательный интерфейс для протокола SCSI - FC (Fibre Channel). На базе FC строятся так называемые сети хранения данных - SAN (Storage Area Network).


Рисунок 21. Кластерная система с использованием SAN на базе Fibre Channel

К основным преимуществам Fibre Channel можно отнести практически все его особенности.

  • Высокие скорости передачи данных
  • Протоколо-независимость (0-3 уровни)
  • Большие расстояния между точками
  • Низкие задержки при передаче коротких пакетов
  • Высокая надежность передачи данных
  • Практически неограниченное масштабирование
  • Многоточечные топологии

Эти замечательные особенности Fibre Channel получил благодоря тому, что в его проектировании принимали участие специалисты в областях как канальных, так и сетевых интерфейсов, причем им удалось объединить в одном FC интерфейсе положительные черты обоих.

Для понимания значимости FC я приведу сравнительную табличку FC и параллельного SCSI интерфейса.

Таблица 2. Таблица сравнительных характеристик FC и параллельного SCSI интерфейса

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

Существует еще один очень интересный вариант реализации кластерной архитектуры - кластерная система с разделяемой памятью (в т.ч. оперативной) Shared Memory Cluster. Фактически этот кластер может функционировать как в модели умеренно связанной многопроцессорной системы, так и тесно связанной. Такая система, как уже говорилось в начале статьи, называется NUMA.


Рисунок 22. Модель кластера с разделяемой памятью

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

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


Рисунок 23. Сравнение среднего времени простоя различных систем

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

Как видим, кластерные системы высокой готовности не являются панацеей при минимизации простоев. Если простой системы является чрезвычайно критичным, тогда следует использовать системы класса Fault Tolerant или Continuous Availability, системы такого класса имеют коэффициент готовности на порядок выше, чем системы класса High Availability.

Примеры проверенных решений

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

Сперва о высокоскоростных кластерах.

Одним из наиболее полезных, на мой взгляд, примеров является то, что первые места, да и вообще большинство мест 18-й редакции списка самых мощных суперкомпьютеров мира занимают системы IBM SP2 и Compaq AlphaServer SC. Обе системы являются массивно-параллельными вычислительными системами (MPP), которые структурно аналогичны High Performance кластерным решениям.

В IBM SP2 в качестве узлов используются машины RS/6000, соединенные коммутатором SP Switch2. Пропускная способность коммутатора - 500MB/s в одном направлении, величина задержки - 2.5 мксек.

Compaq AlphaServer SC. Узлы - 4-х процессорные системы типа Compaq AlphaServer ES45, соединенные с помощью коммуникационного интерфейса QsNet, параметры которого упоминались выше.

В том же суперкомпьютерном списке находятся машины, построенные на обычных Intel платформах и коммутаторах SCI и Myrinet и даже обычном Fast и Gigabit Ethernet. Причем как в первых двух вариантах, так и на высокоскоростных кластерных системах, построенных на рядовом оборудовании, для програмирования используются пакеты MPI.

Ну и напоследок хочется привести красивый пример масштабируемой кластерной системы высокой готовности. Аппаратная модель кластерного решения для отказоустойчивой высокоскоростной обработки базы данных IBM DB/2.


Рисунок 24. Кластер IBM DB2

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

Литература

  • "Sizing Up Parallel Architectures", - Greg Pfister, старший технический специалист компании IBM.
  • "Возможна ли отказоустойчивость для Windows?", - Наталья Пирогова, материалы издательства «Открытые системы».
  • "Использование систем распараллеливания задач в слабосвязанном кластере", - М.Н.Иванов.
  • "Отказоустойчивые компьютеры компании Stratus", - Виктор Шнитман, материалы издательства «Открытые системы».
  • "Современные высокопроизводительные компьютеры", - В. Шнитман, информационно-аналитические материалы Центра Информационных Технологий.
  • "Шаг к сетям хранения данных", информационно-аналитические материалы компании ЮСТАР.
  • "Эволюция архитектуры виртуального интерфейса", - Торстен фон Айкен, Вернер Фогельс, материалы издательства «Открытые системы».
  • Материалы Лаборатории Параллельных Информационных Технологий "НИВЦ МГУ".
  • Материалы Cluster Computing Info Centre.
  • Материалы SCI Europe.
  • Материалы VI Forum (Virtual Architecture Developers Forum).
  • Материалы компании Caldera.
  • Материалы компании Dolphinics.
  • Материалы компании Emulex.
  • Материалы компании KAI Software, a Division of Intel Americas, Inc. (KAI).
  • Материалы компании Myricom, Inc.
  • Материалы компании Oracle.
  • Рекомендации технической поддержки корпорации Intel.

Кластер (компьютеры)

Классификация кластеров

Кластеры высокой доступности

Обозначаются аббревиатурой HA (англ. High Availability - высокая доступность). Создаются для обеспечения высокой доступности сервиса, предоставляемого кластером. Избыточное число узлов, входящих в кластер, гарантирует предоставление сервиса в случае отказа одного или нескольких серверов. Типичное число узлов - два, это минимальное количество, приводящее к повышению доступности. Создано множество программных решений для построения такого рода кластеров. В частности, для GNU/Linux , Solaris существует проект бесплатного ПО Linux-HA .

Кластеры распределения нагрузки

Принцип их действия строится на распределении запросов через один или несколько входных узлов, которые перенаправляют их на обработку в остальные, вычислительные узлы. Первоначальная цель такого кластера - производительность, однако, в них часто используются также и методы, повышающие надёжность. Подобные конструкции называются серверными фермами . Программное обеспечение (ПО) может быть как коммерческим (OpenVMS Cluster, Platform LSF HPC, Sun Grid Engine, Moab Cluster Suite, Maui Cluster Scheduler), так и бесплатным (Linux Virtual Server, Mosix).

Вычислительные кластеры

Кластеры используются в вычислительных целях, в частности в научных исследованиях. Для вычислительных кластеров существенными показателями являются высокая производительность процессора на операциях над числами с плавающей точкой (Flops) и низкая латентность объединяющей сети, и менее существенными - скорость операций ввода-вывода, которая в большей степени важна для баз данных и web-сервисов . Вычислительные кластеры позволяют уменьшить время расчетов, по сравнению с одиночным компьютером, разбивая задание на параллельно выполняющиеся ветки, которые обмениваются данными по связывающей сети. Одна из типичных конфигураций - набор компьютеров, собранных из общедоступных компонентов, с установленной на них операционной системой Linux, и связанных сетью Myrinet, Beowulf. Специально выделяют высокопроизводительные кластеры (Обозначаются англ. аббревиатурой HPC Cluster - High-performance computing cluster ). Список самых мощных высокопроизводительных компьютеров (также может обозначаться англ. аббревиатурой HPC ) можно найти в мировом рейтинге TOP500 . В России ведется рейтинг самых мощных компьютеров СНГ TOP50 Суперкомпьютеры .

Системы распределенных вычислений (grid)

Такие системы не принято считать кластерами, но их принципы в значительной степени сходны с кластерной технологией. Их также называют grid-системами . Главное отличие - низкая доступность каждого узла, то есть невозможность гарантировать его работу в заданный момент времени (узлы подключаются и отключаются в процессе работы), поэтому задача должна быть разбита на ряд независимых друг от друга процессов. Такая система, в отличие от кластеров, не похожа на единый компьютер, а служит упрощённым средством распределения вычислений. Нестабильность конфигурации, в таком случае, компенсируется большим числом узлов.

Самые производительные

Дважды в год организацией IBM Roadrunner (Лос-Аламосская национальная лаборатория , США , созданный в ), его максимальная производительность (на июль 2008) составляет 1,026 2008) - суперкомпьютер, BlueGene /P находится в Федеративной Республике Германия , в исследовательском центре города Юлих, земля Северный Рейн-Вестфалия, максимально достигнутая производительность 167,3 Висконсин, США).

Сравнительно дешёвую альтернативу суперкомпьютерам представляют кластеры, основанные на концепции Beowulf , которые строятся из обыкновенных недорогих компьютеров на основе бесплатного программного обеспечения. Один из практических примеров такой системы - Stone Soupercomputer (Оак Ридж, шт. Теннесси , США, ).

Крупнейший кластер, принадлежащий частному лицу (из 1000 процессоров), был построен Джоном Козой (John Koza).

История

История создания кластеров неразрывно связана с ранними разработками в области компьютерных сетей. Одной из причин для появления скоростной связи между компьютерами стали надежды на объединение вычислительных ресурсов. В начале 1970-х гг. группой разработчиков протокола TCP/IP и лабораторией Xerox PARC были закреплены стандарты сетевого взаимодействия. Появилась и операционная система Hydra («Гидра») для компьютеров DEC, созданный на этой основе кластер был назван C.mpp (Питтсбург , шт. Пенсильвания , США, ). Тем не менее, только около г. были созданы механизмы, позволяющие с лёгкостью пользоваться распределением задач и файлов через сеть, по большей части это были разработки на основе Sun Microsystems.

Первым коммерческим проектом кластера стал ARCNet, созданный компанией Datapoint в г. Прибыльным он не стал, и поэтому строительство кластеров не развивалось до г., когда DEC построила свой VAXcluster на основе операционной системы HP Alpha и 1994, класс HA) и г. это ПО для объединения компьютеров в виртуальный суперкомпьютер открыло возможность мгновенного создания кластеров. В результате суммарная производительность всех созданных тогда дешёвых кластеров обогнала по производительности сумму мощностей «серьёзных» коммерческих систем.

Создание кластеров на основе дешёвых персональных компьютеров, объединённых сетью передачи данных, продолжилось в г. силами Американского аэрокосмического агентства (NASA), затем в г. получили развитие кластеры Beowulf , специально разработанные на основе этого принципа. Успехи таких систем подтолкнули развитие grid-сетей , которые существовали ещё с момента создания

Программные средства

Широко распространённым средством для организации межсерверного взаимодействия является библиотека MPI , поддерживающая языки и Fortran . Она используется, например, в программе моделирования погоды MM5 .

Компанией Windows. Он создан на основе технологии, выкупленной у Digital Equipment Corporation , поддерживает до 8 узлов в кластере, а также работу в сети SAN . Набор API-интерфейсов служит для поддержки распределяемых приложений, есть заготовки для работы с программами, не предусматривающими работы в кластере.

См. также

Ссылки

  • Вычислительный кластер Киевского национального университета им. Т. Г. Шевченка
  • Высокопроизводительные вычисления на Nvidia GPU, проект Tesla

Wikimedia Foundation . 2010 .