Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем
.pdf5 9 6 Глава 14. Вычислительные системы класса MIMD
Кластеризация с резервированием - наиболее старый и универсальный метод. Один из серверов берет на себя всю вычислительную нагрузку, в то время как вто рой остается неактивным, но готовым перенять вычисления при отказе основного сервера. Активный или первичный сервер периодически посылает резервному так тирующее сообщение. При отсутствии тактирующих сообщений (это рассматри вается как отказ первичного сервера) вторичный сервер берет управление на себя. Такой подход повышает коэффициент готовности, но не улучшает производитель ности. Более того, если единственный вид взаимодействия между узлами - обмен сообщениями, и если оба сервера кластера не используют диски коллективно, то резервный сервер не имеет доступа к базам данных, управляемым первичным сер вером.
Пассивное резервирование для кластеров не характерно. Термин «кластер» от носят к множеству взаимосвязанных узлов, активно участвующих в вычислитель ном процессе и совместно создающих иллюзию одной мощной вычислительной машины. К такой конфигурации обычно применяют понятие системы с активным вторичным сервером, и здесь выделяют три метода кластеризации: самостоятель ные серверы, серверы без совместного использования дисков и серверы с совмест ным использованием дисков.
При первом подходе каждый узел кластера рассматривается как самостоятель ный сервер с собственными дисками, причем ни один из дисков в системе не является общим (см. рис. 14.8, я). Схема обеспечивает высокую производитель ность и высокий коэффициент готовности, однако требует специального программ ного обеспечения для планирования распределения клиентских запросов по сер верам так, чтобы добиться сбалансированной и эффективной нагрузки на каждый из них. Необходимо также создать условия, чтобы при отказе одного из узлов в процессе выполнения какого-либо приложения другой узел мог перехватить и за вершить оставшееся без управления приложение. Для этого данные в кластере должны постоянно копироваться, чтобы каждый сервер имел доступ ко всем наи более свежим данным в системе. Из-за этих издержек высокий коэффициент го товности достигается лишь за счет потери производительности.
Для сокращения коммуникационных издержек большинство кластеров в на стоящее время формируют из серверов, подключенных к общим дискам, обычно представленных дисковым массивом RAID ('рис. 14.8,6).
Один из вариантов такого подхода предполагает, что совместный доступ к дискам не применяется. Общие диски разбиваются на разделы, и каждому узлу клас тера выделяется свой раздел. Если один из узлов отказывает, кластер может быть реконфигурирован так, что права доступа к его части общего диска передаются другому узлу.
Во втором варианте множество серверов разделяют во времени доступ к общим дискам, так что любой узел имеет возможность обратиться к любому разделу каж дого общего диска. Эта организация требует наличия каких-либо средств блоки ровки, гарантирующих, что в любой момент времени доступ к данным будет иметь только один из серверов.
Вычислительные машины (системы) в кластере взаимодействуют в соответ ствии с одним их двух транспортных протоколов. Первый из них, протокол TCP (Transmission Control Protocol), оперирует потоками байтов, гарантируя надеж-
Кластерные вычислительные системы 5 9 7
ность доставки сообщения. Второй - UDP (User Datagram Protocol) пытается по сылать пакеты данных без гарантии их доставки, В последнее время применяют специальные протоколы, которые работают намного лучше. Так, возглавляемый компанией Intel консорциум (Microsoft, Compaq и др.) предложил новый прото кол для внутрикластерных коммуникаций, который называется Virtual Interface Architecture (VIA) и претендует на роль стандарта.
При обмене информацией используются два программных метода: передачи сообщений и распределенной совместно используемой памяти. Первый опирается
на явную передачу информационных сообщений между узлами кластера. В аль тернативном варианте также происходит пересылка сообщений, но движение дан ных между узлами кластера скрыто от программиста.
Кластеры обеспечивают высокий уровень доступности - в них отсутствуют единая операционная система и совместно используемая память, то есть нет про блемы когерентности кэшей. Кроме того, специальное программное обеспечение в каждом узле постоянно контролирует работоспособность всех остальных узлов. Этот контроль основан на периодической рассылке каждым узлом сигнала «Пока жив» (keepalive). Если сигнал от некоторого узла не поступает, то такой узел счи тается вышедшим из строя; ему не дается возможность выполнять ввод/вывод, его диски и другие ресурсы (включая сетевые адреса) переназначаются другим узлам, а выполнявшиеся им программы перезапускаются в других узлах.
Кластеры хорошо масштабируются в плане производительности при добавле нии узлов. В кластере может выполняться несколько отдельных приложений, но для масштабирования отдельного приложения требуется, чтобы его части согла совывали свою работу путем обмена сообщениями. Нельзя, однако, не учитывать, что взаимодействия между узлами кластера занимают гораздо больше времени, чем в традиционных ВС.
Возможность практически неограниченного наращивания числа узлов и отсут ствие единой операционной системы делают кластерные архитектуры исключи тельно успешно масштабируемыми, и даже системы с сотнями и тысячами узлов показывают себя на практике с положительной стороны.
Топологии кластеров
При создании кластеров с большим количеством узлов могут применяться самые разнообразные топологии (см. главу 12). В данном разделе остановимся на тех, которые характерны для наиболее распространенных «малых»- кластеров, состоя щих из 2-4 узлов.
Топология кластерных пар
Топология кластерных пар находит применение при организации двухили четырехузловых кластеров (рис. 14.9).
Узлы группируются попарно. Дисковые массивы присоединяются к обоим уз лам пары, причем каждый узел имеет доступ ко всем дисковым массивам своей пары. Один из узлов является резервным для другого.
Четырехузловая кластерная «пара»- представляет собой простое расширение двухузловой топологии. Обе кластерные пары с точки зрения администрирования и настройки рассматриваются как единое целое.
5 9 8 Глава 14. Вычислительные системы класса MIMD
Рис. 14.9. Топология кластерных пар
Эта топология подходит для организации кластеров с высокой готовностью данных, но отказоустойчивость реализуется только в пределах пары, так как при надлежащие ей устройства хранения информации не имеют физического соедине ния с другой парой.
Пример: организация параллельной работы СУБД Informix XPS.
Топология N +1
Топология N+ 1 позволяет создавать кластеры из2,3и4 узлов (рис. 14.10).
Рис. 14.10. Топология N +1
Каждый дисковый массив подключаются только к двум узлам кластера. Дис ковые массивы организованы по схеме RAID 1. Один сервер имеет соединение со всеми дисковыми массивами и служит в качестве резервного для всех остальных (основных или активных) узлов. Резервный сервер может использоваться для под держания высокой степени готовности в паре с любым из активных узлов.
Топология рекомендуется для организации кластеров высокой готовности. В тех конфигурациях, где имеется возможность выделить один узел для резервирова ния, эта топология способствует уменьшению нагрузки на активные узлы и гаран тирует, что нагрузка вышедшего из строя узла будет воспроизведена на резервном узле без потери производительности. Отказоустойчивость обеспечивается между
Кластерные вычислительные системы 5 9 9
любым из основных узлов и резервным узлом. В то же время топология не позво ляет реализовать глобальную отказоустойчивость, поскольку основные узлы кла стера и их системы хранения информации не связаны друг с другом.
Топология N x N
Аналогично топологии N+ 1, топология Nх N(рис. 14,11) рассчитана на создание кластеров из 2, 3 и 4 узлов, но в отличие от первой обладает большей гибкостью и масштабируемостью.
Рис. 14. 11 . Топология NxN
Только в этой топологии все узлы кластера имеют доступ ко всем дисковым массивам, которые, в свою очередь, строятся по схеме RAID 1 (с дублированием). Масштабируемость проявляется в простоте добавления к кластеру дополнитель ных узлов и дисковых массивов без изменения соединений в существующей сис теме.
Топология позволяет организовать каскадную систему отказоустойчивости, при которой обработка переносится с неисправного узла на резервный, а в случае его выхода из строя - на следующий резервный узел и т. д. Кластеры с топологией
Рис. 14.12. Топология с полностью раздельным доступом
Системы с массовой параллельной обработкой (МРР) 6 0 1
Основные причины появления систем с массовой параллельной обработкой - это, во-первых, необходимость построения ВС с гигантской производительностью и, во-вторых, стремление раздвинуть границы производства ВС в большом диапа зоне, как производительности, так и стоимости. Для МРР-системы, в которой количество процессоров может меняться в широких пределах, всегда реально по добрать конфигурацию с заранее заданной вычислительной мощностью и финан совыми вложениями.
Если говорить о МРР как о представителе класса MIMD с распределенной па мятью и отвлечься от организации ввода/вывода, то эта архитектура является ес тественным расширением кластерной на большое число узлов. Отсюда для МРРсистем характерны все преимущества и недостатки кластеров, причем в связи с повышенным числом процессорных узлов как плюсы, так и минусы становятся гораздо весомее.
Характерная черта МРР-систем — наличие единственного управляющего уст ройства (процессора), распределяющего задания между множеством подчиненных ему устройств, чаще всего одинаковых (взаимозаменяемых), принадлежащих од ному или нескольким классам. Схема взаимодействия в общих чертах довольно проста:
-центральное управляющее устройство формирует очередь заданий, каждому из которых назначается некоторый уровень приоритета;
-по мере освобождения подчиненных устройств им передаются задания из оче реди;
-подчиненные устройства оповещают центральный процессор о ходе выполне ния задания, в частности о завершении выполнения или о потребности в до полнительных ресурсах;
-у центрального устройства имеются средства для контроля работы подчинен ных процессоров, в том числе для обнаружения нештатных ситуаций, прерыва ния выполнения задания в случае появления более приоритетной задачи и т. п.
Внекотором приближении имеет смысл считать, что на центральном процессо ре выполняется ядро операционной системы (планировщик заданий), а на подчи ненных ему — приложения. Подчиненность между процессорами может быть реа лизована как на аппаратном, так и на программном уровне.
Вовсе не обязательно, чтобы МРР-система имела распределенную оператив ную память, когда каждый процессорный узел владеет собственной локальной па мятью. Так, например, системы SPP1000/XA и SPP1200/XA [43] являют собой пример ВС с массовым параллелизмом, память которых физически распределена между узлами, но логически она общая для всей вычислительной системы. Тем не менее большинство МРР-систем имеют как логически, так и физически распреде ленную память.
Благодаря свойству масштабируемости, МРР-системы являются сегодня ли дерами по достигнутой производительности; наиболее яркий пример этому - Intel Paragon с 6768 процессорами. С другой стороны, распараллеливание в МРР-сис- темах по сравнению с кластерами, содержащими немного процессоров, становится еще более трудной задачей. Следует помнить, что приращение производительнос ти с ростом числа процессоров обычно вообще довольно быстро убывает (см. закон
6 0 2 Глава 14. Вычислительные системы класса MIMD
Амдала). Кроме того, достаточно трудно найти задачи, которые сумели бы эффек тивно загрузить множество процессорных узлов. Сегодня не так уж много приложе ний могут эффективно выполняться на МРР-системе, Имеет место также проблема переносимости программ между системами с различной архитектурой. Эффектив ность распараллеливания во многих, случаях сильно зависит от деталей архитек туры МРР-системы, например топологии соединения процессорных узлов.
Самой эффективной была бы топология, в которой любой узел мог бы напря мую связаться с любым другим узлом, но в ВС на основе МРР это технически трудно реализуемо. Как правило, процессорные узлы в современных МРР-компь- ютерах образуют или двухмерную решетку (например, в SNI/Pyramid RM1000) или гиперкуб (как в суперкомпьютерах nCube [8]).
Поскольку для синхронизации параллельно выполняющихся процессов необ ходим обмен сообщениями, которые должны доходить из любого узла системы в любой другой узел, важной характеристикой является диаметр системы D. В слу чае двухмерной решетки D - sqrt(n), в случае гиперкуба D - 1n(n). Таким образом, при увеличении числа узлов более выгодна архитектура гиперкуба.
Время передачи информации от узла к узлу зависит от стартовой задержки и скорости передачи. В любом случае, за время передачи процессорные узлы успе вают выполнить много команд, и это соотношение быстродействия процессорных узлов и передающей системы, вероятно, будет сохраняться — прогресс в произво дительности процессоров гораздо весомее, чем в пропускной способности каналов связи. Поэтому инфраструктура каналов связи в МРР-системах является объек том наиболее пристального внимания разработчиков.
Слабым местом МРР было и есть центральное управляющее устройство (ЦУУ) - при выходе его из строя вся система оказывается неработоспособной. Повышение надежности ЦУ У лежит на путях упрощения аппаратуры ЦУУ и/или ее дублиро вания.
Несмотря на все сложности, сфера применения ВС с массовым параллелизмом постоянно расширяется. Различные системы этого класса эксплуатируются во многих ведущих суперкомпьютерных центрах мира. Следует особенно отметить компьютеры Cray T3D и Cray T3E, которые иллюстрируют тот факт, что мировой лидер производства векторных суперЭВМ, компания Cray Research, уже не ори ентируется исключительно на векторные системы. Наконец, нельзя не вспомнить, что суперкомпьютерный проект министерства энергетики США основан на МРРсистеме на базе Pentium.
На рис. 14.14 показана структура МРР-системы RM1000, разработанной фир мой Pyramid.
В RM1000 используются микропроцессоры типа MIPS. Каждый узел содер жит процессор R4400, сетевую карту Ethernet и два канала ввода/вывода типа SCSI. Реализованный вариант включает в себя 192 узла, но сеть соединений предусмат ривает масштабирование до 4096 узлов. Каждый узел имеет коммуникационный компонент для подключения к соединяющей сети, организованной по топологии двухмерной решетки. Связь с решеткой поддерживается схемами маршрутизации, с четырьмя двунаправленными линиями для связи с соседними узлами и одной линией для подключения к данному процессорному узлу. Скорость передачи ин формации в каждом направлении - 50 Мбит/с.
6 0 4 Глава 14. Вычислительные системы класса MIMD
В симметричных мультипроцессорных вычислительных системах (SMP) име ет место практический предел числа составляющих их процессоров. Эффектив ная схема с кэш-памятью уменьшает трафик шины между процессором и основной памятью, но по мере увеличения числа процессоров трафик шины также возрастает. Поскольку шина используется также для передачи сигналов, обеспечивающих ко герентность, ситуация с трафиком еще более напрягается. С какого-то момента в плане производительности шина превращается в узкое место. Для систем типа SMP таким пределом становится число процессоров в пределах от 16 до 64. Например, объем SMP-системы Silicon Graphics Power Challenge ограничен 64 процессорами R10000, поскольку при дальнейшем увеличении числа процессоров производитель ность падает.
Ограничение на число процессоров в архитектуре SMP служит побудительным мотивом для развития кластерных систем, В последних же каждый узел имеет ло кальную основную память, то есть приложения «не видят» глобальной основной памяти. В сущности, когерентность поддерживается не столько аппаратурой, сколь ко программным обеспечением, что не лучшим образом сказывается на продук тивности. Одним из путей создания крупномасштабных вычислительных систем является технология CC-NUMA. Например, NUMA-система Silicon Graphics Origin поддерживает до 1024 процессоров R10000 [223], a Sequent NUMA-Q объединяет 252 процессора Pentium II [157].
На рис. 14.15 показана типичная организация систем типа CC-NUMA [36]. Имеется множество независимых узлов, каждый из которых может представлять собой, например, SMP-систему. Таким образом, узел содержит множество процес соров, у каждого из которых присутствуют локальные кэши первого (L1) и вто рого (L2) уровней. В узле есть и основная память, общая для всех процессоров этого узла, но рассматриваемая как часть глобальной основной памяти системы, В архитектуре CC-NUMA узел выступает основным строительным блоком. На пример, каждый узел в системе Silicon Graphics Origin содержит два микропроцес сора MIPS R10000, а каждый узел системы Sequent NUMA-Q включает в себя че тыре процессора Pentium II. Узлы объединяются с помощью какой-либо сети соединений, которая представлена коммутируемой матрицей, кольцом или имеет иную топологию.
Согласно технологии CC-NUMA, каждый узел в системе владеет собственной основной памятью, но с точки зрения процессоров имеет место глобальная адресуе мая память, где каждая ячейка любой локальной основной памяти имеет уникаль ный системный адрес. Когда процессор инициирует доступ к памяти и нужная ячейка отсутствует в его локальной кэш-памяти, кэш-память второго уровня (L2) процессора организует операцию выборки. Если нужная ячейка находится в ло кальной основной памяти, выборка производится с использованием локальной шины. Если же требуемая ячейка хранится в удаленной секции глобальной памя ти, то автоматически формируется запрос, посылаемый по сети соединений на нуж ную локальную шину и уже по ней к подключенному к данной локальной шине кэшу. Все эти действия выполняются автоматически, прозрачны для процессора
иего кэш-памяти,
Вданной конфигурации главная забота - когерентность кэшей. Хотя отдель ные реализации и. отличаются в деталях, общим является то, что каждый узел со-