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

advertisement
1
Многопроцессорные вычислительные системы – назначение, область применения
В настоящее время сфера применения многопроцессорных вычислительных систем
(МВС) непрерывно расширяется, охватывая все новые области в самых различных отраслях
науки, бизнеса и производства. Стремительное развитие кластерных систем создает условия
для использования многопроцессорной вычислительной техники в реальном секторе
экономики. Если традиционно МВС применялись в основном в научной сфере для решения
вычислительных задач, требующих мощных вычислительных ресурсов, то сейчас, из-за
бурного развития бизнеса резко возросло количество компаний, отводящих использованию
компьютерных технологий и электронного документооборота главную роль. В связи с этим
непрерывно растет потребность в построении централизованных вычислительных систем для
критически важных приложений, связанных с обработкой транзакций, управлением базами
данных и обслуживанием телекоммуникаций. Можно выделить две основные сферы
применения описываемых систем: обработка транзакций в режиме реального времени (OLTP,
on-line transaction processing) и создание хранилищ данных для организации систем поддержки
принятия решений (Data Mining, Data Warehousing, Decision Support System). Система для
глобальных корпоративных вычислений — это, прежде всего, централизованная система, с
которой работают практически все пользователи в корпорации, и, соответственно, она должна
все время находиться в рабочем состоянии. Как правило, решения подобного уровня
устанавливают в компаниях и корпорациях, где любые, даже самые кратковременные, простои
сети могут привести к громадным убыткам. Поэтому для организации такой системы не
подойдет обыкновенный сервер со стандартной архитектурой, вполне пригодный там, где не
стоит
жестких
требований
к
производительности
и
времени
простоя.
Высокопроизводительные системы для глобальных корпоративных вычислений должны
отличаться
такими
характеристиками,
как
повышенная
производительность,
масштабируемость, минимально допустимое время простоя.
Наряду с расширением области применения, по мере совершенствования МВС
происходит
усложнение
и
увеличение
количества
задач
в
областях,
традиционно
использующих высокопроизводительную вычислительную технику. В настоящее время
выделен круг фундаментальных и прикладных проблем, объединенный понятием "Grand
challenges", эффективное решение которых возможно только с использованием сверхмощной
вычислительных ресурсов. Этот круг включает следующие задачи:
- предсказания погоды, климата и глобальных изменений в атмосфере;
- науки о материалах;
- построение полупроводниковых приборов;
- сверхпроводимость;
2
- структурная биология;
- разработка фармацевтических препаратов;
- генетика;
- квантовая хромодинамика;
- астрономия;
- транспортные задачи;
- гидро- и газодинамика;
- управляемый термоядерный синтез;
- эффективность систем сгорания топлива;
- геоинформационные системы;
- разведка недр;
- наука о мировом океане;
- распознавание и синтез речи;
- распознавание изображений.
Главной отличительной особенностью многопроцессорной вычислительной системы
является ее производительность, т.е. количество операций, производимых системой за
единицу времени. Различают пиковую и реальную производительность. Под пиковой
понимают величину, равную произведению пиковой производительности одного процессора
на число таких процессоров в данной машине. При этом предполагается, что все устройства
компьютера
работают
в
максимально
производительном
режиме.
Пиковая
производительность компьютера вычисляется однозначно, и эта характеристика является
базовой, по которой производят сравнение высокопроизводительных вычислительных систем.
Чем больше пиковая производительность, тем теоретически быстрее пользователь сможет
решить свою задачу. Пиковая производительность есть величина теоретическая и, вообще
говоря,
не
достижимая
при
запуске
конкретного
приложения.
Реальная
же
производительность, достигаемая на данном приложении, зависит от взаимодействия
программной модели, в которой реализовано приложение, с архитектурными особенностями
машины, на которой приложение запускается.
Существуют два способа оценки пиковой производительности компьютера. Один из
них опирается на число команд, выполняемых компьютером в единицу времени. Единицей
измерения, как правило, является MIPS (Million Instructions Per Second). Производительность,
выраженная в MIPS, говорит о скорости выполнения компьютером своих же инструкций. Но,
во-первых, заранее не ясно, в какое количество инструкций отобразится конкретная
программа, а, во-вторых, каждая программа обладает своей спецификой, и число команд от
3
программы к программе может меняться очень сильно. В связи с этим данная характеристика
дает лишь самое общее представление о производительности компьютера.
Другой способ измерения производительности заключается в определении числа
вещественных операций, выполняемых компьютером в единицу времени. Единицей
измерения является Flops (Floating point operations per second) – число операций с плавающей
точкой, производимых компьютером за одну секунду. Такой способ является более
приемлемым для пользователя, поскольку последний знает вычислительную сложность своей
программы и, пользуясь этой характеристикой, может получить нижнюю оценку времени ее
выполнения.
Однако пиковая производительность получается при работе компьютера в идеальных
условиях, т.е. при отсутствии конфликтов при обращении к памяти при равномерной загрузке
всех устройств. В реальных условиях на выполнение конкретной программы влияют такие
аппаратно-программные особенности данного компьютера, как: особенности структуры
процессора, системы команд, состав функциональных устройств, реализация ввода/вывода,
эффективность работы компиляторов.
Одним из определяющих факторов является время взаимодействия с памятью, которое
определяется ее строением, объемом и архитектурой подсистем доступа в память. В
большинстве современных компьютеров организации наиболее эффективного доступа к
памяти используется так называемая многоуровневая иерархическая память. В качестве
уровней используются регистры и регистровая память, основная оперативная память, кэшпамять, виртуальные и жесткие диски, ленточные роботы. При этом выдерживается
следующий принцип формирования иерархии: при повышении уровня памяти скорость
обработки данных должна увеличиваться, а объем уровня памяти - уменьшаться.
Эффективность использования такого рода иерархии достигается за счет хранения наиболее
часто используемых данных в памяти верхнего уровня, время доступа к которой минимально.
А поскольку такая память обходится достаточно дорого, ее объем не может быть большим.
Иерархия памяти относится к тем особенностям архитектуры компьютеров, которые
оказывают огромное значение для повышения их производительности.
Для того, чтобы оценить эффективность работы вычислительной системы на реальных
задачах, был разработан фиксированный набор тестов. Наиболее известным из них является
LINPACK – программа, предназначенная для решения системы линейных алгебраических
уравнений с плотной матрицей с выбором главного элемента по строке. LINPACK
используется для формирования списка Top500 – пятисот самых мощных компьютеров мира.
В настоящее время большое распространение получили тестовые программы, взятые из
разных предметных областей и представляющие собой либо модельные, либо реальные
4
промышленные
приложения.
Такие
тесты
позволяют
оценить
производительность
компьютера действительно на реальных задачах и получить наиболее полное представление
об эффективности работы компьютера с конкретным приложением.
Классификация Флинна
Чтобы дать более полное представление о многопроцессорных вычислительных
системах, помимо высокой производительности необходимо назвать и другие отличительные
особенности. Прежде всего, это необычные архитектурные решения, направленные на
повышение производительности (работа с векторными операциями, организация быстрого
обмена сообщениями между процессорами или организация глобальной памяти в
многопроцессорных системах и др.).
Приведем вначале систематику Флинна. В соответствии с ней все компьютеры делятся
на четыре класса в зависимости от числа потоков команд и данных.
1. SISD (Single Instruction Single Data) – одиночный поток команд, одиночный
поток
данных (последовательные компьютеры фон Неймана). К этому классу относятся
последовательные компьютерные системы, которые имеют один центральный процессор,
способный обрабатывать только один поток последовательно исполняемых инструкций.
Примерами компьютеров с архитектурой SISD являются большинство рабочих станций
Compaq, Hewlett-Packard и Sun Microsystems. Это обычные
скалерные, однопроцессорные
системы.
Помимо RISC и CISC компьютеров, архитектура SISD породила еще и
суперскалярной обработкой. Смысл которой – наличие в
одновременно выполнять две и более
чисел (например,
2.
потока
машины с
аппаратуре средств, позволяющих
скалярные операции, т.е. команд обработки пары
процессоры DEC серии Alpha).
SIMD ((Single Instruction Multiple Data) – характеризуются наличием одиночного
команд,
но
множественного
потока
данных.
К
этому
классу
относятся
однопроцессорные, векторно-конвейерные суперкомпьютеры, например Cray – 1и более
современный Cray Y-MP. В этом случае мы имеем дело с одним потоком (векторных) команд,
а потоков данных много; каждый элемент вектора входит в отдельный поток данных.
Эти системы обычно имеют большое количество процессоров, в пределах от 1024 до
16384, которые могут выполнять одну и ту же инструкцию относительно разных данных в
жесткой конфигурации. Единственная инструкция параллельно выполняется над многими
элементами данных. Примерами SIMD машин являются системы CPP DAP, Gamma II и
Quadrics Apemille. Другим подклассом SIMD-систем являются векторные компьютеры.
Векторные компьютеры манипулируют массивами сходных данных подобно тому, как
скалярные машины обрабатывают отдельные элементы таких массивов. Это делается за счет
5
использования специально сконструированных векторных центральных процессоров. Когда
данные обрабатываются посредством векторных модулей, результаты могут быть выданы на
один, два или три такта частотогенератора (такт частотогенератора является основным
временным параметром системы). При работе в векторном режиме векторные процессоры
обрабатывают данные практически параллельно, что делает их в несколько раз более
быстрыми, чем при работе в скалярном режиме. Примерами систем подобного типа является,
например, компьютеры Hitachi S3600.
Вспомним:
Основу конвейерной обработки составляет – одновременное выполнение нескольких
различных этапов одной операции на различных ступенях конвейера.
При выполнении векторной обработки – одна и та же операция применяется ко всем
элементам вектора.
Пример: проект SOLOMON.
К этому же классу ВС относятся матричные процессоры, например знаменитый ILIAC
– IV. Они также имеют векторные команды и реализуют векторную обработку, но не
посредством конвейеров, как в векторных суперкомпьютерах, а с помощью матриц
процессоров.
Машины типа SIMD состоят из большого числа идентичных процессорных элементов,
имеющих собственную память. Все процессорные элементы в такой машине выполняют одну
и ту же программу. Очевидно, что такая машина, составленная из большого числа
процессоров, может обеспечить очень высокую производительность только на тех задачах,
при решении которых все процессоры могут делать одну и ту же работу. Модель вычислений
для машины SIMD очень похожа на модель вычислений для векторного процессора:
одиночная операция выполняется над большим блоком данных.
В отличие от ограниченного конвейерного функционирования векторного процессора,
матричный процессор (синоним для большинства SIMD-машин) может быть значительно
более гибким. Обрабатывающие элементы таких процессоров - это универсальные
программируемые ЭВМ, так что задача, решаемая параллельно, может быть достаточно
сложной и содержать ветвления. Обычное проявление этой вычислительной модели в
исходной программе примерно такое же, как и в случае векторных операций: циклы на
элементах массива, в которых значения, вырабатываемые на одной итерации цикла, не
используются на другой итерации цикла.
Модели вычислений на векторных и матричных ЭВМ настолько схожи, что эти ЭВМ
часто обсуждаются как эквивалентные.
6
3. MIMD (Multiple Instruction Multiple Data) – множественный поток команд и
множественный поток данных.
К этому классу принадлежат не векторные суперЭВМ, но и все многопроцессорные
ВС. Эта архитектура включает все уровни параллелизма, от конвейера операций до
независимых операций и команд. Употребляя термин MIMD надо иметь ввиду не только
много процессоров, но и множество вычислительных процессов, одновременно выполняемых
в ВС.
Машины типа MIMD. Термин "мультипроцессор" покрывает большинство машин типа
MIMD и (подобно тому, как термин "матричный процессор" применяется к машинам типа
SIMD)
часто
используется
в
качестве
синонима
для
машин
типа
MIMD.
В
мультипроцессорной системе каждый процессорный элемент (ПЭ) выполняет свою программу
достаточно независимо от других процессорных элементов. Процессорные элементы, конечно,
должны как-то связываться друг с другом, что делает необходимым более подробную
классификацию машин типа MIMD. В мультипроцессорах с общей памятью (сильносвязанных
мультипроцессорах) имеется память данных и команд, доступная всем ПЭ. С общей памятью
ПЭ связываются с помощью общей шины или сети обмена. В противоположность этому
варианту в слабосвязанных многопроцессорных системах (машинах с локальной памятью) вся
память делится между процессорными элементами и каждый блок памяти доступен только
связанному с ним процессору. Сеть обмена связывает процессорные элементы друг с другом.
Системы со слабой связью, это многомашинные комплексы, в которых отдельные
компьютеры объединяются с помощью либо сетевых средств, либо с помощью общей
внещней памяти.
Базовой моделью вычислений на MIMD-мультипроцессоре является совокупность
независимых процессов, эпизодически обращающихся к разделяемым данным. Существует
большое количество вариантов этой модели. На одном конце спектра - модель
распределенных вычислений, в которой программа делится на довольно большое число
параллельных задач, состоящих из множества подпрограмм. На другом конце спектра модель потоковых вычислений, в которых каждая операция в программе может
рассматриваться как отдельный процесс. Такая операция ждет своих входных данных
(операндов), которые должны быть переданы ей другими процессами. По их получении
операция выполняется, и полученное значение передается тем процессам, которые в нем
нуждаются. В потоковых моделях вычислений с большим и средним уровнем гранулярности,
процессы содержат большое число операций и выполняются в потоковой манере.
4. MISD (Multiple Instruction Single Data) – этот класс долгое время пустовал, более
того, в литературе вы встретите утверждение, что этот класс не представляет практического
7
интереса. Это объясняется тем, что не существовало примеров практической реализации
систем, в которых одни и те же данные обрабатывались бы большим числом процессоров.
Теперь
ситуация
изменилась,
для
найдена
MISD
адекватная
организация
ВС
–
распределенная мультипроцессорная система с общими данными. Наиболее простой
пример такой ВС – обычная локальная сеть ПК, работающая с единой базой данных, когда
много процессоров обрабатывают один поток данных.
Однако надо иметь в виду, что как только все пользователи переключаются на
обработку собственных данных, недоступных для других абонентов сетиMISD система
превращается в систему с множеством потоков команд и множеством потоком данных, т.е.
MIMD архитектуру.
Системы с масссовым параллелизмом
Многие современные супер-ЭВМ представляют собой многопроцессорные системы, в
которых в качестве процессоров используются векторные процессоры или процессоры типа
SIMD. Такие машины относятся к машинам класса MSIMD.
О MSIMD системах говорят иногда, как о сильносвязанных комплексах класса MIMD,
представляющих собой симметричные многопроцессорные серверы с общим полем ОП.
Например, DEC Alpha Server 8200/8400 или SGI Power Chellenge.
Языки программирования и соответствующие компиляторы для машин типа MSIMD
обычно обеспечивают языковые конструкции, которые позволяют программисту описывать
"крупнозернистый" параллелизм. В пределах каждой задачи компилятор автоматически
векторизует подходящие циклы. Машины типа MSIMD, как можно себе представить, дают
возможность использовать лучший из этих двух принципов декомпозиции: векторные
операции ("мелкозернистый" параллелизм) для тех частей программы, которые подходят для
этого, и гибкие возможности MIMD-архитектуры для других частей программы.
Многопроцессорные системы за годы развития вычислительной техники претерпели
ряд этапов своего развития. Исторически первой стала осваиваться технология SIMD. Однако
в настоящее время наметился устойчивый интерес к архитектурам MIMD. Этот интерес
главным образом определяется двумя факторами:
1.
Архитектура MIMD дает большую гибкость: при наличии адекватной
поддержки со стороны аппаратных средств и программного обеспечения MIMD может
работать как однопользовательская система, обеспечивая высокопроизводительную обработку
данных для одной прикладной задачи, как многопрограммная машина, выполняющая
множество задач параллельно, и как некоторая комбинация этих возможностей.
Архитектура
микропроцессорной
MIMD
может
технологии
использовать
на
основе
все
преимущества
строгого
учета
современной
соотношения
8
стоимость/производительность.
В
действительности
практически
все
современные
многопроцессорные системы строятся на тех же микропроцессорах, которые можно найти в
персональных компьютерах, рабочих станциях и небольших однопроцессорных серверах.
Эти машины параллельно выполняют несколько потоков инструкций над различными
потоками данных. В отличие от многопроцессорных SISD-машин, упомянутых выше,
команды и данные связаны, потому что они представляют различные части одной и той же
выполняемой задачи. Например, MIMD-системы могут параллельно выполнять множество
подзадач, с целью сокращения времени выполнения основной задачи. Наличие большого
разнообразия попадающих в данный класс систем, делает классификацию Флинна не
полностью адекватной. Действительно и четырех-процессорный SX-5 компании NEC и
тысяче-процессорный Cray T3E оба попадают в этот класс. Это заставляет искать другой
подход к классификации, иначе описывающий классы компьютерных систем.
Одной из отличительных особенностей многопроцессорной вычислительной системы
является сеть обмена, с помощью которой процессоры соединяются друг с другом или с
памятью. Модель обмена настолько важна для многопроцессорной системы, что многие
характеристики производительности и другие оценки выражаются отношением времени
обработки к времени обмена, соответствующим решаемым задачам. Существуют две
основные модели межпроцессорного обмена: одна основана на передаче сообщений, другая на использовании общей памяти. В многопроцессорной системе с общей памятью один
процессор осуществляет запись в конкретную ячейку, а другой процессор производит
считывание из этой ячейки памяти. Чтобы обеспечить согласованность данных и
синхронизацию процессов, обмен часто реализуется по принципу взаимно исключающего
доступа к общей памяти методом "почтового ящика".
Таким образом, существующие MIMD-машины распадаются на два основных класса в
зависимости от количества объединяемых процессоров, которое определяет и способ
организации памяти и методику их межсоединений.
К первой группе относятся машины с общей (разделяемой) основной памятью,
объединяющие до нескольких десятков (обычно менее 32) процессоров. Сравнительно
небольшое количество процессоров в таких машинах позволяет иметь одну централизованную
общую память и объединить процессоры и память с помощью одной шины. Такой способ
организации со сравнительно небольшой разделяемой памятью в настоящее время является
наиболее популярным. Структура подобной системы представлена на рис. 2.14.
9
Рис. 2.14 Мультипроцессорная система с общей памятью.
Вторую группу машин составляют крупномасштабные системы с распределенной
памятью. Для того чтобы поддерживать большое количество процессоров приходится
распределять основную память между ними, в противном случае полосы пропускания памяти
просто может не хватить для удовлетворения запросов, поступающих от очень большого
числа процессоров. Естественно при таком подходе также требуется реализовать связь
процессоров между собой. На рис. 2.15 показана структура такой системы.
Рис. 2.15 Мультипроцессорная система с распределенной памятью
С ростом числа процессоров просто невозможно обойти необходимость реализации
модели распределенной памяти с высокоскоростной сетью для связи процессоров. С быстрым
ростом производительности процессоров и связанным с этим ужесточением требования
увеличения полосы пропускания памяти, масштаб систем (т.е. число процессоров в системе,
для которых требуется организация распределенной памяти), уменьшается, также как и
уменьшается число процессоров, которые удается поддерживать на одной разделяемой шине и
общей памяти.
Распределение памяти между отдельными узлами системы имеет два главных
преимущества. Во-первых, это эффективный с точки зрения стоимости способ увеличения
10
полосы пропускания памяти, поскольку большинство обращений могут выполняться
параллельно к локальной памяти в каждом узле. Во-вторых, это уменьшает задержку
обращения (время доступа) к локальной памяти.
Наиболее известными системами с общей
памятью (SMP-системами) являются SMP-cервера и рабочие станции на базе процессоров Intel
(IBM, HP, Compaq, Dell, ALR, Unisys, DG, Fujitsu и др.) Вся система работает под управлением
единой ОС (обычно UNIX-подобной, но для Intel-платформ поддерживается Windows NT). ОС
автоматически (в процессе работы) распределяет процессы по процессорам, но иногда
возможна и явная привязка.
Системами с раздельной памятью являются суперкомпьютеры МВС-1000, IBM RS/6000
SP, SGI/CRAY T3E, системы ASCI, Hitachi SR8000, системы Parsytec. Машины последней
серии CRAY T3E от SGI, основанные на базе процессоров Dec Alpha 21164 с пиковой
производительностью 1200 Мфлопс/с (CRAY T3E-1200), способны масштабироваться до 2048
процессоров.
2.7 Концепция кластерных систем
Рисунок 2.16 Кластерная система
LAN – Local Area Network, локальная сеть
SAN – Storage Area Network, сеть хранения данных
Впервые в классификации вычислительных систем термин "кластер" определила
компания Digital Equipment Corporation (DEC).
По определению DEC, кластер - это группа вычислительных машин, которые
связаны между собою и функционируют как один узел обработки информации.
Кластер функционирует как единая система, то есть для пользователя или прикладной
задачи вся совокупность вычислительной техники выглядит как один компьютер. Именно это
и является самым важным при построении кластерной системы.
Первые кластеры компании Digital были построены на машинах VAX. Эти машины
уже не производятся, но все еще работают на площадках, где были установлены много лет
11
назад. И наверное самое важное то, что общие принципы, заложенные при их проектировании,
остаются основой при построении кластерных систем и сегодня.
К общим требованиям, предъявляемым к кластерным системам, относятся:
1.
Высокая готовность
2.
Высокое быстродействие
3.
Масштабирование
4.
Общий доступ к ресурсам
5.
Удобство обслуживания
Естественно, что при частных реализациях одни из требований ставятся во главу угла, а
другие отходят на второй план. Так, например, при реализации кластера, для которого самым
важным является быстродействие, для экономии ресурсов меньше внимания придают высокой
готовности.
В общем случае кластер функционирует как мультипроцессорная система, поэтому,
важно понимать классификацию таких систем в рамках распределения программноаппаратных ресурсов.
Рис. 2.17 Тесно связанная мультипроцессорная система
Рис.2.18 Умеренно связанная мультипроцессорная система
12
Рис.2.19 Слабо связанная мультипроцессорная система
Обычно на PC платформах, с которыми мне приходится работать, используются
реализации кластерной системы в моделях тесно связанной и умеренно связанной
мультипроцессорных архитектур.
Разделение на High Avalibility и High Performance системы
В функциональной классификации кластеры можно разделить на "Высокоскоростные"
(High Performance, HP), "Системы Высокой Готовности" (High Availability, HA), а также
"Смешанные Системы".
Высокоскоростные кластеры используются для задач, которые требуют значительной
вычислительной мощности. Классическими областями, в которых используются подобные
системы, являются:

обработка изображений: рендеринг, распознавание образов

научные исследования: физика, биоинформатика, биохимия, биофизика

промышленность (геоинформационные задачи, математическое моделирование)
и много других…
Кластеры, которые относятся к системам высокой готовности, используются везде, где
стоимость возможного простоя превышает стоимость затрат, необходимых для построения
кластерной системы, например:

биллинговые системы

банковские операции

электронная коммерция

управление предприятием, и т.п....
Смешанные системы объединяют в себе особенности как первых, так и вторых.
Позиционируя их, следует отметить, что кластер, который обладает параметрами как High
Performance, так и High Availability, обязательно проиграет в быстродействии системе,
ориентированной на высокоскоростные вычисления, и в возможном времени простоя системе,
ориентированной на работу в режиме высокой готовности.
13
Проблематика High Performance кластеров
Рис. 2.20 Высокоскоростной кластер
Почти в любой ориентированной на параллельное вычисление задаче невозможно
избегнуть необходимости передавать данные от одной подзадачи другой.
Таким образом, быстродействие High Performance кластерной системы определяется
быстродействием узлов и связей между ними. Причем влияние скоростных параметров этих
связей на общую производительность системы зависит от характера выполняемой задачи.
Если задача требует частого обмена данными с подзадачами, тогда быстродействию
коммуникационного интерфейса следует уделять максимум внимания. Естественно, чем
меньше взаимодействуют части параллельной задачи между собою, тем меньше времени
потребуется для ее выполнения. Что диктует определенные требования также и на
программирование параллельных задач.
Основные проблемы при необходимости обмена данными между подзадачами
возникают в связи с тем, что быстродействие передачи данных между центральным
процессором и оперативной памятью узла значительно превышает скоростные характеристики
систем межкомпьютерного взаимодействия. Кроме того, сильно сказывается на изменении
функционирования системы, по сравнению с привычными нам SMP системами, разница в
быстродействии кэш памяти процессоров и межузловых коммуникаций.
Быстродействие интерфейсов характеризуется двумя параметрами: пропускной
способностью непрерывного потока даных и максимальным количеством самых маленьких
пакетов,
которые
можно
передать
за
единицу
времени.
Варианты
реализаций
коммуникационных интерфейсов мы рассмотрим в разделе «Средства реализации High
Performance кластеров».
14
Проблематика High Availability кластерных систем
Сегодня в мире распространены несколько типов систем высокой готовности. Среди
них кластерная система является воплощением технологий, которые обеспечивают высокий
уровень отказоустойчивости при самой низкой стоимости. Отказоустойчивость кластера
обеспечивается
дублированием
всех
жизненно
важных
компонент.
Максимально
отказоустойчивая система должна не иметь ни единой точки, то есть активного элемента,
отказ которого может привести к потере функциональности системы. Такую характеристику
как правило называют – NSPF (No Single Point of Failure, - англ., отсутствие единой точки
отказа).
Рис. 2.21 Кластерная система с отсутствием точек отказов
При построении систем высокой готовности, главная цель - обеспечить минимальное
время простоя.
Для того, чтобы система обладала высокими показатели готовности, необходимо:

чтобы ее компоненты были максимально надежными

чтобы она была отказоустойчивая, желательно, чтобы не имела точек отказов

а также важно, чтобы она была удобна в обслуживании и разрешала проводить
замену компонент без останова
Пренебрежение любым из указанных параметров, может привести к потере
функциональности системы.
Давайте коротко пройдемся по всем трём пунктам.
Что касается обеспечения максимальной надежности, то она осуществляется путем
использования электронных компонент высокой и сверхвысокой интеграции, поддержания
нормальных режимов работы, в том числе тепловых.
Отказоустойчивость
обеспечивается
путем
использования
специализированных
компонент (ECC, Chip Kill модули памяти, отказоустойчивые блоки питания, и т.п.), а также с
15
помощью технологий кластеризации. Благодаря кластеризации достигается такая схема
функционирования, когда при отказе одного из компьютеров задачи перераспределяются
между другими узлами кластера, которые функционируют исправно. Причем одной из
важнейших
задач
производителей
кластерного
программного
обеспечения
является
обеспечение минимального времени восстановления системы в случае сбоя, так как
отказоустойчивость системы нужна именно для минимизации так называемого внепланового
простоя.
Много кто забывает, что удобство в обслуживании, которое служит уменьшению
плановых простоев (например, замены вышедшего из строя оборудования) является одним из
важнейших параметров систем высокой готовности. И если система не разрешает заменять
компоненты без выключения всего комплекса, то ее коэффициент готовности уменьшается.
Смешанные архитектуры
Рис. 2.22 Высокоскоростной отказоустойчивый кластер
Сегодня часто можно встретить смешанные кластерные архитектуры, которые
одновременно являются как системами высокой готовности, так и высокоскоростными
кластерными архитектурами, в которых прикладные задачи распределяются по узлам
системы.
Проблемы связи процессоров в кластерной системе
Архитектура кластерной системы (способ соединения процессоров друг с другом) в
большей степени определяет ее производительность, чем тип используемых в ней
процессоров. Критическим параметром, влияющим на величину производительности такой
системы, является расстояние между процессорами. Так, соединив вместе 10 персональных
компьютеров, мы получим систему для проведения высокопроизводительных вычислений,
проблема, однако, будет состоять в нахождении наиболее эффективного способа соединения
16
стандартных средств друг с другом, поскольку при увеличении производительности каждого
процессора в 10 раз производительность системы в целом в 10 раз не увеличится. Рассмотрим
для примера задачу построения симметричной 16-ти процессорной системы, в которой все
процессоры были бы равноправны. Наиболее естественным представляется соединение в виде
плоской решетки, где внешние концы используются для подсоединения внешних устройств.
Схема соединения процессоров в виде плоской решетки
При таком типе соединения максимальное расстояние между процессорами окажется
равным 6 (количество связей между процессорами, отделяющих самый ближний процессор от
самого дальнего). Теория же показывает, что если в системе максимальное расстояние между
процессорами больше 4, то такая система не может работать эффективно. Поэтому, при
соединении 16 процессоров друг с другом плоская схема является не эффективной. Для
получения более компактной конфигурации необходимо решить задачу о нахождении
фигуры, имеющей максимальный объем при минимальной площади поверхности. В
трехмерном пространстве таким свойством обладает шар. Но поскольку нам необходимо
построить узловую систему, то вместо шара приходится использовать куб (если число
процессоров равно 8) или гиперкуб, если число процессоров больше 8. Размерность гиперкуба
будет определяться в зависимости от числа процессоров, которые необходимо соединить. Так,
для соединения 16 процессоров потребуется 4-х мерный гиперкуб. Для его построения следует
взять обычный 3-х мерный куб, сдвинуть в еще одном направлении и, соединив вершины,
получить гиперкуб размером 4.
17
Архитектура гиперкуба является второй по эффективности, но самой наглядной.
Используются и другие топологии сетей связи: трехмерный тор, "кольцо", "звезда" и другие.
Архитектура кольца с полной связью по хордам (Chordal Ring)
Наиболее эффективной является архитектура с топологией "толстого дерева" (fat-tree).
Архитектура "fat-tree" (hypertree) предложена Лейзерсоном (Charles E. Leiserson) в 1985 году.
Процессоры локализованы в листьях дерева, в то время как внутренние узлы дерева
скомпонованы во внутреннюю сеть. Поддеревья могут общаться между собой, не затрагивая
более высоких уровней сети.
Работа любой кластерной системы определяется двумя главными компонентами:
высокоскоростным механизмом связи процессоров между собой и системным программным
обеспечением, которое обеспечивает клиентам прозрачный доступ к системному сервису. В
настоящее время широкое распространение получила также технология параллельных баз
данных. Эта технология позволяет множеству процессоров разделять доступ к единственной
базе данных. Распределение заданий по множеству процессорных ресурсов и параллельное их
выполнение позволяет достичь более высокого уровня пропускной способности транзакций,
поддерживать большее число одновременно работающих пользователей и ускорить
18
выполнение сложных запросов. Существуют три различных типа архитектуры, которые
поддерживают параллельные базы данных:

Симметричная многопроцессорная архитектура с общей памятью (Shared Memory
SMP Architecture). Эта архитектура поддерживает единую базу данных, работающую на
многопроцессорном сервере под управлением одной операционной системы. Увеличение
производительности таких систем обеспечивается наращиванием числа процессоров,
устройств оперативной и внешней памяти.

Архитектура с общими (разделяемыми) дисками (Shared Disk Architecture). Это
типичный случай построения кластерной системы. Эта архитектура поддерживает единую
базу данных при работе с несколькими компьютерами, объединенными в кластер (обычно
такие компьютеры называются узлами кластера), каждый из которых работает под
управлением своей копии операционной системы. В таких системах все узлы разделяют
доступ к общим дискам, на которых собственно и располагается единая база данных.
Производительность таких систем может увеличиваться как путем наращивания числа
процессоров и объемов оперативной памяти в каждом узле кластера, так и посредством
увеличения количества самих узлов.

Архитектура без разделения ресурсов (Shared Nothing Architecture). Как и в
архитектуре с общими дисками, в этой архитектуре поддерживается единый образ базы
данных при работе с несколькими компьютерами, работающими под управлением своих
копий операционной системы. Однако в этой архитектуре каждый узел системы имеет
собственную оперативную память и собственные диски, которые не разделяются между
отдельными узлами системы. Практически в таких системах разделяется только общий
коммуникационный канал между узлами системы. Производительность таких систем может
увеличиваться путем добавления процессоров, объемов оперативной и внешней (дисковой)
памяти в каждом узле, а также путем наращивания количества таких узлов.
Таким образом, среда для работы параллельной базы данных обладает двумя важными
свойствами: высокой готовностью и высокой производительностью. В случае кластерной
организации несколько компьютеров или узлов кластера работают с единой базой данных. В
случае отказа одного из таких узлов, оставшиеся узлы могут взять на себя задания,
выполнявшиеся на отказавшем узле, не останавливая общий процесс работы с базой данных.
Поскольку логически в каждом узле системы имеется образ базы данных, доступ к базе
данных будет обеспечиваться до тех пор, пока в системе имеется по крайней мере один
исправный узел. Производительность системы легко масштабируется, т.е. добавление
дополнительных процессоров, объемов оперативной и дисковой памяти, и новых узлов в
системе может выполняться в любое время, когда это действительно требуется.
19
Параллельные базы данных находят широкое применение в системах обработки
транзакций в режиме on-line, системах поддержки принятия решений и часто используются
при работе с критически важными для работы предприятий и организаций приложениями,
которые эксплуатируются по 24 часа в сутки
Download