Файл: Система сбора информации.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 30.06.2023

Просмотров: 67

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

2. В системе работают 2 сервера. Время обработки на обоих серверах идентично и состоит из предварительной обработки на сервере, формирования ответа и передачи по каналам связи.

При этом предварительная обработка на сервере занимает 2с, формирование ответа занимает 18±2с и время передачи по каналам связи занимает 3с.

3. После первого сервера поток запросов разделяется. 50% запросов уходят из системы, а 50% проходят дополнительную обработку на втором сервере.

4 Согласно заданию необходимо смоделировать процесс обработки 400 запросов.

Необходимо смоделировать процесс обработки 400 запросов и определить:

– необходимую емкость накопителя для размещения ждущих запросов. Для этого необходимо будет анализировать очередь.

– распределение времени обслуживания запроса.

Построим общую схему системы (рисунок 3.1).

50%

50%

Рисунок 3.1 – Схема системы

Опишем процесс построения модели.

Зададим поступления заявок в модель. Для этого используем оператор GENERATE.

Формат: GENERATE A,B,C,D,E,F,G

А - среднее значение интервала времени;

В - разброс или модификатор среднего значения(по умолчанию ноль);

С - время появления первого транзакта;

D - общее число генерируемых транзактов;

Е - уровень приоритета каждого транзакта;(от 0 до 127,значение по умолчанию 0);

F - число параметров (по умолчанию 12);

G - тип параметра ( F - полнословный, Н - полусловный - по умолчанию )

Интервал поступления 103, всего необходимо 400 транзактов, поэтому команда выглядит так:

40 generate 10,3,,400

По заданию необходимо получить распределение времени обслуживания запроса.

Для получения плотности распределения, ее интегральных относительных частот, среднего значения и стандартного отклонения некоторых аргументов, которыми могут быть СЧА (например, времени нахождения транзакта в модели или задержки в ее отдельных частях, длин очередей, содержимого МКУ, коэффициентов использования устройств и т. д.), используются статистические таблицы TABLE и QTABLE.

Формат: num TABLE A,B,C,D,E

num - номер таблицы;

А - аргумент таблицы (-);

В - верхняя граница нижнего интервала;

С - ширина интервала;

D - число интервалов;

Е - интервал времени (только для RT-режима).

При входе транзакта в блок TABULATE, связанный с конкретной таблицей, операнд А соответствующей карты TABLE вычисляется и заносится в эту таблицу. Если за операндом А указан знак (-), в таблицу заносится разность двух соседних значений табулируемой величины. Если в поле А указан режим IA, в таблицу заносится интервал времени между приходом двух транзактов в блок TABULATE. Если в поле А указан RT-режим, то информация заносится в таблицу через интервалы времени, заданные в поле Е. Соответствующая результирующая величина показывает, сколько входов транзактов в блок TABULATE имело место в течение указанного интервала. Стоящий в поле D символ указывает, что таблица является взвешенной. Использовать взвешенные IA или RT разностные таблицы нельзя.


Для сбора элементов данных сообщение должно войти в блок TABULATE с тем же именем таблицы, что определено в блоке TABLE.

Пользователю GPSS позволено для сбора нужных статистических
данных вводить таблицы нескольких типов. Информация заносится в таблицы с помощью специального блока TABULATE в момент входа транзакта в этот блок. Пользователь должен задать ряд характеристик для каждой из таблиц, которую он хочет использовать.

Характеристики таблицы задаются специальной картой описания таблицы – TABLE (QTABLE).

При входе транзакта в блок TABULATE симулятор ПМДС записывает в соответствующую таблицу определенную статистическую информацию. Поле А определяет номер этой таблицы, в которой накапливается соответствующая статистическая информация. Вид заносимой информации определяется на специальной карте описания таблицы помимо способа обработки. Эта карта определяет размер, а также число и границы интервалов таблицы. В каждом блоке TABULATE может быть задано число единиц, добавляемых к числу наблюдений того интервала, в который попадает при данном обращении аргумент. Это число единиц задается в поле В. Если поле В пусто, то это число принимается равным 1.

Блок TABULATE имеет следующий формат:

TABULATE <А>,[<B>]

Блок TABULATE табулирует текущее значение заданного аргумента. Способ табуляции зависит от режима работы таблицы, который определяется оператором описания таблицы TABLE.

В поле А задается номер или имя таблицы, в которую табулируется значение аргумента. Таблица должна быть определена оператором описания TABLE.

В поле В задается число единиц, которые должны быть занесены в тот частотный интервал, куда попало значение аргумента. Если поле В пусто, эта величина полагается равной единице.

Когда сообщение входит в блок TABULATE, то для нахождения таблицы используется операнд А. Если такой таблицы нет, то возникает ошибка выполнения. Таблица должна быть определена оператором TABLE. Таблица изменяется в соответствии с операндами оператора TABLE.

