Решение задачи о назначениях в распределенной вычислительной системе

УДК 004

РЕШЕНИЕ ЗАДАЧИ О НАЗНАЧЕНИЯХ В РАСПРЕДЕЛЕННОЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЕ

А. А. Костюков, П. П. Макарычев

SOLVING THE DESTINATION PROBLEM IN A DISTRIBUTED COMPUTING SYSTEM

A. A. Kostyukov, P. P. Makarychev

Аннотация. Актуальность и цели. Решение задачи распределения входящих заявок по обработчикам в теории и практике балансировки сетевой нагрузки является одним из основных аспектов успешности создания и функционирования отказоустойчивой и высокопроизводительной распределенной вычислительной системы. Вследствие обширной кластеризации вычислительных машин проблема балансировки нагрузки является актуальной. Цель данного исследования - разработка нового алгоритма распределения нагрузки в кластере, обеспечивающего прирост качества балансировки и уменьшение количества отказов системы. Материалы и методы. Решение задачи балансировки нагрузки в кластере компьютеров осуществлено с использованием имитационного моделирования реальной системы, что позволило выработать оптимальную стратегию распределения задач по обработчикам в распределенной вычислительной системе. Концептуальное моделирование системы выполнено с использованием нотации IDEF3, разработка комплекса программ осуществлена на языке R. Результаты. Разработан алгоритм динамического распределения заявок в кластере компьютеров. Рассматривается применимость представленного алгоритма для успешного распределения заявок по обработчикам, приводится пример возможного выигрыша в производительности распределенной вычислительной системы, снижении количества отказов в обслуживании заявок. Выводы. Применение разработанного метода распределения нагрузки в распределенной вычислительной системе позволяет добиться повышения доступности системы, а также понижения среднего времени отклика. Количество отброшенных заявок уменьшается.

Ключевые слова: алгоритмы назначения, задача о назначениях, распределенные вычислительные системы.

Abstract. Background. The decision problem of distribution of incoming orders for processors in the theory and practice of NLB, is one of the key aspects of successful creation and operation of a fault-tolerant, high-performance distributed computing system. As a consequence of extensive clustering of computers, the problem of load balancing is relevant. The purpose of this study - to develop a new algorithm for load balancing in a cluster, ensuring the quality of balancing growth and reduce the number of system failures. Materials and methods. Solution of load balancing problem in a cluster of computers achieved through the use of mathematical and algorithmic simulation of a real system, which allowed to develop an optimal strategy for the distribution of tasks processors in a distributed computing system. Modelling the distribution was carried out in a specially designed software in the language R, and the prototyping using notation IDEF3. Results. The article describes the algorithm dynamically allocating the distribution of tasks in a cluster of computers. We consider the applicability of the algorithm for the successful distribution of the task handler, and gives an example of a possible gain in performance over time, and the number of ser-

vice failures. Conclusions. Application of the developed method of load balancing in a distributed computing system allows for increasing system availability as well as reducing the average response time. The number of applications dropped decreases.

Key words: algorithms appointment, assignment problem, distributed computing systems.

Введение

В настоящее время актуальность балансировки нагрузки обусловлена повсеместной распространенностью сети Интернет и локальных сетей. Это подтверждается большим количеством выходящих статей на эту тему [1-3]. Стоит отметить также существовавшую в теории и практике конфигурирования вычислительных систем проблему десяти тысяч единовременных подключений (10К), в настоящий момент перешедшую в проблему 10U (10 миллионов подключений одновременно), которая подробно описана в [4].

Проблема решена на данный момент только частично. Решение задачи повышения производительности, как правило, достигается путем распараллеливания входящей нагрузки на множество потоков. Однако это порождает глобальную задачу выравнивания нагрузки на серверном кластере компьютеров. Некоторые ограничения на производительность распределенной вычислительной системы (РВС) сформулированы в теореме Брюера [5]. Согласно теореме в РВС невозможно обеспечить одновременное выполнение трех основных требований: целостности, доступности и надежности.

Постановка задачи о распределении нагрузки в РВС

Предположим, что в неоднородной РВС существует к узлов обработки запросов. Эти узлы объединяются в один пул балансировщиком нагрузки, который распределяет входящие заявки по обработчикам (рис. 1).

Рис. 1. Схема распределенной вычислительной системы

На рис. 1 представлены: R - входящий поток заявок (в последующем эксперименте используется поток Пуассона); b - балансировщик нагрузки системы; n1... nk - узлы обработки заявок; d1... dm - сервера данных для узлов. Также на рисунке представлены четыре узких места РВС, время прохождения которых влияет на отклик. Зона i0 - период отправки заявки пользователем и доставки ее в балансировочный узел (доступность). Зона i1 - отрезок времени после назначения заявки определенному обработчику. Зона i2 -время запроса и/или передачи информации от сервера данных к узлу, и наоборот. Зона i3 - период синхронизации информации между серверами данных для поддержания их в актуальном состоянии (целостность). Нагрузка на узлы обработки заявок носит динамический характер.

