МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ
УДК 519.21
А.С.Сорокин
СТРУКТУРНОЕ МОДЕЛИРОВАНИЕ НАДЕЖНОСТИ ТЕХНОЛОГИЧЕСКИХ СИСТЕМ С ИСПОЛЬЗОВАНИЕМ СКЕЛЕТОНОВ
Введение. Проектирование технологических систем с использованием высокоуровневых конструкций имеет явные преимущества. Это известно в структурном параллельном и распределенном программировании, где часто последовательные подзадачи структурируют до параллельного узла [1-4]. Технический план решения вслед за этими видами описания имеет своей целью получение высокоуровневого описания структуры вычислений, которое может быть легко переформировано для определения хорошей привязки задач к вычислительным ресурсам. Пользователь заинтересован в достижении соответствующей производительности операций до тех пор, пока не будут удовлетворены ограничения по использованию элементов среды выполнения.
Тем не менее, хотя композиционные языки и позволяют компоновать подзадачи, они не обеспечивают механизм оценки того, превосходит ли новая версия данной модели применяемая ранее.
Кроме того, языки, подходящие для моделирования технологических систем, такие как алгебры стохастических процессов, обычно не структурированы в данном смысле, и не имеют лингвистического аппарата для выражения композиции подзадач. Целью данной работы является ликвидация этого разрыва путем автоматической генерации моделей алгебры процессов из структурных описаний приложения. Это таким образом, позволит пользователю компилировать свои технические приложения в моделях алгебры процессов, подходящих для оценки надёжности технологических систем посредством анализа детерминированной характеристики или анализа переходных процессов для адекватности модели по вероятности. Свое внимание сосредоточим на результатах, которые могут быть получены посредством марковского стационарного анализа моделей алгебры процессов [5-7]. Будем использовать алгоритмические скелетоны [8] как пример структурного композиционного языка. В качестве алгебры процессов используется стохастическая алгебра процессов для оценки надёжности.
1.Теоретические основы. Представим краткое описание используемой стохастической алгебры процессов и метода структурного параллельного и распределенного программирования,
основанного на алгоритмических скелетонах [810].
1.1 Стохастическая алгебра процессов для оценки надёжности. PEPA - это алгебра марковских процессов. В ней каждому действию сопоставляется экспоненциально распределенная случайная переменная, представляющая собой длительность процесса технологии. Модели составляются из компонентов, которые взаимодействуют посредством действий. Синтаксис языка следующий:
S ::= (a,r).S | S + S | С,
(префикс, селекция и имя компонента)
P ::= P >L< P | P/L | С
(кооперация, абстракция и имя компонента)
Здесь S обозначает последовательный компонент, а P - моделируемый компонент, который выполняется параллельно. С означает константу, обозначающую либо последовательный компонент, либо модельный компонент как представлено определением. С, означает константы, определяющие последовательные компоненты. Префикс (a,r).S задает компоненту назначенное первым действие: он будет иметь действие типа a и продолжительность, определяемую экспоненциальным распределением с параметром r. Оператор селекции (+) разрешает действия его двух операндов. Завершенное первым действие отличает одно из них: другое не учитывается. Система будет вести себя как производный результат развития выбранного компонента. Структура представляется моделью, использующей комбинатор кооперации (> L <) . В PEPA больше нет дополнительных действий и это заимствовано из CSP-подхода параллельного составления: компоненты синхронизируются по тем действиям во множестве кооперации L, которые разрешены обоими компонентами. Синхронизация ограниченной мощности, означает, что синхронизация не может ускорить выполнение компонента. Таким образом, длительность общих действий определяется минимумом случайных переменных, соотносимых с каждым из участвующих дейст-
вий. В некоторых случаях компонент пассивен по отношению к синхронизируемому действию, что означает, что он будет участвовать в той мере, в какой ожидается его компонентом-партнером. Это действие обозначается специальным символом ^ , т.е. (а, ^). Когда множество кооперации L пусто, то используется условное обозначение 2. Операция абстракции, обозначаемая P/L , позволяющая типам действий, чей тип находится в L, быть замененными специальным типом т, который обозначает закрытое или скрытое действие.
Описание языка представлено в источнике [9] в виде структурированной на мелкие шаги операционной семантики, которая отображает модели PEPA на марковский процесс с непрерывным временем.
1.2 Понятие алгоритмических скелетонов. Скелетонный подход для проектирования техно-ло-гических параллельных систем предполагает, что сложность параллельного программирования может быть ограничена путем сдерживания в оп-ределен-ных пределах подсистем, посредством которых может проявляться параллелизм. Ограничение сложности достигается путем сведения ее к небольшому числу архитектурно независимых конструкций, известных как “алгоритмические скелетоны”. Каждая спецификация скелетона включает в себя “логическое поведение” схем параллельного вычисления, в то время как детали его конкретной реализации компонуются и скрываются. Обеспечение скелетонно-ориентирован-ной методологии программирования одновременно повышает уровень абстракции, которым опе-
рирует пользователь и обеспечивает систему планирования ключевой информации о временных и структурных взаимодействующих схемах. Ответственность за использование этой информации переходит от пользователя к компилятору или к системе поддержки исполнения программ. Получение такой детальной информации из эквивалентной программы, передающей специализированные (ad — hoc) сообщения, в общем
случае невыполнимо. В работе показываем, каким образом структурная информация может быть использована для формирования моделей производительности приложения в PEPA.
2. Представление структурированных приложений с помощью скелетонов. Для автоматического формирования моделей надёжности заданное приложение сначала должно быть представлено в форме, выражающей его сущность.
В данной работе адаптируется схемноориентированный подход, основанный на понятии алгоритмических скелетонов - системы, которая была разработана для улучшения и упрощения структурной разработки распределенных и параллельных приложений. Если представленные конструкции могут использоваться непосредственно пользователем модели, они предназначены для применения в качестве внутреннего интерфейса и для автоматического формирования моделей надёжности из базирующихся на скелетонах распределенных приложений. Для упрощения детального рассмотрения автоматизации сосредоточим внимание на следующих трех базовых скелетонах.
Рис. 1. Схема потоков данных приложения с вложенными Pipeline и дублированиями задач.
Скелетон Pipeline (Канал). Скелетон Pipeline располагает множество компонентов последовательно, так что элементы данных, поступая в Pipeline, обрабатываются в каждом из этих компонентов по очереди (в том порядке, в каком компоненты определены) перед тем как конечный результат покидает Pipeline. Для определения данного скелетона будем использовать следующую конструкцию:
pipe(<количество компонентов>); .
Компоненты, входящие в скелетонную конструкцию, могут быть как скелетонными компонентами (результаты которых иерархически вложены), или заданными компонентами (в которых
элементы данных обрабатываются). Заданный компонент определяется следующей конструкцией:
1аък(<имя компонентам, <интенсивность>); . Здесь <интенсивность> - это интенсивность, с которой обрабатывается каждый из элементов данных, поступающих в заданный компонент. Она используется в процессе моделирования вычислительной производительности задачи.
Скелетон Deal (Распределитель). Скелетон Deal дублирует данный заданный компонент параллельно, так что элементы данных, поступая в Deal, могут быть обработаны одним из дублирующих компонентов, до того, как конечный ре-
зультат покидает Deal. Заданный компонент, который получает заданный элемент данных, выбирается согласно правилу кругового распределения данных. Для определения данного скелетона используем следующую конструкцию: deal(<чuсло дублирований>, <имя компонентам, <интенсивность>); .
Скелетон Farm (Ферма). Скелетон Farm похож на Deal: данный задачный компонент дублируется параллельно, так что элементы данных, поступая в Farm, обрабатываются одним из компонентов. Отличие в том, что процесс выбора задачного компонента, который должен получить заданный элемент данных, невозможно прогнозировать, т. к. он динамически управляем более ранними вычислениями. В этом случае следующий элемент данных посылается одной из задач-преемников, завершающих обработку ранее назначенных ей элементов данных. Для определения Farm используем конструкцию вида: farm(<чuсло дублирований>, <имя компонентам, <интенсивность>); .
Рассмотрим конкретный пример применения этих конструкций. Представим технологическую систе-му, подобную той, которая изображена на рис. 1. Здесь имеем 6-ти стадийный Pipeline на высшем уровне (компоненты Pipeline чаще упоминаются как “стадии”). Некоторые из этих стадий являются задачными компонентами (напри-
мер, стадии 1 и 6), в то время как другие - иерархические скелетонные вложения (например, стадия 2 - Farm, в то время как стадия 3 - Deal).
Ниже показано представление технологической системы, основанное на скелетонах. Это описание является иерархическим — каждое поддерево описывается в глубину, слева направо поперек одного и того же уровня поддерева. К следующему поддереву переходим на том же уровне только после того, как все предыдущие поддеревья были описаны полностью, т. е. больше нет скелетонных вложений с неполными описаниями задач.
Представление технологической системы,
изображенной на рис. 1 и 2, основанное на скелетонах, имеет вид: pipe(6);
task("task", 1.0); farm(3, "task", 3.0); deal(2, "task", 2.0); farm(3, "task", 3.0); deal(3, "task", 3.0); task("task", 1.0); .
Весь пример рассматриваем как пошаговую детализацию описания технологической системы, где мы представляем технологическую систему на высшем уровне и продолжаем уточнение до тех пор, пока описания самого низкого уровня не будут состоять только из задачных компонентов.
Рис. 2. Дерево иерархии скелетонов, которое соответствует примеру системы, показанной на рис. 1.
Для каждого структурированного приложения иерархическое дерево структуры данных внутренне поддерживается средством формирования модели. На эту структуру данных будем ссылаться как на дерево иерархии скелетонов (показанное на рис. 2 для примера технологической системы).
Дерево иерархии скелетонов включает в себя большую часть информации, представленной в описании (структурном описании в целом и при описании деталей компонентов технологической системы). Дополнительная информация, когда это необходимо, получается из этого дерева автоматически (например, граф зависимости данных,
связанных с задачами).
3. Формирование моделей надёжности.
Формирование моделей надёжности в терминах PEPA из заданного описания структурированного приложения может быть разделено на 3 этапа. На первом этапе, из дерева иерархии скелетонов получают ациклический ориентированный граф, который представляет зависимость данных между задачными компонентами. Этот граф используется на последующих этапах. На втором этапе формируются характеристики процесса для каждого элемента данных. Наконец, на третьем этапе, технологическая система в целом моделируется объединением задачных и скелетонных компо-
нентов, основываясь на их иерархической организации. Важность заключительного этапа состоит в том, что он дополняет модель надёжности установлением множеств синхронизации, которые будут использоваться пользователем модели в ходе синхронизации задачных компонентов на различных уровнях композиции.
Алгоритм 1 GS (node) : Формирование списков источников из дерева иерархии скелетонов. n := node.nchildren // Число узлов-потомков node.slist := parent.slist // Наследование списка источников от узла-родителя node.stype := parent.stype // Наследование типа схемы источника for i:=0 to (n-1) do
GS( node.childi) // Рекурсивно формируемые списки источников для потомков If node.type is task then // Узел - задачный компонент
v := (x: where x = node.index} if parent.type is deal ОГ
farm then // Родитель - продублированный скелетон
tempnode := v
else
parent.slist := v
parent.type := pipe // Обновление типа схемы источника
else if node.type is pipe then // Узел - скелетон Pipeline
if parent.type deal or farm then // Pipeline с дублированием
tempnode := node.slist
else
parent.slist := node.slist parent.stype := node.type // Обновление типа схемы источников else if node.type deal or farm then // Узел -продублированный скелетон
n-1
m := U tempt // Объединение времен-
i=0
ных списков по потомкам
if parent.type deal or farm then //
Дублирование с вложенным дублированием
tempnode := m
else
parent.slist := m
parent.stype := node.stype // Обновление типа схемы источника.
3.1 Определение ациклического ориентированного графа. Пусть G(t, S) — ациклический ори-
ентированный граф, где Т - множество задачных компонентов, а S - множество ориентированных дуг, соединяющих задачные компоненты. Этот граф представляет зависимости данных, соответствующих дереву иерархии скелетонов. Для получения такого графа из заданного дерева иерархии скелетонов используются рекурсивные алгоритмы прямого обхода дерева.
Для каждой задачи в Т , введем индекс i, где 0 < i <| Т |. Будем использовать обозначение t; означающее: “задачный компонент с индексом i, ” или, иногда, “задача i ”. Конкретному графу G, связанному с каждой задачей ti , ставят в соответствие два упорядоченных множества задач:
1. Список источников Si , определяющий множество задач в Т , от которых каждая i — ая задача может получать данные;
2.Список назначений Dt, определяющий
множество задач, которым каждая i — ая задача может отправлять данные. Эти упорядоченные множества определяются следующим образом:
Si = (j :(tj, t-) i * j}
и
Di = (j :(ti, tj) i * j}.
Если из контекста ясно, на какую задачу идёт
ссылка, то нижний индекс в St и Di опускаем.
Важно отметить, что эти упорядоченные множества лишь перечисляют все возможные предшествующие, или последующие, задачи. Эффективное множество, с которым задача обменивается информацией, определяется из этих множеств путем применения соответствующего источникам, или назначениям, способа взаимодействия. Например, заданный Pipeline содержит два следующих друг за другом Deal. В общем случае все задачи в первом Deal будут в списке источников для второго Deal. Однако, если оба скелетона не одинакового размера, то фактически, задача во втором Deal будет получать данные только от той задачи в первом Deal, которая имеет такой же потомственный ранг внутри Deal. Поэтому эффективное множество - это одноэлементное множество.
Эти два множества в комбинации с задачным множеством Т, полностью характеризуют ациклический ориентированный граф G. Поэтому для формирования этих множеств из дерева иерархии скелетонов используют рекурсивные алгоритмы обхода дерева. В алгоритме 1 представлен процесс определения списков источников из дерева иерархии скелетонов. В этом алгоритме каждый узел сопровождается следующими параметрами: parent - указатель на родительский узел в
дереве иерархии скелетонов; nchildren - количество узлов-потомков; slist - список индексов задач, доступных этому узлу в качестве источников (фактически, это то, что будет определяться алгоритме); stype - тип схемы источника; type - тип узла, это может быть скелетонный узел или задачный узел (рис. 2).
Каждый узел также дополнительно сопровождается временным списком temp, который используется его узлом-родителем до полного формирования списка источников. Отметим, что для некоторых скелетонных узлов, где имеет место дублирование задач, список источников на этих узлах не может быть завершен до тех пор, пока все его поддеревья-потомки также не завершат формирование своих списков источников. Подобный алгоритм используется для формирования списков назначений.
3.2 Моделирование задачных компонентов. Задачный компонент в структурированных системах - это процесс, который многократно подвергается переходам: получение^вычисление
^передача. В зависимости от структуры высшего уровня задачи, содержащей подзадачу, указываются соответственно эти три базовых действия. Иногда какие-либо из этих действий пропускаются. Например, в задачах-производителях, где не выполняется действие «получение»; или в задачах-потребителях, где не выполняется действие «передача».
В пункте 3.1 отмечено, что, когда одна задача взаимодействует с другими задачами, то перечень задач, участвующих во взаимодействиях, основан на эффективном подмножестве $ (или П) и определяется характером взаимодействий. Этот характер взаимодействий основывается на скеле-тонном наследовании для данной задачи. Характер взаимодействия определяется как функция над списком источников. Эта функция выбирает задачные индексы из соответствующего списка, и, таким образом, формируется эффективное подмножество для текущего взаимодействия. Эта функция устанавливает порядок, при котором задача должна взаимодействовать с оставшимися задачами в дереве иерархии скелетонов. Функция источников установит, какие данные должны быть получены. Функция назначений определит, какие данные должны быть переданы.
Характер взаимодействия для данной задачи соответствует ее расположению в дереве иерархии скелетонов. В алгоритме 1 тип схемы источника (52Уре) устанавливается по отношению к скелетонным компонентам, содержащимся в задаче. Тип схемы назначения устанавливается подобным же образом. Обозначив функции взаимодействия с источниками и назначениями, соответственно, как а и в, можно представить задачу как диаграмму переходов, изображающую последовательность обобщенных действий, выполняемых любой задачей в системе (рис. 3).
Передача ^(D),(d)
Рис. 3. Диаграмма переходов, которая дает последовательность обобщенных действий, выполняемых любой задачей в системе. В ходе формирования модели эти действия задаются, основываясь на характере взаимодействия
задачи со своими предшественниками и преемниками.
Из этого абстрактного представления следует, что характеристика процесса задачных компонентов в терминах PEPA определяется подмножествами a(S) и e(D), а та кже, как это требуется согласно переходу «получением вычисле-ние^передача», отношениями между а и в. Так как задачи могут иметь различные а и в, то необходимо установить схемы определений процессов для всех возможных комбинаций. Для краткости обозначим подобные комбинации как {a(S) ^ ti ^e(D)}. Это означает, что
“ 1 — ая задача получает данные, основываясь на функции источников а , и передает данные, основываясь на функции назначений в”. Когда какая-либо из функций не определена, то обозначим это действие *. Например,
{* ^ ti ^ в(П)} для задачи-производителя.
После перечисления всевозможных ситуаций, сделаем на основе определений скелетонных конструкций несколько следующих кратких замечаний о взаимосвязях между различными функциями взаимодействий (См. пункт 2).
1. Функция взаимодействия Deal - это частный случай Farm, где вероятностный недетерми-низм удален путем применения кругового распределения данных.
2. Функция взаимодействия Pipeline - это специальный случай Deal, где список источников является одноэлементным множеством.
Оставим без рассмотрения случаи, включающие Pipeline, так как их описания охватываются рассмотрением случаев с Deal. Рассмотрим комбинации функций взаимодействия Deal и Farm. 1.
Ситуация {* —— ti —— Deal(D)}. Здесь tj -
это задача-производитель. Она производит элементы данных, которые затем посылает одной из задач в D, выбираемых по правилу кругового распределения данных. Соответствующая характеристика процесса в терминах PEPA, где n =| D | и Ai — вычислительное действие, сопоставляемое с ti, выражается следующим образом: def
ti = (A, ±).(movei0,1).(A, ±).(movei0,1). • • •
•••.(A, 1).(movei( n—ГР 1).ti;
Здесь movejj представляет собой передачу данных от задачи i к j- ой задаче в D. Это обозначение выбираем вместо sendj , так как эти
действия будут использоваться далее, когда мы определим множества синхронизации. Когда принято последнее обозначение, необходимо определить систему для сопоставления соответствующих пар sendij и receiveij
2. Ситуация {Deal(S) — ti — *}. В этом
случае, ti является задачей-потребителем. Она получает элементы данных от одной из задач в D, которые затем и использует. Следуя термина-логии, схожей с обозначением в предыдущем случае, имеем следующую характеристику процесса: def
ti = (moveoi, 1).(A, 1).(moveh., 1).(A, 1). • ■■■ (move(n—i)i, 1).(A, 1).ti;.
Заметим, что n =| S | — количество индексов задачи в списке источников. Для представления процедуры передачи данных от j- ой задачи в S к i- ой задаче используем moveji .
3. Ситуация {Deal(S) — ti — Deal( D)}.
Здесь ti - задача-посредник. Полученные от одной из задач в S, элементы данных обрабатываются и результат передается одной из задач в D. В каждом случае коммуникаций по отправке и получению данных, эффективная задача выбирается автономно, основываясь на правиле кругового распределения данных.
В случае если количество элементов в списках источников и назначений одинаково, p =| S |=| D \, то имеем достаточно простую характеристику процесса:
def
tt = (moveof, 1).(Л , l).(movei0,1).L • • <movell, 1).(Л, 1).(moven, ^). l
l (move( p—1)i, -Щ., 1).(moveii p—1), ;.
В случае, если | S |*| D |, то не существует прямого соответствия между задачами-источниками и задачами-назначениями. Это несоответствие разрешается нахождением повторяющейся последовательности действий.
Определим периодичность p как число отдельных переходов «получение^вычисление
^передача», после которых происходит повторение. Легко видеть, что периодичность - это наименьшее общее кратное | S | и | D |. Имеем следующую характеристику процесса:
def
ti = (movexi, 1).(4, 1).(moveiy, 1). • • •. (повторить p раз, увеличивая к в каждой итерации). ti; где 0 < к < p, x = кmod| S | и y = к mod| D |.
Рис.4. Диаграмма переходов, которая дает для каждого элемента данных, полученного по круговой диаграмме, обработанный результат. Он передается одной из задач, которая полностью завершила выполнение задания, назначенного ей ранее.
Например, когда | S |= 3 и | D |= 2, последовательность установившихся действий дает следующую характеристику процесса:
def
ti = (moveoi, 1).(., 1).(movel 0,1). •
(moveoi, 1).(4, 1).(moven, 1).(move2i, 1). • (4, 1).(movem, 1).(move0i, 1).(., 1). • (moven, 1).(moveh, 1).(4, 1).(move^, 1). • (move2i, 1).(4, 1).(moven, 1)t;.
Три упомянутые ситуации можно использовать для полного определения задачных компонентов с любой комбинацией Pipeline и Deal.
Далее, представим ситуации, которые учитывают неопределенность, связанную со скелетоном Farm.
4. Ситуация {0 ^ ti ^ Farm(D)}. В этом случае задача является производителем. Однако, главное отличие здесь - это наличие неопределенности, которую фиксируем с помощью оператора селекции (+) в терминах PEPA. Это показывает следующая характеристика процесса:
def
t, = (Л, l).t1;
def
11 = (move, 0, 1)t, + (movev, 1).t, +—
■■■+(move1(n-vr -LM;
где n =| D |. После того, как элемент данных был
получен, он передается любой из задач в D. Это возвращает задачу к состоянию воспроизводства данных.
5. Ситуация {Farm(S) ^ t, ^ 0}. В этом случае задача является потребителем. Характеристика процесса схожа с предыдущим случаем:
def
t, = (mOVe0i, 1)tV + (mOVev,, 1)A + L
■+(movein n-v),, Ж;
def
ti =(Л, 1)-t,; где n =| S |. После того, как элемент данных был получен от любой из задач в S , он используется. И задача возвращается в состояние получения данных.
6. Ситуация {Farm(S) ^ t, ^ {Farm(D)}.
В этом случае, ti является задачей-посредником. Характеристика процесса для подобных задач может быть получена комбинированием двух предыдущих случаев:
def
t, = (moveo,, 1).(Л, l).t' + ■■■
■(move(x x-i>-, -ШЛ, Ж;
def
t, = (move, 0, 1).ti + (movev, 1).ti +—
L + (move(yу-і), , 1)4 ; где x =| S | и y =| D |. Элементы данных принимаются от любой из задач в S, обрабатываются и результат передается любой из задач в D.
7. Ситуация {Deal(S) ^ tj ^ Farm(D)}.
Здесь t, является задачей-посредником. Особенностью этой задачи является то, что для каждого элемента данных, полученного по круговой диаграмме, обработанный результат передается одной из задач, которая полностью завершила выполнение задания, назначенного ей ранее. Здесь функцией источников является Deal. Задача i
должна получать следующий элемент данных по круговой диаграмме. Задачи в S получают свои данные по круговой диаграмме . Как только данные были получены и обработаны, результат передается в Farm (рис. 4) . В ходе распределения используется композиция операторов селекции, что показано в следующей характеристике процесса:
def
ti = (move0i, I).., 1).ti0;
def
t° = (movei0,1).t’ + (movei1, 1).t’ +—
•+(movei (y—^ Ж1;---
tx—1 = (move( x—1)i, 1).(., 1)tx;
def
t* = (move, 0,1).ti + (movei1, 1).ti +—
•+(movei{ y—1).ti;
где x =| S | —1 и y =| D |.
8. Ситуация {Farm(S) ^ ti ^ Deal(D)}. Этот случай подобен предыдущим, за исключением инверсии в расположении композиции селекции. Имеем следующую характеристику процесса:
def
ti = (move, 0,1).ti0 + (moveiX, 1).ti0 +—
•+(move(x x—1)i, 1)-ti0;
t0 = (., 1).(movel0,1).ti1;
y—1 def y y ty—1 = (move0i, 1).tiy + (move1i, 1).tiy +—
•+(move( x—1)i, 1)ty;
tI = (., 1).(moveiy, 1)ti ; где x =| S | и y =| D | —1.
Таблица 1
* Pipe Deal Farm
* 0 1 2 3
Pipe 4 5 6 7
Deal 8 9 10 11
Farm 12 13 14 15
В алгоритме 2 объединены все вышеописанные ситуации для формирования характеристик процесса для каждой из задач в дереве иерархии скелетонов. Для упрощенного представления каждой из этих ситуаций присвоен номер, как показано в табл.1. Здесь в столбцах перечисляются схемы назначений, а в строках - схемы источников.
В алгоритме 2 выражение S(j) задает индекс m- ой задаче в S, где m = j mod | S |. Подоб-
ным образом определяется и соответствую-щее выражение для списка назначений D(j). Для выделения частей сформированного определения процесса используется Output. При каждом инициировании Output все символы, следующие от него до конца строки, выделяют как часть характеристики процесса. Отметим значимость порядка инициации интерфейса Output для достоверности сформированной характеристики определения процесса.
Для формирования характеристик процессов всех задач в дереве иерархии скелетонов рассмотрим в нём все задачные узлы и для них используем алгоритм 2. Тем самым завершится второй этап формирования модели надёжности технологической системы. Перейдем к рассмотрению заключительного этапа, где определим множества синхронизации. В ходе определения этих множеств синхронизации будут использоваться действия moveiJ и move н, которые
У JJ
соответствуют передаче данных между задачами.
3.3 Моделирование системы. Все характеристики процессов, сформированные к концу второго этапа, моделируют только надёжность каждого задачного компонента независимо от других. А поскольку структурированное приложение - это совместное выражение этих задач, они должны быть синхронизированы соответственно уровню иерархической композиции. Это делается на заключительном этапе формирования модели.
На каждом уровне дерева иерархии скелетонов каждое поддерево соответствует закрытой подсистеме, где только пограничные задачные компоненты на каждой из сторон взаимодействуют со своими смежными родственными поддеревьями. Задачные компоненты, которые находятся внутри этой подсистемы, так называемые промежуточные компоненты, синхронизируются с другими задачными компонентами внутри этой же подсистемы. Здесь нет поперечной пограничной синхронизации. Заключительный этап фор-мирова-ния модели происходит путем определения мно-жеств синхронизации между смежными поддере-вьями на каждом уровне дерева иерархии. Эти множества неоднократно уточняются до тех пор, пока все задачные компоненты не будут синхронизированы. [11-13].
Алгоритм 2 GP(i) : Формирование определения процесса для задачи i
def
Output: t =
1 :=lcm (| S |,| D |) // Наименьшее общее кратное или сумма, если равно нулю if case is 1 or 2 then // Предшественник - *, преемник - Pipe или Deal
for 0 < j < 1 do Output:
(. , 1).(movei,D( j^ 1).
else if case is 4 or 8 then // Предшественник - Pipe или Deal, преемник - *
for 0 < j < 1 do Output:
(moves (j y, 1Щ., 1).
else if case is 5, 6, 9 or 10 then // Предшественник и преемник - Pipe или Deal for 0 < j < 1 do Output:
(mOVeS(}V , 1).(. , 1).(mOVei,D( j^ 1).
else if case is 3 then // Предшественник - 0, преемник - Farm Output:
def
(., Ж1; t1 = (movei,d(o) , 1)-t!
for 0 < j <| D | -1 do Output:
+ (mOVei,D ( j ^ 1).
if (| D |> 1)0( j <| D | -1) then Output: tt else if case is 12 then // Предшественник - Farm, преемник - 0
Output: (moves (0),i, 1)t1 for 1 < j <| S | do Output: + (mOVes( j ),i, 1).t1
def
Output: ; t) = (., 1).
else if case is 7 or 11 then // Предшественник -Pipe или Deal, преемник - Farm
for 0 < j <| S | do
Omput (movesi j ),i, 1).(., 1).t/';
. def
^ =(move iD(o), 1).;
if j < | S | -1 then Output: t/+1 else Output: ti for 1 < к <| D | do
Output: + (moveD (к^ 1).
if j <| S | -1 then Output: t- +
else if j <| D | -1 then Output: tt
else if case is 13 or 14 then // Предшественник -Farm, преемник - Pipe или Deal
for 0 < j <| D | -1, начиная с x = 0 и увеличивая на 2 в каждом шаге do Output: (moveS (0) i, 1).t* for 1 < к <| S | do Output: + (moves (k ),i, 1)tx
def
Output: ^ . , 1).(moveD(^), 1).
def
if j <| D | -1 then Output: t*+1 ; t*+1 =
else if case is 15 then // И предшественник, и преемник - Farm
Output: (moves ш, 1).(., 1)t for 1 < j <| S | do
Output: + (moveS (; ),i, 1).(Л, Ж
1 def
Output: t1 = (moveD(0), 1). for 1 < j <| D | do Output: ti + (moveiD(j ^ 1).
Output: ti ;
Алгоритм 3 GM (node, nchild) : Формирование модели системы i := node.index
r := node.rank // Ранг узла между элементами
одного уровня
if node.type is task then
Output: ti
if r < nchild -1 then
if parent.type Ф (deal or farm) then
Output > L <, где
L = {movey : j = Di(kX 0 < k < Di |}
else
Output: ||
else
Output: (
for 0 < j < node.nchild do
GM (childJ, node.nchild) // Рекурсивно
моделируемое поддерево Output: )
if r < nchild -1 then
if parent.type Ф (deal or farm) then
Output > L < где
L = {movex,y : У = Di(jX x = Sy (kX 0< j<|d, |,0<k<|Sy|}
else
Output: ||
Для выполнения заключительного этапа применяют алгоритм 3. В этом алгоритме снова используется глубинный прямой обход дерева. Так как множество синхронизации между двумя поддеревьями может иметь отношение к одному из них, то выбирают ускоренный обход. Сначала определяется подсистема, соответствующая синхронизируемому поддереву, а затем синхронизируемое множество для поддерева. Каждый раз для задачного узла опускают эту задачу и формируют множества синхронизации, согласно которым эта
задача синхронизируется со всеми ее задачами-преемниками. Когда задачный узел является ске-летонным компонентом, то формируется множество синхронизации путем учета задач на границе отправки этой подсистемы. Они взаимодействуют с задачами на границе получения последующего поддерева.
4. Представление вычислительных и передающих информацию скоростей
Модель, которая сформирована к настоящему моменту, не завершена в двух аспектах. Скорости выполнения вычислений, а именно: вы-
числительные скорости, и скорости передачи информации, так называемые коммуникационные скорости, в явном виде не определены. Дополняют модель, представляя характерные активные оценки скоростей, так как в процессе выполнения синхронизации необходимы активные оценки скоростей передачи данных.
Так как метод формирования модели, предложенный здесь, предназначен преимущественно для распределенных приложений, последующие замечания будут сделаны в этом контексте. В распределенной системе, принципиальным фактором, определяющим скорость вычисления задачи, является скорость процессорного элемента, которому данная задача назначена для выполнения.
Отметим, что скорости передачи информации между задачами определяются через коммуникационные задержки лежащей в основе сети, связывающей эти процессорные элементы.
Для завершения модели имеют место два следующих момента. Основываясь на скорости процессорного элемента [Л и скорости вычисления задачи Я, эту связь представляют следующим образом:
def
Processor0 = (Я0, Ло).-Processor0;'''
def
l Processor = (Я, Л )Processor1 ;■■■ . Вычислительное действие Я, должно быть
таким же, какое используется в определении задачи i. Подобным образом получают оценки скорости передачи информации, добавляя данные, которые берутся из матрицы смежности, представляющей собой коммуникационные задержки. // Вычислительные скорости.
Processor_0 = (comp_0, 1.0).Processor_0; Processor_1 = (comp_1, 3.0).Processor_1; Processor_2 = (comp_2, 1.0).Processor_2; Processor_3 = (comp_3, 2.0).Processor_3; Processor_4 = (comp_4, 1.0).Processor_4;
// Передающие информацию скорости.
Network = (move_0_1, 1.0).Network + (move_1_2,
1.0).Network +
(move_2_3, 1.0).Network + (move_3_4,
1.0).Network;
// Определения задач.
t_0 = (comp_0, infty).t_01; t_01 = (move_0_1, infty).t_0;
t_1 = (move_0_1, infty).(comp_1, infty).(move_1_2, infty).t_1;
t_2 = (move_1_2, infty).(comp_2, infty).(move_2_3, infty).t_2;
t_3 = (move_2_3, infty).(comp_3, infty).(move_3_4, infty).t_3;
t_4 = (move_3_4, infty).(comp_4, infty).t_4;
// Модель системы.
Network<move_0_1, move_1_2, move_2_3,
move_3_4>(t_0 <move_0_1> t_1
<move_1_2> t_2 <move_2_3> t_3 <move_3_4>
t_4)<comp_0, comp_1, comp_2,
comp_3, comp_4>(Processor_0 || Processor_1 ||
Processor_2 ||
Processor_3 || Processor_4)
// Представление надёжности систе-
мы/пропускной способности
T1 = 1.0 * {** || (t_01 || t_1 || ** || ** || **) || (** || ** || ** || ** || **)}.
Рис. 5. Пример модели надёжности в терминах PEPA, сформированной автоматически из скелетонного представления.
Используемые действия movejj соответствуют характеристикам рассматриваемых задач (см. модель надёжности на рис. 5).
5. Выбор оборудования и схем углесосных станций
Анализ схем углесосных станций на действующих и проектируемых гидрошахтах указывает на их блочную структуру: в схеме предусматривается обычно столько абсолютно одинаковых и несвязных между собой блоков, сколько требуется при одновременной работе углесосов. Каждому работающему углесосу обычно придается два резервных. Связь основного и резервных углесосов с пульповодом осуществляется через систему задвижек и обратных клапанов.
Требуется определить коэффициент готовности и вероятность безотказной работы.
Используя изложенную выше методику структурного моделирования надежности технологических систем с применением скелетонов, основанную на полумарковских процессах, можно получить в замкнутой аналитической форме не только коэффициент готовности, но и другие характеристики блока.
На основе математических моделей надежности трех технологических схем углесосных станций произведём выбор лучшей из них (рис. 6-8).
Функционирование различных систем, рассматриваемых в теории надежности, может быть описано соответствующим образом построенным полумарковским процессом с конечным числом состояний [14].
Из определения полумарковского процесса следует, что при переходе из i- го в j- е состояние дальнейшее поведение процесса зависит
от времени пребывания его в у-м состоянии. Это дает возможность составить систему стохастических уравнений, которая является аналогом формулы полной вероятности для случайных вели-
Схема I
Рис. 6. Блок-схема 1 углесосной станции.
На основе полумарковских процессов могут быть получены различные характеристики надежности. Предполагаем, что каждый работающий элемент углесосной станции создает простейший поток отказов с параметром
1 ^
(,Як ,Яз — соответственно
х íA¿y J К J о
для агрегата,
обратного клапана, задвижки).
На рис 6-8 приняты обозначения:
Углесосный агрегат Задвижка
О
Обратный клапан
Время ремонта отказавшего элемента распределено по показательному закону с
1
М =
TB
( Магр ,Мк ,Мз - соответственно для агрегата
Схема II
Рис. 7. Блок-схема 2 углесосной станции.
Приведем математические модели надежности [16-19] для трех указанных схем как функции интенсивности отказов, интенсивности восстановлений, интенсивностей переключений технологической цепи.
Коэффициент готовности для схемы I :
¿7 =----------- '
1 +
8Л^Л2
(Р + Мп )0 + + 4Л1)
Вероятность работы одной нитки трубопроводов для схемы I :
1
1 + -
(М - Л )Л1 Л2
(^4 -%)(М + Мп)
Вероятность функционирования системы, приведенная по производительности технологической схемы I вычисляется по формуле :
Рис. 8. Блок-схема 3 углесосной станции.
Рф = 2
1 +
8^2Л2
9 9
(М + Ми)( М + 2МЛ1 + 4Л1 )
1+
(М - Л1 Л2
(М4 -^1)(М + Ми)
Наработка на отказ функционирования мы в случае схемы I :
/
систе-
то =
М + 2мЛ + 4 Л 8^2л2
Для автоматического формирования моделей надёжности заданная технологическая система, которая изображена на рис. 6. сначала должна быть представлена в форме, выражающей её сущность. Здесь применяется схемно-
ориентированный подход, основанный на понятии алгоритмических скелетонов. Выше были перечислены алгоритмы и модели надёжности в терминах PEPA, сформированной автоматически из скелетонного представления.
Представим технологическую систему, которая изображена на рис. 6. Здесь имеем 8-тистадийный Pipeline на высшем уровне (компоненты Pipeline). Некоторые из этих стадий являются задачными компонентами (например, стадии 1 и 8), в то время как другие - иерархические ске-летонные вложения (например, стадия 2 - Farm, в то время как стадии 3, 4 и 6 - Deal).
1
+
1
+
Покажем представление этой технологической системы, основанное на скелетонах. Это описание является иерархическим — каждое поддерево описывается в глубину, слева направо поперек одного и того же уровня поддерева. К следующему поддереву переходим на том же уровне только после того, как все предыдущие поддеревья были описаны полностью, т.е. больше нет скелетонных вложений с неполными описаниями задач.
Представление технологической системы, изображенной на рис. 6, основанное на скелетонах, имеет вид: pipe(8);
task("task", 1.0); farm(4, "task", 4.0); deal(4, "task", 4.0); deal(4, "task", 4.0); farm(4, "task", 3.0); deal(2, "task", 2.0); deal(2, "task", 2.0); task("task", 1.0); .
Весь пример рассматриваем как пошаговую детализацию описания технологической системы, где представляем технологическую систему на высшем уровне и продолжаем уточнение до тех пор, пока описания самого низкого уровня не будут состоять только из задачных компонентов. Аналогично для схемы II :
Коэффициент готовности для схемы II :
Кг =-----------------^-------------
1 +
( ц- )^1 ^2
(М + М„ )( М - \ ) Вероятность работы одной нитки трубопроводов для схемы I I :
1
K1 =
1 + -
Л(6Л3 -ц3)
М(м + 3Ам + 4А м + 6А )
Вероятность функционирования системы, приведенная по производительности технологической схемы I I вычисляется по формуле :
г 1 ^
• +
P = -
1 ф 2
1+-
+ -
(ц - Л )Л1 Л2 (ц + ц )(ц4-Л4) 1
1+
Л(6Л -ц3)
ц(ц + 3Лц + 4Л ц + 6Л ) j
Наработка на отказ функционирования системы в случае схемы I I :
М(М + 2мА + 2А )
T = 10
2Л(ц2 + 3цЛ + 3Л)
Представим технологическую систему, которая изображена на рис. 7. Здесь имеем 6-тистадийный Pipeline на высшем уровне. Некоторые из этих стадий являются задачными компонентами (например, стадии 1 и 6), в то время как другие - иерархические скелетонные вложения (например, стадия 2 - Farm, в то время как стадии
3, 4 и 5 - Deal).
Представление технологической системы, изображенной на рис. 7, основанное на скелетонах, имеет вид: pipe(6);
task("task", 1.0); farm(4, "task", 4.0); deal(4, "task", 4.0); deal(4, "task", 4.0); deal(4, "task", 4.0); task("task", 1.0); .
Для схемы III имеем :
Коэффициент готовности для схемы I I I : Кг — 1
1 +
(ц + цп)(ц + 2 Л)
Вероятность работы одной нитки трубопроводов для схемы I I I :
1
K1 =■
1+
ЛЛ
(ц + цп )(ц2 + цЛ + Л )
Вероятность функционирования системы, приведенная по производительности технологической схемы I I I вычисляется по формуле :
( 1 >
1 + -
4ЛЛ
■ +
+ ■
(ц + цп )(ц + 2Л1) 1
1+
(ц + цп )(ц + цЛ + Л )
Наработка на отказ функционирования системы в случае схемы I I I :
т = ц + 2Л
0 = 4ЛЛ2
Представим технологическую систему, которая изображена на рис. 8. Здесь имеем 6-ти стадийный Pipeline на высшем уровне. Некоторые из этих стадий являются задачными компонентами (например, стадии 1 и 6), в то время как другие -иерархические скелетонные вложения (например, стадии 2 и 5 - Farm, в то время как стадии 3 и 4 -Deal).
Представление технологической системы, изображенной на рис. 8, основанное на скелетонах, имеет вид:
pipe(6);
task("task", 1.0); farm(3, "task", 3.0); deal(3, "task", 3.0); deal(3, "task", 3.0); farm(4, "task", 4.0); task("task", 1.0); .
Получены для каждой схемы коэффициенты готовности Кг вероятности функционирования в системе только одной технологической цепи К' , вероятности функционирования, приведенные по производительности технологической схемы в целом РФ , наработки на отказ Т0 , вероятности безотказной работы схем как функции времени.
Среднее время работы технологической цепи определятся по формуле
T =4______________1_________\
РЦ (агр +Лвс +Лк +Лз)
Среднее время восстановления технологической цепи определяется по формуле
T - T 1вц -1 рц
( Л
вс + Лк
Магр И-вс И-к
(2)
V А У
Так как полученные в данной работе математические модели характеристик надежности технологических схем являются многомерными моделями, то делают некоторые упрощения, которые позволяют представить их как функции одного безразмерного параметра:
Р=Цц/Лц (3)
где Ц -интенсивность восстановления (одной
нитки) технологической цепи схемы; Лц - интенсивность отказов технологической цепи.
ности КГ от удельного времени работы станций на единицу времени восстановления Пренебрегая интенсивностями переключений Мц=Ац=0 , получаем
А1 = 1 ■■ (4)
На рис. 9 представлены для каждой схемы коэффициенты готовности КГ как функции р.
Из графика следует, что наиболее надежной схемой будет первая, а вторая и третья примерно
равноценны для р>4 . Здесь же даны для каждой схемы вероятности функционирования, приведенные по производительности технологической схемы в целом Рф как функции р. Наиболее высокой вероятностью функционирования
обладает первая схема. Для р>3.5 вероятности функционирования второй и третьей схем практически одинаковы.
Конкретный пример.
По данным лаборатории повышения надежности и износостойкости машин известно:
1вс = 0.00167; Аагр = 0.0238; = 0.0021;
1з = 0.0038; Мес = 0.333; магр = 0.843 ;
Ми = 1.43; Мз = 1.28. (5)
стоя К„ от удельного времени работы станций на единицу времени восстановления
Отсюда с помощью формул (1-4) получают:
Тл,,=29.3
часа;
. Твц
Кц=0.961.
1.167; r = 25.1;
Отсюда получаем значения коэффициентов готовности для каждой из схем.
Таблица 2
Схема I II III
Кг 0,999535 0,996715 0,994152
Из табл. 2 видно, что для данных условий все схемы будут высоконадежными.
Для выбора наилучшей схемы надо учесть влияние надежности на экономичность технологическое схемы. Для компоновки схем I и II требуется примерно одинаковое число технологического оборудования, а для схемы III - на четверть меньше.
нирования Рф от удельного времени работы станций на единицу времени восстановления.
Итак, из указанных на рис. 9-11 технологических схем с учетом исходных данных (5), влияния надежности на экономичность и необходимого количества технологического оборудования в схеме устанавливаем оптимальность схемы III.
Заключение.
Количественный анализ полученных результатов показывает практические преимущества формирования моделей по сравнению с простыми системами, не обеспечивающими автоматического моделирования надёжности. Практическое применение подхода автоматического формирования модели состоит в динамическом планировании задач в параллельных и распределенных приложениях [18-19]. В данной работе рассмотрен автоматический подход для формирования РЕРА-модели надёжности из приложений, основанных на скелетонах. Подобные автоматические подходы важны в системах, где модель должна обновляться постоянно и динамически в зависимости от текущего состояния ресурсов. Показаны преимущества формирования моделей путем сравнения надёжности различных технологических схем .
СПИСОК ЛИТЕРАТУРЫ
1. Aldinucci M, Danelutto M. Algorithmic Skeletons Meeting Grids.// Parallel Computing, 32(7-8). 2006. p. 449-462.
2. Rabhi F.A., Gorlatch S. editors. Patterns and Skeletons for Parallel and Distributed Computing. // Springer Verlag, ISBN 1-85233-506-8, 2003.
3. Benoit A., Cole M,. Gilmore S., Hillston J. Flexible Skeletal Programming with eSkel.// In Euro-Par 2005, LNCS 3848, 2005. p. 761-770.
4. Gomes C., Cunha J., Rana O. Pattern Operators for Grid Environments.// Scientific Programming, 11.
2003. p. 237-261.
5. Сорокин А. С. Применение полумарковских процессов к определению характеристик надежности технологических схем. // Вестн. Кузбасского гос. тех. унив.,2005. № 1. С. 3 -9 .
6. Сорокин А.С. Применение методов теории вероятностей к исследованию некоторых процессов производства.//Труды 4-ой междунар. конф. Кибернетика и технологии XXI века. Воронеж, 2003. С. 312-323.
7. Сорокин А.С. Марковские процессы в теории надежности технологических систем гидродобычи угля // Вестн. Кузбасского гос. тех. унив., 2008. № 1. С.61-69.
8. Cole M. Algorithmic Skeletons: Structured Management of Parallel Computation.// MIT Press, Cambridge, Massachusetts, 1989.
9. Hillston J. A Compositional Approach to Performance Modelling.// Cambridge University Press, 1996.
10. Cole M. Bringing Skeletons Out of the Closet: A Pragmatic Manifesto for Skeletal Parallel Program-ming.// Parallel Computing, 30(3). March 2004. p. 389-406.
11. Иглин С. П. Grtheory toolbox — инструментарий matlab для решения задач на графах // Проектирование научных и инженерных приложений в среде MatLab. -M. : 2004. C. 165-185.
12. Нечипуренко М. И., Попков В. К., Майнагашев С. М. и др. Алгоритмы и программы решения задач на графах и сетях .// Новосибирск: Наука. Сиб. отд-ние, 1990. с. 515 .
13. ПападимитриуХ., Стайглиц К. Комбинаторная оптимизация. Алгоритмы и сложность. М.: Мир, 1985. c. 512 .
14. Сорокин А.С. Системы линейных уравнений. Основные понятия анализа. Полумарковские процессы. (Гриф УМО). Изд. СибГИУ. Новокузнецк, 1998. - 151 с.
15. Сорокин А.С. Оценка качества системы обслуживания технических объектов. //Качество высшего педагогического образования; уровни, параметры и критерии оценки. Сб. научных трудов КузГПА. Новокузнецк, 2004. с. 40 - 44.
16. Сорокин А. С. Алгоритм решения линейных систем дифференциальных уравнений Колмогорова. //Качество высшего педагогического образования; уровни, параметры и критерии оценки. Сб. научных трудов КузГПА. Новокузнецк, 2004. с. 45 - 48.
17. Сорокин А.С. Математическая модель: влияние надежности на экономичность// Инновации и информационные технологии в образовании. Труды Всероссийской конф. Т.2. Владивосток,
2004. с. 126 - 128
18. Yaikhom G., Cole M., Gilmore S. Combining Measurement and Stochastic Modelling to Enhance Scheduling Decisions for a Parallel Mean Value Analysis Algorithm. In V. Alexandrov, D. van Albada, P. Sloot, and J. Dongarra, editors, Intl. Conf. on Computational Science (ICCS 2006), volume 3992 of LNCS Springer, April 2006. p. 929-936.
19. Benoit A., Cole M., Gilmore S., Hillston J. Scheduling skeleton-based grid applications using PEPA and NWS.// The Computer Journal, 48(3). 2005. p. 369-378.
□ Автор статьи:
Сорокин Андрей Семенович - канд. физ.-мат.наук, доцент, ст.н.с.
(филиал КузГТУ , г. Новокузнецк)
Тел.8-3843-772459