Алгоритмы работы распределенных систем

Содержание

Слайд 2

План Балансировка нагрузки Выбор координатора Модели консистентности Создание общего состояния Распределенные блокировки

План

Балансировка нагрузки
Выбор координатора
Модели консистентности
Создание общего состояния
Распределенные блокировки

Слайд 3

Балансировка нагрузки Дисбаланс уменьшает эффективность вычислений Самый медленный процессор параллельной схемы

Балансировка нагрузки

Дисбаланс уменьшает эффективность вычислений
Самый медленный процессор параллельной схемы заканчивает свою

работу последним
Все остальные в это время простаивают
Балансировка нагрузки - равномерное распределение нагрузки на процессоры
Слайд 4

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

Характеристики загруженности процессоров

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

на узле (workload)‏
Логична, когда процессоры не перегружены
Средняя загруженность процессора (load average)‏
Количество процессов, которые были готовы к выполнению или выполнялись в течение интервала времени (1минута, 5 минут, 15 минут)‏
Чем больше процессов выполняется, тем меньше времени уделяется каждому процессу
Эффективная загруженность процессора
Отношение средней загруженности процессора к производительности процессора
Более быстрый процессор выполняет одну и ту же работу быстрее, чем более медленный
Слайд 5

Методы балансировки нагрузки Статические Распределение работы между процессорами выполнятся на этапе

Методы балансировки нагрузки

Статические
Распределение работы между процессорами выполнятся на этапе запуска программ
Динамические
Распределение

выполняется в процессе работы программ
Слайд 6

Алгоритмы статической балансировки нагрузки Круговой алгоритм (round robin) Задачи запускаются по

Алгоритмы статической балансировки нагрузки

Круговой алгоритм (round robin)
Задачи запускаются по очереди

на каждом процессоре, который удовлетворяет необходимым требованиям
Стохастический алгоритм
задачи запускаются на случайно выбранном процессоре
Распределение данных и функций
На этапе запуска определяется оптимальное количество данных и операций, которые будет выполнять каждый процессор процессор
Распределение на основании целевой функции
Задачи запускаются на том узле, для которого целевая функция имеет экстремум
Слайд 7

Эффективность статического распределения Эффективно при малом времени работы программ При большом

Эффективность статического распределения

Эффективно при малом времени работы программ
При большом времени накапливается

дисбаланс нагрузки
Не требует специальной поддержки программ и операционной системы
Используется в системах пакетного режима для Beowulf кластеров
Слайд 8

Методы динамической балансировки нагрузки Централизованная схема Децентрализованная схема Балансировка на основе

Методы динамической балансировки нагрузки

Централизованная схема
Децентрализованная схема
Балансировка на основе миграции процессов
Требуют специальных

возможностей от программного обеспечения или операционной системы
Слайд 9

Централизованная схема Один процессор – главный Остальные – рабочие На главном

Централизованная схема

Один процессор – главный
Остальные – рабочие
На главном поддерживается очередь задача
Задачи

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

Децентрализованная схема Несколько главных процессоров На первом этапе инициализация заданий Далее

Децентрализованная схема

Несколько главных процессоров
На первом этапе инициализация заданий
Далее каждый процессор выполняет

балансировку по централизованной схеме
Более эффективна, чем централизованная схема – меньше узких мест
Слайд 11

Балансировка на основании миграции процессов Процессы во время выполнения мигрируют между

Балансировка на основании миграции процессов

Процессы во время выполнения мигрируют между процессорами

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

Оптимизация использования ресурсов Вводится количественная характеристика использования ресурсов Вводится целевая функция,

Оптимизация использования ресурсов

Вводится количественная характеристика использования ресурсов
Вводится целевая функция, которая принимает

большие значения при увеличении использования ресурса
Процессы перемещаются (запускаются) на тех процессорах, для которых целевая функция наименьшая
Слайд 13

Целевая функция Должна включать все количественные характеристики использования всех ресурсов Характеристики

Целевая функция