Требуется задать эффективный алгоритм распределения заявок балансировщиком, чтобы нагрузка распределялась как можно более равномерно по узлам обработки. Требуется найти соответствие запросов и узлов таким образом, чтобы расходы процессорного времени были минимальными. Ввиду высокой интенсивности поступления заявок, а также неоднородности кластерных узлов, для решения задачи предлагается стратегия комбинирования двух алгоритмов. Похожее поведение описывается в работе [6]. В процессе мониторинга системы на первом этапе используется циклический алгоритм распределения нагрузки, имеющий временную сложность 0(1). На втором этапе мониторинга используется алгоритм распределения Куна - Манкреса [7]. Этот алгоритм в определенной реализации имеет сложность O(n3).

На диаграмме рис. 2 показаны внутренние механизмы РВС, другими словами, внутреннее устройство балансировщика нагрузки и основные этапы его работы: получение заявки, подготовка заявки к обработке, передача заявки в обработку, принятие результата обработки, отправка результата клиенту. Единица работы (unit of work) № 1 выполняет прием заявки на обработку от клиента, поток объектов L1 переносит заявку в единицу работы № 2, которая готовит заявку к обработке в системе. Поток объектов (заявок) L2 отправляет заявку в единицу работы № 3, которая отвечает за принятие решений о назначении задачи на обработку. После решения о назначении заявки на обработку определенному узлу потоки объектов L4, L5, L6, L7 или L8 отправляют задачу в обработку на определенном узле РВС через перекресток J1. В единицах работы № 4, 5, 6 или 7 производится непосредственная обработка заявки. Декомпозиция данного типа единиц работы представлена PFDD-диаграммой на рис. 3.

После осуществления обработки заявки старшие стрелки L9, L10, L11 или L12 отправляют сырые данные ответа для пользователя через перекресток J2 (Junction 2) и старшую стрелку L13 в единицу работы № 9, отображающую подготовку конечного ответа для клиента. Далее поток объектов L11 переносит готовый ответ в единицу работы № 8 для отправки клиенту.

Таким образом, концептуальная модель РВС, балансировщика нагрузки и типового узла обработки информации известны. Далее следует решение задач сбора данных и разработка имитационной модели РВС.

Рис. 2. ГОБРЗ-диаграмма РВС

Получение заявки на обработку 11 Отметка времени ПриСьГКА 12 Решение задачи 13 Отметка времени решения задачи

1,1.1 1.1.2 1.1.3 1.1.4

Отправка разницы результирующего и начального времени

1.1.5

Рис. 3. Декомпозиция выполнения обработки заявки и сбора статистики

Решение задачи распределения заявок по узлам РВС

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

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

Состояние РВС после k циклов обработки заявок определяется неотрицательной матрицей Н размерности k X k. Элемент матрицы е1 ^ соответствует расходам процессорного времени на обработку заявки в j -м цикле ] -м узлом:

V -(, ^2,..., V/,..., у*).

После всех циклов обработки заявок можно сформировать матрицу

Н =

4 ... VI ... Укк.

Предположим, что РВС содержит пять узлов и в момент времени характеризуется матрицей

"26 15 26 26 15"

37 19 37 37 19

60 60 100 60 60

27 6 57 27 6

30 25 100 30 25

элементы которой характеризуют затраты времени на обработку заявок (мс).

При решении задачи распределения заявок по узлам методом Куна [7] получим следующее распределение заявок по узлам в очередном цикле обработки:

Нт -

[1^3], [2^2], [35], [5^4].

Таким образом, назначаемый вновь маршрут распределения заявок по узлам имеет вид, изображенный на рис. 4. Столбы соответствуют циклам обработки заявок, строки - узлам обработки заявок. На пересечении строк и столбцов указано время, затрачиваемое на обработку заявок. Стрелки направлений обозначают порядок, в котором распределяются узлы в новом «динамическом маршруте».

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

VI У2 УЗ

-1 26 15 А 26 <5

-г 37 / 37 \ 19

-3 / 60 60 100 60 \ 60 \

•4 27 6 57 27 6 /

-5 30 25 100 / 30 25

Рис. 4. Построение маршрута распределения задач

Анализ результатов