При входе транзакта в блок TABULATE, которой ссылается на таблицу num, аргумент А этой таблицы вычисляется и заносится в эту таблицу. При этом если за операндом А стоит знак «-», то в таблицу заносится разность двух соседних значений табулируемой величины. Если в поле А указан режим IA, в таблицу заносится интервал времени между приходом двух транзактов в блок TABULATE.

Соответственно команды объявления таблиц будет иметь следующий вид:

10 Table1 table V$PeremA,17,1,5

20 Table2 table V$PeremA,17,1,5

Запись данных в таблицы:


110 tabulate Table1

210 tabulate Table2

В таблицах будет по 5 диапазонов:

- от 16 до 17,

- от 17 до 18,

- от 18 до 19,

- от 19 до 20,

- от 20 до 21.

PeremA - значение, которое равно разности времени нахождения транзакта в модели и значения первого параметра транзакта.

Для объявления переменной используем оператор VARIABLE

Формат: num VARIABLE ехр

num - номер переменной (числовое или символическое имя);

ехр - арифметическое или логическое выражение, использующее допустимые СЧА и (или) константы; знак "%" заменяет"* при косвенной адресации.

Допустимые операторы:

= - равно,

= - не равно,

< > - не равно,

< - меньше чем,

> - больше чем,

>= - больше или равно,

>= - меньше или равно,

1 -И,

ИЛИ,

+ - сложение,

- - вычитание,

/ - деление,

* - умножение,

@ - деление по модулю @,

( ) - правило круглых скобок.

Когда производится обращение к СЧА V$, выражение, соответствующее перемен-ной VARIABLE, вычисляется с использованием целочисленной арифметики. В логических операциях ненулевые значения рассматриваются как "ИСТИНА".При этом переменная принимает значение 0 в случае "ЛОЖЬ" и 1 в случае "ИСТИНА". Переменная может иметь до 13 уровней вложения (т.е переменных, ссылающихся на другие переменные). Знак % используется при косвенной адресации, т.к * означает умножение.

Команда имеет вид:

30 PeremA variable M1-P1

В системе присутствует 2 устройства (сервер 1 и сервер 2). Также добавим устройства для моделирования предварительной обработки и передачи по каналам связи. Для моделирования задержки используется оператор ADVANCE.

Формат: ADVANCE А,В

А - среднее время задержки (константа, если В не задано);

В - разброс относительно среднего значения, должен быть меньше или равен А.

Блок ADVANCE моделирует временною задержку транзакта в течение определенного интервала. Значение задержки по умолчанию равно нулю. Если поле В не является FN$, т время задержки является случайным числом, распределенным равномерно на интервале от (; + В) до (А - В). Если поле В является функцией FN$, то время задержки определяете произведением поля А на значение функции в поле В. Функция может быть использована для задания времени задержки с определенным средним значением и отклонением, зависящим от А.

Команды:

50 advance 2 ; предварительная обработка (сервер 1)

100 advance 18,2 ; обработка (сервер 1)

130 advance 3 ; передача по каналу связи (сервер 1)

150 advance 2 ; предварительная обработка (сервер 2)

200 advance 18,2 ; обработка (сервер 2)

230 advance 3 ; передача по каналу связи (сервер 2)


Для устройств сервер 1 и сервер 2 необходимо собирать статистику, поэтому нужно использовать операторы занятия и освобождения устройства SEIZE, RELEASE. Занятие транзактом одноканального устройства моделируется блоком SEIZE, а его освобождение - блоком RELEASE:

SEIZE А

RELEASE A

A - имя устройства, занимаемого (освобождаемого) транзактом;

Операторы:

70 seize Server1

120 release Server1

170 seize Server2

220 release Server2

Для определения характеристик очередей используем блоки регистраторов очередей: QUEUE (встать в очередь) и DEPART (уйти из очереди), имеющих следующий формат:

QUEUE A, B

DEPART A, B

В поле A указывается номер или имя очереди, а в поле B - число единиц, на которое текущая длина очереди увеличивается при входе транзакта в блок QUEUE или уменьшается при входе транзакту в блок DEPART. Обычно поле B пусто, и в этом случае его значение по умолчанию принимается равным 1.

Для сбора статистики о транзакты, которые были заблокированы перед каким-либо блоком модели, блоки QUEUE и DEPART размещаются перед и после этого блока соответственно.

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

Формат: ASSIGN А.В

А - номер изменяемого параметра (+, -);

В - новое значение параметра.

Если за полем А следует знак + или -, то значение поля В соответственно добавляется или вычитается из А. Если знаки - или + не указаны, то значение поля В становится текущим значением параметра.

Для реализации разветвления используем оператор transfer.

TRANSFER - изменяет движение транзакта в модели.