Должна включать все количественные характеристики использования всех ресурсов
Характеристики использования ресурсов

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

Безразмерные характеристики использования ресурсов Ресурсы – память, процессор, сеть, диск Каждый

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

Ресурсы – память, процессор, сеть, диск
Каждый ресурс имеет

свою количественную характеристику
Процессор – эффективная загруженность
Память – объем свободной памяти
Сеть – объем передаваемой информации
Безразмерность обеспечивается введением отношения текущего значения ресурса к его максимально-допустимому значению
Память – объем памяти машины
Процессор – максимальная эффективная загрузка
Слайд 15

Вид целевой функции F – цена возможного состояния Степенная функция –

Вид целевой функции

F – цена возможного состояния
Степенная функция – очень быстро

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

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

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

Слайд 17

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

Выбор координатора

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

равноправных – координатора (инициатора)‏
Это позволяет динамически реализовать централизованные схемы
Применение
Протокол NetBIOS - координатор выбирается для службы имен
Сеть Token Ring – одна машина выбирается координатором для обмена маркером
Слайд 18

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

Условия

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

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

Алгоритм задиры (bully algorithm) 1982 Процесс i обнаружил пропажу координатора и

Алгоритм задиры (bully algorithm) 1982

Процесс i обнаружил пропажу координатора и

отправляет сообщение E о начале выборов всем узлам (с большим номером)‏
Если процесс i не получил ни от кого ответа A в течение интервала времени T, то он назначает себя координатором и отправляет всем узлам (с меньшим номером) сообщение С – выбран новый координатор
Если процесс j получил сообщение о начале выборов E (от процесса с меньшим номером) то но отвечает ему сообщением A и запускает алгоритм для себя
Если процесс i получил ответ A от узла j, то значит, что узел j имеет больший номер и может стать координатором. Если в течение интервала времени T не было получено сообщения С, алгоритм повторяется через интервал времени T1.
При появлении нового процесса он запускает алгоритм для себя
Процесс с максимальным номером становится координатором
Слайд 20

Пример Узел 2 обнаружил потерю координатора Отправляет сообщение узлам 3,4,5 Узлы

Пример

Узел 2 обнаружил потерю координатора
Отправляет сообщение узлам 3,4,5
Узлы 3 и 4

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

Кольцевой алгоритм (1977)‏ Узел i обнаружил потерю координатора, он отправляет сообщение

Кольцевой алгоритм (1977)‏

Узел i обнаружил потерю координатора, он отправляет сообщение E

со своим номером узлу с номером i+1 и если нет подтверждения, то узлу с номером i+2 и т.д.
Если узел j не встретил в E сообщении своего номера, то он добавляет туда свой номер и отправляет его дальше
Если узел j встретил в E сообщении свой номер, то значит E сообщение обошло кольцо и максимальный номер в нем – номер координатора. Узел j меняет тип сообщения на C и отправляет его дальше
После того, как C сообщение обошло все узлы, оно уничтожается и все узлы знают номер координатора
Слайд 22

Пример кольцевого алгоритма

Пример кольцевого алгоритма

Слайд 23

Количество операций

Количество операций

Слайд 24

Синхронизация времени Лампортовские метки – определение раньше-позже для определенной последовательности событий Достаточно для многих проблем

Синхронизация времени

Лампортовские метки – определение раньше-позже для определенной последовательности событий
Достаточно для

многих проблем
Слайд 25

Метки Лампорта Поддерживается счетчик событий В начальном состоянии от равен 1

Метки Лампорта

Поддерживается счетчик событий
В начальном состоянии от равен 1
После каждого события

счетчик увеличивается на 1
Если одно событие произошло раньше другого, то Лампортовская метка более раннего события будет меньше
Слайд 26

Пример

Пример

Слайд 27

Синхронизация в распределенных системах Доступ к общим ресурсам в сети требует

Синхронизация в распределенных системах

Доступ к общим ресурсам в сети требует синхронизации

