Копия Лабораторный практикум_4.pptx
- Количество слайдов: 29
Лабораторный практикум № 4 Имитационная модель информационной корпоративной системы (КИС) Практикум разработан доцентом Н. Н. Прокимновым
Цель работы • В работе проводится исследование: • 1) основных возможностей и правил работы конструктора Gem, • 2) концепций и основных конструкций моделирующей системы Pilgrim, • 3) построение имитационной модели информационной корпоративной системы, • 4) изучение схем зарядки замкнутых моделей в системе Pilgrim и приемов получения выходных данных и сравнение их с аналитическими формулами.
Отчет по работе • Отчет по работе должен содержать краткую теоретическую часть, файлы с распечаткой текста программы (твердую копию) с полученными результатами прогонов (таблицу Exel), в которой сведены результаты всех экспериментов по всем вариантам запусков. Каждый студент проводит работу по своему номеру варианта. См. подробнее ниже.
Теоретическая часть • Под замкнутой моделью корпоративной информационной системы (КИС) понимается модель системы, в которой транзакты, будучи один раз сгенерированы, циркулируют в пределах графа модели, не погибая в терминаторах. • Такой моделью, например, может быть модель работы группы пользователей с компьютерной сетью в диалоговом режиме. Транзакт в этом случае имитирует запрос пользователя. Выйдя из узла, имитирующего работу пользователя, транзакт проходит по графу модели и постепенно, по мере его обработки в КИС (узлах модели), превращается в ответ и возвращается к пользователю (узел), после чего вновь начинает играть роль запроса того же
Теоретическая часть Моделировать каждый новый запрос отдельным транзактом нельзя, так как нельзя рассчитать заранее время обработки запроса системой (это случайная величина) и, следовательно, нельзя задать частоту генератора ag. • В этом случае модель может быть построена следующим образом: • Пользователи (или группы пользователей, в зависимости от сложности моделируемой системы) представляются одно- или многоканальными узлами типа serv (серверы); • Число каналов сервера соответствует числу
Теоретическая часть пользователей, время обработки транзакта сервером соответствует времени подготовки пользователями запроса; • Конкретное состояние транзакта (запрос – ответ) фиксируется значением одного из его параметров; • Для зарядки транзактами серверов пользователей, принадлежащих к одному классу, используется единственный генератор, порождающий всего один транзакт. Далее транзакты размножаются с помощью узлов типа creat. • В частности, если требуется смоделировать работу нескольких пользователей, выполняющих разную работу за своими терминалами, то это может быть реализовано с помощью следующего графа
Граф 1 модели (общий вид)
Теоретическая часть • Напомню предназначение узла Create. Этот узел позволяет создавать новые семейства транзактов. Транзакты, создаваемые обычными генераторами принадлежат семейству с номером 0 (номер семейства - один из параметров транзакта). Если возникает необходимость создать семейство с ненулевым номером, то соответствующее требование содержится в порождающем транзакте, поступающем на вход creat. Назначение его параметров следующее. Creat A, B, C, {D}, E, F • А – имя; • В – номер порождаемого семейства;
• С – число порожденных транзактов; • D – copy – передача транзактам параметров «родителя» , none – не передаются; • Е – номер узла – приемника «детей» ; • F – номер узла – приемника «родителей» . • В нашем случае узел creat будет выглядеть так: • creat ("Множитель", none, Users, none, numbi, numbj); • Здесь Users – число размноженных транзактов (по числу пользователей, которое задается в самом начале), numbi - номер узла – приемника сгенерированных транзактов(4), numbj - номер
узла – приемника «родителя» (узел 3). • В свете сказанного генератор ag должен сгенерировать 1 транзакт и направить его в узел creat. • Далее сгенерированные транзакты попадают в очередь (на графе узел 4), где каждому из них присваивается свой номер семейства, равный номеру сервера, в который этот транзакт поступит. В параметр транзакта t->ru 0 заносится также среднее время задержки в сервере, моделирующее работу пользователя.
Теоретическая часть Этот параметр используется при описании серверов пользователей (узлов с номерами из диапазона [5, Users + 4], где Users - число серверов). В нашем случае число серверов равно четырем. Т. о. диапазон равен [5, 8]. Все эти и другие настройки проводятся при корректировке программы (которая первоначально генерируется конструктором GEM). Задать эти настройки в GEM невозможно.
Для оценивания среднего времени реакции КИС Tc можно воспользоваться следующим выражением: где Т 0 - среднее время обдумывания пользователем ответа системы перед выдачей нового ей очередного запроса.
ЛАБОРАТОРНЫЙ ПРАКТИКУМ 4
• • Лабораторный практикум В работе необходимо построить и исследовать модель системы, работающей в режиме “запросответ”, и определить значения среднего времени реакции системы на запросы пользователей. Представляется, что пользователи системы выполняют разнотипную работу, которая характеризуется разным временем обработки запросов и предполагает разное время обдумывания ответа системы на запрос. Работа пользователей имитируется в модели несколькими узлами типа одноканального сервера, число которых соответствует числу пользователей. Для нашего случая модель системы строится для четырех пользователей.
Лабораторный практикум. Граф Запускаем файл Gem. exe. Берем за основу граф, но затем дорабатываем его вручную.
Параметры системы В качестве начальных значений параметров модели задаются для переменной Users и массивов T_time и Q_time следующие: имя тип смысл начальн. знач-е Users int чис. пользователей 4 T_time[] float время ответа {N*4, N*6, N*8, N*9} Q_time[] float время запроса {N*2, N*3, N*4, N*5} где N означает порядковый номер студента в списке группы (значение N задается вначале). Параметры в массивах возможно корректировать.
Лабораторный практикум. Текст программы • Раздел “после вхождения в узел” узла 103 должен содержать текст (набиваем вручную – см. фрагмент программы): • cheg (101, none, modtime, zero, 102), здесь modtime означает выбранное время моделирования (третий операнд в modbeg). Modtime также задается в начале программы. • В узле 103 происходит инициирование выполнения сигнальной функции cheg, которая переустанавливает параметр узла ag, задающей средний интервал между двумя генерируемыми транзактами в modtime (что, по сути, означает отключение узла ag), после чего транзакт уничтожается.
• • • Лабораторный практикум. Текст программы Узел 102 (creat) должен породить, как это было сказано, Users транзактов (в нашем случае 4) и направить их в узел 104 (queue). Раздел “до вхождения в узел” описания узла 104 должен содержать текст (набиваем вручную): t->ft=addr[104]->na+105; t->ru 0=T_time[addr[104]->na]; t->ru 1=Q_time[addr[104]->na]; В качестве закона распределения в параметрах узлов имитации пользователей 105 -108 следует на первом этапе в четвертом операнде указать значение expo для экспоненциального распределения времени обдумывания ( в этом случае шестой операнд в serv – zero). В дальнейшем используем гауссовское распределение.
Лабораторный практикум. Редактирование На втором этапе осуществляется редактирование текста программной модели. • Проводим следующие корректировки. • В узле 104 убрать сгенерированные ранее С++ - операторы и изменить параметры узлового оператора queue • queue ("Прием", none, t->ft); • Для узлов пользователей 105 -108 установить параметры гауссовского распределения Число каналов 1 Закон распределения norm Среднее время ru 0 Отклонение ru 0/3
Лабораторный практикум. Редактирование В узле 110 (сервере) убрать сгенерированные С++ операторы и изменить параметры узлового оператора serv ("КИС", 1, none, norm, t->ru 1/3, none, t->ft); • После этого проверить текст модуля на наличие пропусков и ошибок. • Ключи • Для оценивания среднего времени реакции КИС мы должны прибегнуть к приему с включением в модель дополнительных узлов типа key вместе с соответствующей логикой.
Лабораторный практикум. Время реакции • Вообще key можно не включать, но тогда будет затруднительно оценить среднее время реакции. Подумайте над этой проблемой. • Напомним, что key– это ключ или клапан. Изображается треугольником. Если на клапан воздействовать сигналом hold из какого-либо узла, он закрывается и блокирует транзакты. • Если на клапан воздействовать сигналом rels из другого узла, он открывается для прохода транзактов. Ключ используется для синхронизации или моделирования работы с информационными ресурсами (см. фрагмент).
Лабораторный практикум. Время реакции • При использовании этого подхода каждому пользователю, который имитируется одним узлом типа serv, придается дополнительный узел key, который служит только для целей измерений (как это представлено на графе). Транзакт (запрос к КИС) сначала попадает в узел key и запирает его. После обработки запроса, когда транзакт возвращается из модели КИС в сервер, имитирующий пользователя, при входе в узел serv он открывает соответствующий узел key.
Лабораторный практикум. Время реакции В программной модели автоматически измеряется интервал закрытого состояния узла key и определяются математическое ожидание и среднеквадратичное отклонение. Для того, чтобы определить время ответа с помощью узла key, необходимо выполнить следующее: • Запрограммировать четыре узла (соответственно числу работающих в системе пользователей) типа key. • Узлам присвоить соответствующие номера и вручную скорректировать параметр (если он неверен), задающий максимальное число узлов модели, в операторе modbeg (второй операнд).
Лабораторный практикум. Время реакции • Добавить самостоятельно описание узлов key в программную модель, включив функцию hold(<номер узла key>) вслед за узловым оператором, которые будут переводить узлы в закрытое состояние после прохода через них транзактов (см. фрагмент текста программы). • Проверить узловые операторы serv, имитирующие работу пользователей, добавив перед узловыми операторами функцию rels(<номер узла key>) и откорректировав параметр маршрутизации транзакта на номер соответствующего узла key.
Лабораторный практикум. Время реакции Произвести запуски модели, оценить значения времени реакции системы и сопоставить их со значениями, полученными путем расчета по аналитическим формулам. Приведем фрагмент программы на С++(граф 1): #include <Pilgrim. h> #include … forward { int Users=4; int N=1; float Q_time[]={N*2, N*3, N*4, N*5}; float T_time[]={N*4, N*6, N*8, N*9}; float modtime=10000. 0; modbeg ("КИС", 120, modtime, (long)1234567890, none, 109, none, 2); ag ("Старт", 1, none, 1. О, zero, 2); network (dummy, dummy) { top (102): creat ("Множитель", none, Users, none, 104, 103); place;
Лабораторный практикум. Время реакции top (103): term ("Стоп"); cheg (1, none, modtime, zero, 102); place; top (104): t->ft = addr[104]->na + 5; t->ru 0 = T_time [addr[104]->na]; t->ru 1 = Q_time [addr[104]->na]; queue ("Распределитель", none, t->ft) ; place; top (105): rels (115); serv ("П_1", 1, none, norm, t->ru 0/3, none, 115); place; … top (115): key ("КП_1", 109); hold (115); place; …
Лабораторный практикум. Запуск модели. При запусках следует добиться удовлетворительной точности (результаты не должны скакать сильно). Для оптимизации системы следует ( в незначительной степени) изменить значения времен обработки запроса (возможно и времени обдумывания ответа пользователем). Для всех запусков необходимо оценить среднее время реакции системы по аналитической формуле и сопоставить его с результатами моделирования. Сделать выводы (в отчете).
Лабораторный практикум. Отчет по работе Отчет. Как всегда, результаты расчета и запусков вносятся в таблицу. Таблица должна содержать столбцы, куда следует внести значения параметров для времени обдумывания ответа на запрос и времени обработки запроса пользователя (время процессора, имитируемого узлом типа serv) каждый для своего варианта. Кроме того, записываются значения коэффициентов загрузки узлов serv, полученные в результате прогона модели и для сравнения среднее время реакции по аналитической формуле.
УДАЧИ!
Копия Лабораторный практикум_4.pptx