МУЛЬТИАГЕНТНАЯ СИСТЕМА ДИНАМИЧЕСКОЙ БАЛАНСИРОВКИ РАСПРЕДЕЛЕННОЙ ИМИТАЦИОННОЙ
МОДЕЛИ
А.А. Козлов (Пермский государственный университет) Научный руководитель - к.ф.-м.н., доцент Е.Б. Замятина (Пермский государственный университет)
При выполнении сложных распределенных имитационных моделей часто приходится сталкиваться с неравномерностью нагрузки на вычислительные узлы, что может привести к большим временным затратам при выполнении имитационного эксперимента. В работе предложен метод распределения нагрузки, использующий интеллектуальных агентов.
Введение
В настоящее время существует тенденция широкого использования высокопроизводительных вычислений, соответственно возникает необходимость в применении программных систем, поддерживающих распределенное имитационное моделирование. Распределенное имитационное моделирование предполагает, что компоненты имитационной модели располагаются на различных вычислительных узлах, используя при выполнении имитационного эксперимента вычислительные ресурсы сразу нескольких узлов компьютерной сети (или многопроцессорной ЭВМ). Компоненты имитационной модели обмениваются сообщениями, которые передаются по линиям связи между вычислительными узлами.
Однако гетерогенность вычислительных узлов и линий связи между ними, а также гетерогенность самой имитационной модели могут привести к возникновению дисбаланса нагрузки. При возникновении дисбаланса часть вычислительных узлов может простаивать, в то время как другие будут перегружены, и компоненты имитационной модели будут ожидать освобождения вычислительных ресурсов в течение непредсказуемого интервала времени. Следовательно, выигрыш от применения вычислительных ресурсов всех узлов вычислительной системы, на которой проводится имитационный эксперимент, сводится к нулю. В связи с этим возникает необходимость в динамическом перераспределении ресурсов, перемещении компонентов модели с одного узла на другие с целью восстановления баланса. Восстановление баланса позволит сократить временные затраты и в конечном итоге приведет к сокращению времени проведения имитационного эксперимента.
Разработано большое количество алгоритмов и стратегий балансировки (например, ЯСЬ стратегия). Однако методы восстановления баланса, предложенные различными авторами, работают оптимально только для конкретных имитационных моделей. Попытки создать универсальный алгоритм лишь частично решают проблему. Суть в том, что все эти алгоритмы не учитывают специфические особенности имитационной модели.
На кафедре математического обеспечения ВС Пермского государственного университета ведутся работы по созданию распределенной системы имитации. Подсистема балансировки является частью этой системы. Чтобы избежать недостатков, присущих ранее рассмотренным подсистемам балансировки, предложено реализовать балансировку, основанную на знаниях. Для различных классов имитационных моделей разработаны правила, учитывающие особенности имитационных моделей этого класса, топологию имитационной модели и компьютерной сети, на которой выполняется имитационный эксперимент, и т.д. Правила хранятся в базе знаний и управляют алгоритмом балансировки [2].
Однако управление является централизованным, все правила хранятся в единой базе знаний.
Чтобы ресурсы распределенной вычислительной среды в наибольшей степени были использованы с целью оптимизации времени выполнения алгоритма балансировки, было предложено использовать мультиагентный подход. Агенты успешно используются в распределенных системах, обеспечивают масштабирование и расширение функциональности системы и самоорганизуются [3].
Рассмотрим более подробно представление имитационной модели, постановку задачи балансировки и принятые решения.
Представление имитационной модели
Описание имитационной модели в Triad состоит из трех слоев: слоя структур (STR), слоя рутин (ROUT) и слоя сообщений (MES). Таким образом, модель в системе Triad можно определить как M={STR,ROUT,MES}.
Слой структур представляет собой совокупность объектов, взаимодействующих друг с другом посредством посылки сообщений. Каждый объект имеет полюсы (входные Pin и выходные Pout), которые служат соответственно для приема и передачи сообщений. Слой структур можно представить графом. В качестве вершин графа следует рассматривать отдельные объекты. Дуги графа определяют связи между объектами.
Объекты действуют по определенному алгоритму поведения, который описывают с помощью рутины (rout). Рутина представляет собой последовательность событий ei, планирующих друг друга (eieE, i=1^n, E - множество событий, множество событий рутины является частично упорядоченным в модельном времени). Выполнение события сопровождается изменением состояния qk объекта. Состояние объекта определяется значениями переменных varj рутины (varj g Var, j=1^m, Var - множество переменных рутины). Таким образом, система имитации является событийно-ориентированной. Рутина, также как и объект, имеет входные (Prin и выходные Prout) полюса. Входные полюса служат, соответственно, для приема сообщений, выходные полюса - для их передачи. В множестве событий рутины выделено входное событие ein. Все входные полюса рутины обрабатываются входным событием. Обработка выходных полюсов осуществляется остальными событиями рутины. Для передачи сообщения служит специальный оператор out (out <сообщение> through <имя полюса>). Совокупность рутин определяет слой рутин ROUT.
Слой сообщений (MES) предназначен для описания сообщений сложной структуры. Система Triad реализована таким образом, что пользователь может описать только один слой. Так, если возникает необходимость в исследовании структурных особенностей модели, то можно описать в модели только слой структур.
Алгоритмом имитации называют объекты, функционирующие по определенным сценариям, и синхронизирующий их алгоритм.
Для сбора, обработки и анализа имитационных моделей в системе Triad.Net существуют специальные объекты - информационные процедуры и условия моделирования. Информационные процедуры и условия моделирования реализуют алгоритм исследования.
Информационные процедуры ведут наблюдение только за теми элементами модели (событиями, переменными, входными и выходными полюсами), которые указаны пользователем. Если в какой-нибудь момент времени имитационного эксперимента пользователь решит, что следует установить наблюдение за другими элементами или выполнять иную обработку собираемой информации, он может сделать соответствующие указания, подключив к модели другой набор информационных процедур. Информационные процедуры являются единственным средством системы для одновременно-
го доступа к элементам модели, принадлежащим разным объектам. Именно с помощью информационных процедур пользователь может осуществить взаимодействие с объектами модели во время имитации.
Условия моделирования анализируют результат работы информационных процедур и определяют, выполнены ли условия завершения моделирования.
Подсистема анализа модели обеспечивает получение информации по заранее сформулированному запросу, а не ограничивает пользователя строго регламентированным набором собираемых данных. Такой подход к сбору информации позволяет избежать избыточности собранной информации или того, что она окажется недостаточной.
Информационные процедуры и условия моделирования используют и для сбора информации о поведении модели, о ее характеристиках и в подсистеме балансировки для сбора информации о модели.
Задача балансировки
Задача балансировки ставится как задача отображения неизоморфных связных графов, B: TM ^ NG , где TM - множество графов моделей, NG - множество графов -конфигураций компьютерной сети. Граф G е NG , G = {C, Ed}, определяется множеством вычислительных узлов C и множеством ребер Ed, обозначающих линии связи, NG как граф, содержащий все возможные (допустимые) графы G в качестве подграфов. Граф M е TM , M = {U, V, W}, задает имитационную модель, U - множество входных и выходных полюсов, V - множество вершин, которые отображают отдельные компоненты имитационной модели, W - связи между этими компонентами. Следует отметить, что одному вычислительному узлу Cj е G может соответствовать любое число вершин (в том числе и нуль) вершин графа M.
Итак, необходимо расположить объекты имитационной модели по узлам вычислительной сети таким образом, чтобы нагрузка на вычислительных узлах была приблизительно равной, при этом затраты на коммуникацию между узлами также должна быть минимизирована. Перераспределение ресурсов происходит динамически, т. е. в процессе выполнении имитационного прогона.
Алгоритм балансировки должен быть оптимален для любой имитационной модели. Однако создание такого алгоритма является достаточно сложной задачей, так как данный алгоритм должен учитывать специфику работы каждой конкретной модели. Имитационные модели могут значительно отличаться друг от друга своими характеристиками: структурой, интенсивностью обмена информацией между отдельными компонентами, алгоритмами поведения этих компонентов. В работе предложен метод балансировки, основанный на интеллектуальных агентах. Система балансировки является подсистемой системы имитации Triad.Net и состоит из множества интеллектуальных агентов нескольких типов (на каждом вычислительном узле находятся по одному агенту каждого типа), каждый из которых решает свою собственную задачу балансировки нагрузки узла на котором он сам находится, а вместе они решают общую задачу балансировки.
Данный подход основан на расширяемых знаниях агентов о сети и модели имитации, что позволяет выполнять балансировку для различных моделей имитации и различных топологий вычислительной сети. Далее представлено описание системы TriadBalance - мультагентной системы динамической балансировки распределенной имитационной модели.
Описание TriadBalance
Система TriadBalance является управляемой, так как предоставляет возможность настройки правил балансировки. Система является динамической, т. е. балансировка
выполняется прямо во время процесса имитации. Это позволяет своевременно реагировать на всевозможные изменения поведения моделируемой системы и в случае необходимости выполнить перераспределение объектов имитационной модели. Для системы имитации Triad.Net данная особенность обязательна, так как система позволяет изменять имитируемую модель прямо во время процесса имитации, и заранее нельзя точно знать, какие нагрузки выпадут на тот или иной узел или канал сети. Иначе возможно возникновение тупикового состояния системы, например, если канал будет перегружен, то это приведет к перезапуску системы, следовательно, к неполному результату процесса имитации и большим дополнительным расходам.
Система TriadBalance является мультиагентной, т.е. система состоит из множества агентов, выполняющих определенные для них задачи, и вместе реализующие балансировку распределенной имитационной модели. Это позволяет:
• распределить нагрузку системы на узлы сети, так как агенты работают на разных узлах сети;
• ускорить выполнение балансировки, так как агенты, взаимодействующие с определенными частями системы имитации, находятся в тех же узлах сети, что и обрабатываемые ими части;
• унифицировать систему балансировки для различных систем имитации, т.е. при перенесении системы балансировки на другую систему имитации (или при изменении данной) появляется возможность переписывать не полностью всю систему, а только некоторых ее агентов (например, непосредственно работающих с системой имитации). Это позволяет распараллелить процесс разработки системы и облегчить процесс ее сопровождения.
Данные свойства проявляют себя особенно сильно при реализации крупных имитационных моделей, с большим числом объектов, и широкой сетью, в которой выполняется имитация.
Описание процесса балансировки
Перед запуском системы проводится предварительная статическая балансировка модели, т.е. определяется начальное расположение объектов модели на вычислительных узлах сети.
Хотя пользователь знает, как будет вести себя система в тот или иной период времени моделирования, он, скорее всего, не сможет однозначно определить постоянное выгодное расположение объектов. Поэтому следующим шагом является настройка системы балансировки. Пользователь, основываясь на знаниях о модели (он знает, как должна работать модель), модифицирует правила балансировки. На основании данных правил агенты будут принимать решение о переносе объектов модели с одного вычислительного узла сети на другой.
После внесения правил балансировки пользователь запускает систему балансировки на каждом узле сети, которая начинает сам процесс балансировки.
После запуска системы TriadBalance агент анализа начинает опрашивать систему сбора статистики для получения данных о состоянии соответствующего вычислительного узла, а также собирает информацию через информационные процедуры системы имитации Triad.Net, для получения данных о состоянии модели на данном вычислительном узле (рис. 1). Получив необходимую информацию, агент анализа начинает исследовать ее на основании правил балансировки введенных пользователем. Исследование правил построено на принципах работы экспертных систем и баз знаний.
В результате проведенного исследования агенты анализа могут получить два возможных итога - перераспределение объектов не требуется или требуется. В первом случае агент анализа снова запрашивает информацию о системе и заново повторяет
анализ системы. Во втором случае агент анализа сообщает агенту распределения о принятом решении, который, в свою очередь, на основании пользовательских правил принимает решение о том, какие именно объекты модели необходимо переносить, а также выбирает целевые вычислительные узлы сети.
Рис. 1. Структура системы балансировки
Приняв соответствующее решение, агенты распределения, используя разработанные волновые алгоритмы, синхронизируются. После синхронизации они останавливают процесс моделирования, отправив сообщение системе имитации о необходимости останова процесса. Далее они запрашивают необходимые объекты у системы (в виде потоков сериализованных данных) и передают полученные объекты агентам распределения узлов, на которые необходимо переместить эти объекты. Получив объект, агент распределения отдает его системе имитации для включения его в данный вычислительный узел. После завершения агенты распределения, синхронизируясь, запускают систему. После этого повторяется сбор информации о системе, на основании которой снова проводится анализ для решения задачи о перераспределении объектов системы. Синхронизация и взаимодействие агентов расположенных на разных узлах сети выполняется с использованием волновых алгоритмов.
Реализация агента анализа
Агент анализа собирает информацию о системе в целом (т.е. о состоянии вычислительных узлов и каналов связи между ними, а также о состоянии системы имитации) через определенные интервалы времени. После этого ему необходимо решить, требуется или нет перераспределение объектов системы имитации на вычислительных узлах сети. Принятие данного решения можно разбить на следующие этапы.
А. Этап анализа пользовательских правил. На этом этапе агент анализа считывает предварительно подготовленные пользователем правила их XML-файла. При считывании правил из файла агент выполняет следующий алгоритм.
1. Считывает текущее правило и получает значения его параметров.
2. Используя технологию .Net Reflection, создает объект, соответствующий типу метаправила.
string xnode_meta = xnode.Attributes["meta"].Value;
Type xnode_type = Type.GetType(xnode_meta);
MetaRule xnode_metarule=(MetaRule)Activator.CreateInstance(xnode_type);
3. Используя технологию .Net Reflection, проверяет соответствие параметров правила параметрам соответствующего типа метаправила.
4. Добавляет полученное правило в коллекцию правил.
5. Переходит к следующему правилу и повторяет алгоритм.
После выполнения описанной процедуры переходим к следующему этапу.
В. Этап построения внутреннего представления о системе в целом. Агент анализа обладает собственным представлением о строении системы имитации и сети вычислительных узлов. Данное представление создается во время процесса анализа. Оно состоит из представления о вычислительных узлах сети и из представления об объектах имитационной модели, а также из множества связей между вычислительными узлами сети, между объектами модели имитации и между объектами и узлами.
При этом агент имеет представление о свойствах каждого из известных ему элементов. Например, агент имеет представление о загруженности вычислительных узлов, о загрузке вносимой каждым объектом модели имитации, о пропускной способности каналов связи между вычислительными узлами сети, о временной последовательности взаимодействий между объектами системы.
Построение внутреннего представления происходит на различных этапах работы агента анализа, в течение всего времени процесса балансировки. Сначала агент строит представление о собственном узле и объектах, на нем располагающихся (рис. 2).
Рис. 2. Начальное представление агента о системе
Далее, во время анализа правил, агент получает знания о существовании других вычислительных узлов и объектах модели имитации (рис. 3).
Новые знания об окружающей его системе он также получает от агента распределения, который сообщает ему об объектах переносимых с других узлов и на другие узлы (рис. 4).
Таким образом, в течение всего процесса балансировки у агента анализа расширяется представление о системе, и, следовательно, он начинает по-другому анализировать складывающиеся ситуации.
После процесса построения (или изменения) внутреннего представления о системе агент переходит к следующему этапу.
Загрузка процессора
Загрузка процессора
Загрузка процессора
Загрузка процессора
Загрузка процессора
Загрузка процессора
Загрузка процессора
Рис. 3. Новое представление агента о системе
Загрузка процессора
Загрузка процессора
Загрузка процессора
Объект N
Passive
Загрузка процессора
Другой вычислительный узел
А А
Загрузка процессора
ч^ Объект ^ |—Active—I
Рис. 4. Окончательное представление агента о системе
С. Этап анализа системы на основе правил балансировки. Агент анализа переходит к этапу анализа системы. Задача этого этапа - на основе правил и внутреннего представления системы определить, необходимо ли выполнять перераспределение объектов модели имитации. Все правила имеют определенную структуру, описанную в метаправилах системы, определяющих также и способ обработки правил.
Приведем пример: в системе описано метаправило с форматом «IF LOADING @MachineName MORE @Range THEN DISTRIBUTE FROM @MachineName», и параметрами @MachineName и @Range, которое означает, что если загрузка процессора на узле @MachineName больше значения @Range, то необходимо перераспределить часть объектов с вычислительного узла @MachineName на другие вычислительные узлы. Пользователь на основе данного метаправила создает правило балансировки «IF LOADING MyMachineName MORE 60 THEN DISTRIBUTE FROM MyMachineName».
Данный набор метаправил - общий и для агента анализа, и для агента распределения, только первый из данных правил извлекает знания о необходимости переноса объектов имитационной модели вообще, а второй - о конкретных переносимых объектах модели и целевых вычислительных узлах. Также агент анализа на основе этих правил извлекает знания для внутреннего представления системы, например, он «узнает» о других вычислительных узлах и о других объектах, которые описаны в правилах.
Волновой алгоритм синхронизации агентов распределения
Перед началом перераспределения агентов в сети необходимо выбрать одного из агентов распределения, который за это будет отвечать. Данный алгоритм относится к классу волновых алгоритмов выбора лидера [4]. Для выбора лидера среди агентов распределения не подходят известные алгоритмы, поэтому нами был разработан алгоритм выбора подходящий для разрабатываемой системы.
Данный алгоритм основан на предположении, что к началу выполнения алгоритма все процессы находятся в одном состоянии, т. е. все агенты распределения готовы выполнить остановку системы.
Каждый агент посылает всем своим соседям сообщение о том, что он хочет быть лидером. Сообщение должно содержать время посылки MessageSignalTime (вплоть до миллисекунд), идентификатор StarterIdent агента распределения (таким образом, каждый агент распределения должен иметь свой собственный уникальный для сети идентификатор DistributionAgentIdentifier), который изначально послал это сообщение, и идентификатор LastIdent агента, который переслал это сообщение. Получая такие сообщения, агент распределения сравнивает время посылки своего сообщения Time со временем MessageSignalTime посылки сообщения, которое пришло на его узел от другого агента распределения. Если значение Time больше значения MessageSignalTime, то агент становится проигравшим. Если значения равны, то сравниваются идентификаторы DistributionAgentIdentifier и StarterIdent, если первое значение больше, то агент становится проигравшим. Если после этих сравнений агент не стал проигравшим, то он увеличивает счетчик Counter на единицу. Если значение Counter стало равно Distribu-tionAgentsCount (общее количество агентов распределения в сети, которое должен знать каждый агент распределения) минус один и при этом агент еще не проигравший, то агент становится выигравшим. После этого агент устанавливает свой идентификатор в поле LastIdent сообщения и пересылает его всем своим соседям (кроме тех от которого сообщение пришло и от которого сообщение отправлено).
Const D: integer = количество агентов в сети;
Var DistributionAgentIdent: string = идентификатор агента;
Computers - все соседи агента;
Messages - полученные сообщения;
State - текущее состояние;
Time - время отправки сообщения;
Counter - счетчик полученных сообщений.
Procedure StartSending() - отправка сообщения
Var Message - сообщение
Begin
Message.MessageSignalTime = Time.Now; //Текущее время Message.Starterldent = DistributionAgentIdent; Message.LastIdent = DistributionAgentIdent; Foreach (CurrentComputer Computers) Begin
SendMessage(Message, CurrentComputers); //Отправка сообщения End; End;
Procedure GiveMessage(message) - прием сообщения
Var
Begin
If (message Messages) Begin
If (message.MessageSignalTime < Time) State = States.Lost;
Else if (message.MessageSignalTime = Time и DistributionAgentIdent > mes-sage.StarterIdent)
State = States.Lost; Counter = Counter + 1; Messages.Add(message);
Foreach (CurrentComputer Computers \ {messages.StarterIdent, message.LastIdent}) Begin
SendMessage(Message, CurrentComputers); //Отправка сообщения
End;
End;
End;
Выигравший агент распределения посылает сообщение останова системы, после подтверждения которого он рассылает сообщение всем своим соседям о том, что можно начать перенос объектов, а те, в свою очередь, пересылают его всем своим соседям. Далее выполняется перенос объектов с незагруженного. После завершения переноса каждый из проигравших агентов посылает сообщение лидеру о том, что он завершил перенос. Получив DistributionAgentsCount - 1 таких сообщений, лидер сообщает системе о том, что необходимо запустить ее. На этом заканчивается перенос объектов системы.
Заключение
В работе представлен мультиагентный подход к решению задачи балансировки распределенной имитационной модели. В мультиагентной системе балансировки TriadBalance выделено два типа когнитивных агентов: агент анализа вычислительных узлов сети и модели имитации, агент распределения. Этот подход дает возможность использовать систему балансировки для самых разнообразных имитационных моделей, не привязываясь только к определенному их классу, так как позволяет настраивать
процесс балансировки на конкретную имитационную модель и сеть, в которой происходит процесс моделирования.
На данном этапе была выполнена следующая работа: изучены различные подходы к решению задачи балансировки, разработана структура и архитектура системы балансировки, определены метаправила процесса балансировки, разработано внутреннее представление о системе имитации, подробно разработана архитектура агента анализа, разработан и реализован волновой алгоритм синхронизации агентов распределения, реализована работа агента анализа, с частичным построением внутреннего представления системы.
В дальнейшем предстоит:
• разработать волновой алгоритм для синхронизации агентов анализа;
• реализовать полное построение представления о системе имитации;
• определить способ организации когнитивного агента распределения;
• реализовать агента распределения;
• определить модель взаимодействия агентов с внешними системами: подсистемой сбора статистики и системой имитации Triad.Net.
• реализовать взаимодействие с внешними системами.
Литература
1. Миков А.И., Замятина Е.Б., Фатыхов А.Х. Система оперирования распределенными имитационными моделями сетей телекоммуникаций. Труды Второй Всероссийской научной конференции «Методы и средства обработки информации». М.: Изд-во МГУ, 2003 г.
2. Миков А.И.., Замятина Е.Б., Осмехин К.А. Метод динамической балансировки процессов имитационного моделирования. / В кн. «Материалы Всероссийской научно-технической конференции «Методы и средства обработки информации МСО-2005», Москва, 3 октября 2005 г.
3. Cao Jiannong, Sun Yudong, Xianbin Wang and Sajal K. Das «Scalable load balancing on distributed web servers using mobile agents», Department of Computer Science and Engineering, The university of Texas at Arlington, Arlington, TX 76019-0015, USA 14 May, 2003.
4. Tel G. Introduction to Distributed Algorithms. Cambridge University Press, 1994.