так же как и в случае общей памяти
Общий диск
Общая распределенная память
Проблемы
Нет действительно общих ресурсов, они только виртуальные
Нет общего состояния
Нет общего времени
Другой тип параллелизма
Алгоритмы должны работать на каждом узле (процессе)
Возможность выхода из строя частей системы
Слайд 28

Взаимоисключающий доступ По аналогии с общей памятью Есть некоторый общий ресурс

Взаимоисключающий доступ

По аналогии с общей памятью
Есть некоторый общий ресурс (блок файловой

системы)‏
Его может изменять только один процесс
Необходимо обеспечить блокировку, которая бы давала возможность защитить доступ к ресурсу
Типы алгоритмов блокировки
Централизованный (CLM)‏
С передачей маркера (TLM)‏
Распределенный менеджер блокировок (DLM)‏
Слайд 29

Централизованный алгоритм Один из процессов выбирается координатором Все доступы к общему

Централизованный алгоритм

Один из процессов выбирается координатором
Все доступы к общему ресурсу выполняются

через координатора
Для доступа к ресурсу процессы посылают запрос координатору
Если ресурс свободен координатор отправляет сообщение о возможности доступа
Если ресурс занят запрос ставится в очередь
При освобождении ресурса отправляется запрос о возможности доступа первому в очереди
Слайд 30

Пример работы централизованного менеджера блокировок

Пример работы централизованного менеджера блокировок

Слайд 31

Особенности CLM Преимущества Просто реализовать Недостатки Единая точка сбоя Плохо масштабируется

Особенности CLM

Преимущества
Просто реализовать
Недостатки
Единая точка сбоя
Плохо масштабируется
Возможность возникновения узкого места в плане

производительности
Слайд 32

Алгоритм Token Ring Создается логическое кольцо процессов По кольцу передается маркер

Алгоритм Token Ring

Создается логическое кольцо процессов
По кольцу передается маркер
Блокировку захватывает тот,

кто получает маркер
При освобождении блокировки маркер передается дальше
Слайд 33

Особенности Преимущества Простой и обеспечивает взаимоисключающий доступ Недостатки Ненадежный Если маркер

Особенности

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

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

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

Распределенный менеджер блокировок

Каждый узел может обмениваться с остальными
Возможны три типа сообщений
REQUEST
QUEUED
GRANT
Центральным

узлом для блокировки является узел, захвативший блокировку
Узлы могут быть в трех состояниях
Удержание блокировки
Ожидания
Свободное состояние
Слайд 35

Алгоритм работы Каждый узел выполняет общий алгоритм

Алгоритм работы

Каждый узел выполняет общий алгоритм

Слайд 36

Распределенный захват блокировки Алгоритм захвата блокировки Узел i, который желает захватить

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

сообщение REQUEST всем остальным n-1 узлам (multicast)‏
Все узлы отвечают i-му n-1 сообщением, которые могут быть следующего типа
GRANT – разрешение захвата - ответ узла, который не удерживает блокировку
QUEUED - информация, что запрос поставлен в очередь на узле, который захватил блокировку
После получения n-1 сообщения узел i выполняет следующие действия
Если все сообщения были типа GRANT, то узел i считается владельцем блокировки
Если одно сообщение типа QUEUED, то узел ждет сообщения типа GRANT
Слайд 37

Конфликт при захвате Если после отправки сообщения REQUEST узел получает сообщение

Конфликт при захвате

Если после отправки сообщения REQUEST узел получает сообщение REQUEST

с узла j (или других узлов) до того, как получены все сообщения от других узлов
Каждое сообщение содержит Лампортовскую метку времени
Если метка полученного сообщения меньше, чем локальная, то узлу j отправляется сообщение GRANTED
Иначе запрос ставится в очередь и отправляется сообщение QUEUED
Слайд 38

Распределенное удержание блокировки Алгоритм работы узла в состоянии удержания блокировки Узел

Распределенное удержание блокировки

Алгоритм работы узла в состоянии удержания блокировки
Узел j захватил

