Модель представления Grid системы
Модель для представления Grid инфраструктуры (мета-модель Grid) в нашей системе изображена на рисунке 2.
Рисунок 2: Мета-модель Grid
Модель Grid состоит из множества элементов (ModelElement), связанных между собой. Доступно два вида элементов – соединение (Connection) и Grid-элемент (GridElement). Grid-элементом может быть кластер, брокер, пользователь, хранилище данных и т.п. Соединения предназначены для передачи данных между Grid-элементами. У каждого элемента есть строковый атрибут реализация (implementation). Значение данного атрибута указывает на имя Java-класса, определяющего поведение элемента. Каждый элемент может быть параметризован. Параметр представляет собой пару строк (имя, значение) и может иметь дочерние параметры. Дочерние параметры используются, например, при задании свойств алгоритмов распределения задач. Предположим, для элемента мы выбираем реализацию “кластер” и для кластера определяем значение параметра “schedulerClass” как “BackfillLocal”. В данном случае реализация “BackfillLocal” может также требовать задания значений параметров. В этом случае параметр “schedulerClass” будет иметь дочерние параметры.
Таким образом, модель Grid-системы определяется в несколько этапов (рисунок 3). Сначала мы создаем Grid элементы, из которых будет состоять Grid система. Затем задаем топологию сети путем создания связей между элементами и сетевыми соединениями. И на последнем этапе выбираем реализацию каждого элемента и определяем значения параметров для конкретной реализации.
В системе представлены основные элементы, необходимые для создания моделей Grid. Это – кластер, брокер, поток задач, сетевое соединение. Базовый набор реализованных алгоритмов распределения для кластера и брокера включают:
BackfillLocal | реализация алгоритма Backfill (алгоритм обратного заполнения) для кластера. Задание с меньшим приоритетом может быть запущено вне очереди, но только в том случае, если оно не будет мешать запуску более приоритетных заданий |
BestFitLocal | реализация алгоритма “наилучший подходящий” для кластера. Для данного текущего количества свободных узлов подбирается задача, наиболее близкая по ширине |
FirstFitLocal | реализация алгоритма “первый подходящий” для кластера. Размещается задача из начала очереди. Если узлов для запуска задачи не достаточно, то размещения не происходит |
RandomFitGlobal | “случайный подходящий” для брокера. Для текущей задачи случайным образом выбирается кластер из множества подходящих |
и другие.
В качестве примера рассмотрим, каким образом в системе моделирования будет определяться архитектура, изображенная на рисунке 4(a).
(а) Система
(b) Модель
Рисунок 4: Пример определения Grid системы
Пользователи, брокер и кластеры представляются с помощью Grid-элементов, с именами Student, Professor, Broker, ClusterA, ClusterB соответственно – рисунок 4(b). Для задания соединений используются элементы Connection с именами Student2Broker, Professor2Broker, Broker2ClusterA, и Broker2ClusterB. В таблице 1 перечислены параметры и имена классов, реализующих поведение элементов.
ClusterA | SimpleCluster | |
Nodes | 256 | |
Speedup | 1 | |
schedulerClass | ”BackfillLocal“ | |
ClusterB | SimpleCluster | |
Nodes | 3200 | |
Speedup | 1 | |
schedulerClass | ”BackfillLocal“ | |
Student | WorkloadTaskFlow | |
Wfile | ”student.sfw.zip“ | |
startDelay | 0 | |
Professor | WorkloadTaskFlow | |
Wfile | ”professor.sfw.zip“ | |
startDelay | 0 | |
Broker | SimpleBroker | |
schedulerClass | ”RandomFitGlobal“ | |
Student2Broker | DelayedConstantConnection | |
Count | 512000 | |
Period | 1 | |
Professor2Broker | DelayedConstantConnection | |
Count | 2048000 | |
Period | 1 | |
Broker2ClusterA | DelayedConstantConnection | |
Count | 6144000 | |
Period | 1 | |
Broker2ClusterB | DelayedConstantConnection | |
Count | 1024000 | |
Period | 1 |
Для кластеров мы используем реализацию SimpleCluster. В качестве параметров необходимо указать количество узлов – параметр nodes и коэффициент ускорения – параметр speedup. Ускорение определяет, насколько быстрее, по сравнению с некоторым эталонным кластером, задачи будут выполняться на данном кластере. В нашем примере мы предполагаем, что задачи выполняются с одинаковой скоростью на обоих кластерах. Параметр schedulerClass определяет алгоритм распределения задач локальным планировщиком. В примере мы задаем алгоритм BackfillLocal, представляющий собой реализацию алгоритма Backfill .
Для пользователей ”студент“ и ”профессор“ мы используем реализацию WorkloadTaskFlow.
Данная реализация позволяет порождать задачи в моделируемой системе на основе собранных статистических данных использования реально существующей среды Grid. В качестве параметров задается имя файла в формате ”workload“ – параметр wfile и время до начала порождения первой задачи – параметр startDelay. Период позволяет активизировать различные потоки задач в различное время.
Брокер задается реализацией SimpleBroker. Единственным параметром является алгоритм распределения задач глобальным планировщиком – параметр schedulerClass. Мы указываем значение RandomFitGlobal. Это реализация алгоритма ”случайный из подходящих“ – для очередной задачи брокер выбирает множество кластеров, которые могут выполнить данную задачу, и затем случайным образом выбирает один кластер из данного множества.
Для сетевых соединений Student2Broker, Professor2Broker, Broker2ClusterA и Broker2ClusterB мы используем реализацию DelayedConstantConnection. Это простая реализация сетевого соединения позволяет передавать заданное количество данных с некоторой задержкой. В нашем примере это 512, 2048, 6144 и 1024 kb/sec соответственно.
После того, как описание модели завершено, трансляция данного описания, и последующая компиляция исходного кода происходит автоматически. На выходе получается выполняемая программа-симулятор, которую можно запустить и получить результат в виде профиля выполнения.
Для визуализации результатов система предоставляет готовые шаблоны, отображающие:
- загруженность системы – общую и с разбивкой по отдельным кластерам
- время ожидания задач в очереди – среднее и пиковое с разбивкой по классам задач и по отдельным кластерам
- пропускной способности – как по количеству задач, так и используя интегральную оценку