Формат: TRANSFER А,В,С,D

А - режим передачи (пробел,.,ALL,BOTH,FN,P,PICK,SBR,SIM);

В - следующий блок;

С - следующий блок;

D - значение индекса, используемое в режиме ALL.

Транзакт направляется в блок, определяемый в соответствии с режимом передачи, указанным в поле А.

Режимы передачи поля А:

1. Пробел - транзакт передается в блок, определяемый полем В.

2. "." - статистический режим; в поле А указано десятичное число, выражающее вероятность перехода в блок С; его дополнение до единицы указывает вероятность перехода в блок В.

3. ALL - транзакт последовательно пытается перейти в блоки, определяемые значениями В, B+D, B+2D.....C.

4. BOTH - транзакт последовательно пытается войти в блок В, затем в блок С, до тех пор, пока один из них станет доступным.

5. FN - функциональный режим: поле В является номером функции; сле-дующий блок определяется суммой значения этой функции поля С.

6. Р - параметрический режим: поле В является номером параметра; следующий блок определяется суммой значения этого параметра и поля С.


7. PICK - выборочный режим: блок выбирается с равной вероятностью из блоков с номерами: В, B+l,..., С.

8. SBR - режим перехода к подпрограмме: номер текущего блока помещается в параметр, указанный в поле С, а транзакт передается в блок, номер которого указан в поле В.

9. SIM - одновременный режим: проверяется одновременное выполнение условий беспрепятственного движения транзактов в задерживающих блоках . Если условие выполняется, транзакт передается в следующий блок, в противном случае транзакт переходит на блок С.

В нашем случае необходимо использовать режим статистической передачи (по 50%):

140 transfer 0.5,,kill

Уничтожение транзактов:

200 kill terminate 1

Итого программа имеет вид:

10 Table1 table V$PeremA,17,1,5

20 Table2 table V$PeremA,17,1,5

30 PeremA variable M1-P1

40 generate 10,3,,400

50 advance 2

60 queue queueS1

70 seize Server1

80 depart queueS1

90 assign 1,M1

100 advance 18,2

110 tabulate Table1

120 release Server1

130 advance 3

140 transfer 0.5,,kill

150 advance 2

160 queue queueS2

170 seize Server2

180 depart queueS2

190 assign 1,M1

200 advance 18,2

210 tabulate Table2

220 release Server2

230 advance 3

240 kill terminate 1

250 start 400

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

После запуска модели на исполнение получены следующие результаты:

GPSS World Simulation Report - 25_2.92.1

Tuesday, June 17, 2014 14:57:40

START TIME END TIME BLOCKS FACILITIES STORAGES

0.000 7251.407 21 2 0

NAME VALUE

KILL 21.000

PEREMA 10002.000

QUEUES1 10003.000

QUEUES2 10005.000

SERVER1 10004.000

SERVER2 10006.000

TABLE1 10000.000

TABLE2 10001.000

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 400 0 0

2 ADVANCE 400 0 0

3 QUEUE 400 0 0

4 SEIZE 400 0 0

5 DEPART 400 0 0

6 ASSIGN 400 0 0

7 ADVANCE 400 0 0

8 TABULATE 400 0 0

9 RELEASE 400 0 0

10 ADVANCE 400 0 0

11 TRANSFER 400 0 0

12 ADVANCE 213 0 0

13 QUEUE 213 0 0

14 SEIZE 213 0 0

15 DEPART 213 0 0

16 ASSIGN 213 0 0

17 ADVANCE 213 0 0

18 TABULATE 213 0 0

19 RELEASE 213 0 0

20 ADVANCE 213 0 0

KILL 21 TERMINATE 400 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

SERVER1 400 0.995 18.029 1 0 0 0 0 0

SERVER2 213 0.525 17.875 1 0 0 0 0 0

QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

QUEUES1 180 0 400 1 88.697 1607.937 1611.967 0

QUEUES2 1 0 213 154 0.014 0.474 1.711 0

TABLE MEAN STD.DEV. RANGE RETRY FREQUENCY CUM.%

TABLE1 18.029 1.194 0

_ - 17.000 102 25.50

17.000 - 18.000 90 48.00

18.000 - 19.000 104 74.00

19.000 - 20.000 104 100.00

TABLE2 17.875 1.194 0

_ - 17.000 66 30.99

17.000 - 18.000 44 51.64

18.000 - 19.000 56 77.93

19.000 - 20.000 47 100.00

Изначально было поставлено задание смоделировать процесс обработки 400 запросов и определить:

– необходимую емкость накопителя для размещения ждущих запросов,

– распределение времени обслуживания запроса.

По первому пункту видно, что необходимая емкость накопителя для размещения ждущих запросов к первому серверу должна составлять 180 позиций. Это не очень хороший показатель, ведь почти каждая вторая заявка стоит в очереди.