блокировку и поддерживает очередь запросов на захват
Если получено сообщение REQUEST от i-го узла, то
Установить в очередь запрос от узла i
Отправить узлу i сообщение QUEUED
Слайд 39

Освобождение распределенной блокировки Алгоритм освобождения блокировки Если в очереди i-го узла

Освобождение распределенной блокировки

Алгоритм освобождения блокировки
Если в очереди i-го узла есть

запросы на захват, он отправляет сообщение GRANTED первому в очереди и удаляет его из очереди
Слайд 40

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

Восстановление после сбоя узла

Вышел из строя узел, который не удерживает блокировку
Количество

участников уменьшается на 1
Вышел из строя узел, который удерживает блокировку
Этот узел отключается от операций с общим ресурсом (fence)‏
Восстанавливается состояние общего ресурса из журнала
Количество участников уменьшается на 1
Все очереди уничтожаются
Запускается новый процесс захвата блокировки
Слайд 41

Сравнение алгоритмов блокировки

Сравнение алгоритмов блокировки

Слайд 42

Консистентность Консистентность – поддерживание общих ресурсов в распределенной системе в непротиворечивом

Консистентность

Консистентность – поддерживание общих ресурсов в распределенной системе в непротиворечивом состоянии
Пример


Эмуляция общей памяти на распределенной системе
Работа с общими дисковыми ресурсами
Все изменения, сделанные одним узлом не должны привести к некорректном состоянию данных
Слайд 43

Модели консистентности Строгая (последовательная) консистентность Процессорная консистентность (ослабленная консистентность)‏ Слабая консистентность Косистентность захвата-освобождения

Модели консистентности

Строгая (последовательная) консистентность
Процессорная консистентность (ослабленная консистентность)‏
Слабая консистентность
Косистентность захвата-освобождения

Слайд 44

Процессорная консистентность Все операции чтения записи одного процессора должны выполняться строго

Процессорная консистентность

Все операции чтения записи одного процессора должны выполняться строго последовательно,

но порядок операций разных процессоров может меняться
Реализуется путем передачи данных пакетами (блоками)‏
Слайд 45

Строгая (последовательная) консистентность Все операции чтения-записи общего ресурса должны выполняться в

Строгая (последовательная) консистентность

Все операции чтения-записи общего ресурса должны выполняться в строго

в той последовательности, в которой поступил запрос (как в случае машины с общей памятью)‏
Реализуется по централизованной схеме
Не эффективна
Слайд 46

Слабая консистентность Доступ разделяется на операции чтения-записи и операции синхронизации. Все

Слабая консистентность

Доступ разделяется на операции чтения-записи и операции синхронизации. Все операции

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

Косистентность захвата-освобождения Доступ к ресурсу разделяется на операции захвата и освобождения

Косистентность захвата-освобождения

Доступ к ресурсу разделяется на операции захвата и освобождения
После

захвата (GET) можно эксклюзивно обращаться к ресурсу
После освобождения (PUT) ресурс может захватить другой процесс
Два подхода
Агрессивный подход – PUT синхронизирует данные
Ленивый подход - GET синхронизирует данные
Слайд 48

Другие модели консистентности Консистентность областей Ресурс разбивается на области и для

Другие модели консистентности

Консистентность областей
Ресурс разбивается на области и для каждой области

используется своя модель консистентности
Консистентность структур данных
С каждой структурой данных связывается своя модель консистентности
Слайд 49

Алгоритмы сохранения общего консистентного состояния (snapshot)‏ Общее состояние запись данных распределенной файловой системы Checkpoint распределенной программы

Алгоритмы сохранения общего консистентного состояния (snapshot)‏

Общее состояние
запись данных распределенной файловой

системы
Checkpoint распределенной программы
Слайд 50

Алгоритм Ченди-Лампорта Любой процесс распределенной системы может инициировать создание слепка Инициатор

Алгоритм Ченди-Лампорта

Любой процесс распределенной системы может инициировать создание слепка
Инициатор передает сообщение

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