Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСЫ / Parallelnye_vychislenia.doc
Скачиваний:
294
Добавлен:
15.02.2016
Размер:
410.62 Кб
Скачать

8. Понятие балансировки нагрузки процессов. Статическая и динамическая балансировка.

Масштабируемость задачи.

Масштабируемость задачи – это пропорциональное увеличение объема задачи с увеличением числа процессоров.

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

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

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

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

Если предположить, что f не обязательно константа в законе Амдаля, а может уменьшаться при увеличении p, то теоретически можно получить неограниченное ускорение S, несмотря на наличие последовательного участка. Например, если , то

S ≤

и при стремлении p к бесконечности мы можем получить пропорциональное ускорение S(p) ≈ a . p, где a < 1.0.

Балансировка алгоритма задачи.

Балансировка алгоритма задачи – это обеспечение равномерной (примерно одинаковой) вычислительной нагрузки процессоров.

Алгоритм задачи из нашего примера - поэлементного сложения массивов будет сбалансирован при 2)-ом способе распределения элементов.

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

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

Балансировка нагрузки (Load Balancing) применяется для оптимизации выполнения распределённых (параллельных) вычислений, путем равномерной нагрузки вычислительных узлов. При неравномерной нагрузки балансировка должна обеспечивать механизм переноса (migration – миграцию) части вычислений с наиболее загруженных вычислительных узлов на менее загруженные.

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

Кроме того, в случае неоднородности вычислительных систем необходимо учесть, что:

  • разные вычислительные узлы могут обладать разной производительностью;

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

Статическая и динамическая балансировки

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

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

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

  • Оценка загрузки каждого процесса.

  • Принятие решений о балансировке.

  • Перемещение данных.

Оценка загрузкипроцесса может быть выполнена несколькими способами.

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

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

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

Критерий должен:

  • Определить момент возникновения дисбаланса загрузки.

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

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

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

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

Перемещение объектов

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

Соседние файлы в папке ГОСЫ