Применение метода динамического распределения позволяет более эффективно распределить нагрузку в серверном кластере по сравнению с циклическим алгоритмом и другими используемыми для балансировки алгоритмами. Для проведения численных экспериментов разработаны математическая модель и программа для имитационных экспериментов. Программа обеспечивает задание распределения заявок, конфигурацию оборудования, количество заявок к обработке. В табл. 1 представлено поведение тестируемых алгоритмов при обработке потока заявок с распределением Пуассона. Значения в ячейках таблицы соответствуют количеству отброшенных заявок. Количество заявок во входном потоке изменялось от 100 до 20 000.

Таблица 1

Результаты эксперимента с алгоритмами

Количество заявок Циклический алгоритм Весовой циклический алгоритм Случайный алгоритм Алгоритм динамических весов

100 3 1 5 1

1000 15 14 13 12

10000 65 33 119 21

20000 97 70 160 65

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

Циклический Весовой Случайный Используемые алгоритмы Рис. 5. Количество отброшенных заявок за сессию работы системы

Анализируя график на рис. 6, можно отметить, что на начальном и серединном этапе предложенный динамический алгоритм распределения заявок обеспечивает довольно приемлемое время нахождения заявки в системе. Даже после продолжительного периода пребывания количества запросов в системе нагрузка в кластере стабильна (наблюдаются характерные пики и спады времени обработки).

о 5

m

О 200 400 600 800 1000

Поступление заявок (время системы), с

Рис. 6. График изменений времени нахождения заявки в системе для циклического алгоритма

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

о 5

в)

О 200 400 600 800 1000

Поступление заявок (время системы), с

Рис. 7. График изменения времени нахождения заявки в системе для циклического алгоритма

Заключение

Представленный в статье алгоритм предоставляет выигрыш для производительности и доступности системы. Также нужно отметить и то, что, разрабатывая математическое и программное обеспечение для управления балансировкой сетевой нагрузки в кластере, при выборе алгоритма назначения необходимо обратить пристальное внимание на частные потребности РВС. Балансируя нагрузку в РВС со слабым потоком заявок, допустимо использовать эвристические алгоритмы (циклический или весовой циклический), однако если поток заявок довольно мощный или нагрузка на кластер является нестабильной, необходимо применять математические методы, данные для вычисления брать из постоянного мониторинга системы. Тем самым можно достичь баланса в проектировании балансировки нагрузки кластерных систем.

Список литературы

1. Костюков, А. А. Алгоритмы и механизмы распределения задач в сетях обработки данных / А. А. Костюков // Технические науки - от теории к практике : сб. ст. по материалам ЬШ Междунар. науч.-практ. конф. - Новосибирск : СибАК, 2015. -№ 12 (48). - С. 24-30.

2. Бершадский, А. М. Исследование стратегий балансировки нагрузки в системах распределенной обработки данных / А. М. Бершадский, А. К. Клепиков, Л. С. Ку -рилов, А. Г. Финогеев // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2009. - № 4. - C. 38-48.

3. Привалов, А. Н. Автоматическая балансировка нагрузки в гибридных вычислительных сетях / А. Н. Привалов, А. К. Клепиков // Известия Тульского государственного университета. Технические науки. - 2013. - № 9-2. - C. 188-194.

4. Костюков, А. А. Стратегии конфигурирования вычислительного кластера / А. А. Костюков // Инновации в науке : сб. ст. по материалам LII Междунар. науч.-практ. конф. - Новосибирск : СибАК, 2015. - № 12 (49), ч. I. - С. 55-60.

5. Brewer, E. A. Towards robust distributed systems / E. A. Brewer // Proceedings of the XIX annual ACM symposium on Principles of distributed computing. - Portland, OR : ACM, 2000.

6. Безяев, В. С. Решение задачи о назначениях в автоматизированных системах оперативного управления на основе тензорного исчисления / В. С. Безяев, П. П. Ма-карычев // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2015. - № 3 (35). - С. 77-85.

7. Kuhn, H. W. The Hungarian Method for the assignment problem / H. W. Kuhn // Naval Research Logistics Quarterly. - 1955. - Vol. 2. - Р. 83-97.

Костюков Антон Александрович аспирант,

Пензенский государственный университет

E-mail: antononrails@gmail.com

Макарычев Петр Петрович

доктор технических наук, профессор, заведующий кафедрой математического обеспечения и применения ЭВМ, Пензенский государственный университет

E-mail: makpp@yandex.ru

Kostyukov Anton Alexandrovich postgraduate student, Penza State University

Makarychev Petr Petrovich doctor of technical sciences, professor, head of sub-department of computer application and software, Penza State University

УДК 004 Костюков, А. А.

Решение задачи о назначениях в распределенной вычислительной системе / А. А. Костюков, П. П. Макарычев // Модели, системы, сети в экономике, технике, природе и обществе. - 2016. - № 3 (19). - С. 138-146.