Файл: Распределенная технология обработки информации (Классификация кластерных вычислений).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.04.2023

Просмотров: 108

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

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

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

Целью работы является анализ технологий использования распределенных вычислений.

Задачи работы:

- анализ технологии кластерных вычислений;

- анализ технологий виртуализации;

- анализ технологий работы с контейнерами.

Объект исследования: распределенные вычислительные системы.

Предмет исследования: технологии оптимизации вычислений в распределенных системах.

1. Анализ кластерных вычислений

1.1 История и понятие кластера

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

     Первым архитектором кластерной технологии был Грегори Пфистер (Gregory F. Pfister), который дал такое определение кластерным системам: «Кластеры — это разновидность параллельных или распределённых системы, которые [3]:

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

- используются в форме единого, унифицированного компьютерного ресурса.

Как правило, различаются следующие основные типы кластерных систем [4]:

- отказоустойчивые кластерные системы (High-availabiliten clusters, HC);

- кластерные системы с возможностью балансировки нагрузки (Load balanced clusters);


- вычислительные система (Сomputing systems clusters);

- grid-технологии.

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

Первый коммерческий проект кластера представил собой ARCNet, реализованный фирмой Datapoint в 1978 г. Данный проект не окупил вложенные средства, вследствие чего строительство кластерных центров не получало развития до 1984 г., когда фирмой DEC был реализован проект VAXcluster на базе ОС VAX/VMS. Проекты ARCNet и VAXcluster были спроектированы не только для проведения совместных вычислений, но и для совместного использования файловой системы и периферии с учётом требований по сохранению целостности и однозначности информационных единиц. VAXCluster (называемый в настоящее время VMSCluster) — представляет собой неотъемлемую компоненту операционной системы HP OpenVMS, которые используют процессоры на базе Alpha и Itanium [12].

Другие кластерные продукты, получившие признание, включают технологии Tandem Hymalaya (1994, класс HA) и IBM S/390 Parallel Sysplex (1994).

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

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


1.2 Преимущества кластерных вычисления в HPC

Построение кластерных компьютеров не является самоцелью, а средством достижения большей эффективности и продуктивности научной работы. Существует определенный тип задач, которые требуют более высоких характеристик производительности, нежели можно получить, посредством использования обычных компьютеров. В указанных случаях из нескольких мощных систем создаются HPC (High Perfomance Computing) кластеры, позволяющие разносить вычисления не только на разные процессоры (если применяются многопроцессорные SMP-системы), но и на разные компьютеры. Для задач, которые поддерживают приемлемые характеристики распараллеливания и не предъявляют высоких требований для взаимодействия параллельных потоков, зачастую принимается решение о реализации HPC кластеров из большого числа однопроцессорных систем небольшой мощности. Часто использование решений подобного типа, при наличии низких стоимостных характеристик, позволяют достигать гораздо больших параметров производительности, чем аналогичные характеристики суперкомпьютеров [8].

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

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


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

Первая из них формулируется таким образом: "Необходимо ли для решения поставленных задач использовать кластеры и технологии параллельных вычислений?" Для ответа на данный вопрос необходимо проводить детальный анализ поставленных задач. Параллельные вычисления являются достаточно специфичной областью математики и далеко не во всех областях использование параллельных вычислений даст необходимые характеристики мощности. Кластерные вычисления использовать неэффективно в случаях [8]:

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

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

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


Пусть в программе доля операций, которые необходимо исполнять последовательно, равна f, где (при этом доля определяется не по статическому количеству строк кода, а количеством операций в процессе исполнения). Крайними случаями в значениях параметра f являются состояние полной параллельности (f=0) и полной последовательности (f=1) исполняемым программам. Таким образом, для оценки прироста производительности S может быть получено на компьютере, на котором установлено p процессоров при известном значении f, можно использовать законом Амдала [9]:

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

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

1.3 Классификация кластерных вычислений

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

Диаграмма классификации кластерных вычислений приведена на рисунке 1.

Рис. 1 - Классификация кластерных вычислений

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

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

2. Обработка двумерных массивов

При выполнении алгоритмов с вложенными циклами, как правило, возможно эффективно распараллелить самые внешние циклы. Однако практически для всех действий с матрицами (операции сложения, умножения, умножения на вектор, прямого произведения) может быть реализован алгоритм с использованием кластеров. Для многих алгоритмов линейной алгебры (но не всех) может быть применено распараллеливания. Некоторые из библиотек подпрограмм (например, LAPACK) также реализованы для кластерных машин. Совершенно неэффективным является использование кластеров для работы с матрицами, имеющими низкую размерность (к примеру, 3x3). Есть возможность переработки алгоритма для реализации возможности по одновременной обработке нескольких (к примеру, 5000) матриц для проведения операций обращения, поиска собственных чисел и т.д. При росте размера матриц возрастает эффективность работы программы, при этом растут требования к памяти, используемой для хранения матриц [7].