В GPSS объекты типа "очередь" вводятся для сбора статистических данных.
Статистика об очередях собирается в моменты входа транзакта в блок QUEUE (вход в очередь) или в блок DEPART (выход из очереди).
Формат записи блока QUEUE:
QUEUE A,[B]
Блок QUEUE увеличивает длину очереди.
В поле А задается номер или имя очереди, к длине которой добавляются единицы. Операнд может быть именем, положительным целым, СЧА.
Поле В определяет число единиц, на которое увеличивается текущая длина очереди. Если поле В пусто, то прибавляется единица.
Когда сообщение входит в блок QUEUE, то ищется очередь с именем, определенным операндом А. Если необходимо, очередь создается.
Поскольку к очереди добавляются единицы, а не сами сообщения, не составляется список членов очереди. Сообщения в этот же момент условного времени пытаются перейти к следующему блоку.
Поскольку очередь обычно используется для измерения времени ожидания, за блоком QUEUE обычно следуют такой блок как SEIZE, который может задержать сообщение.
Одно и то же сообщение может одновременно увеличить длину нескольких очередей, т.е. сообщение может войти в несколько блоков QUEUE перед тем, как войти в соответствующие блоки DEPART.
Значение текущей длины очереди хранится в СЧА Q$<имя очереди>.
Блок DEPART имеет следующий формат:
DEPART A,[B]
Блок DEPART служит для уменьшения длины очереди.
В поле А задается номер или имя очереди, длину которой нужно уменьшить. В поле В задается число единиц, на которое уменьшается длина очереди. Это число не должно превышать текущую длину очереди. Если поле В пусто, длина очереди уменьшается на единицу.
Задания для самостоятельной работы:
- Увеличьте (уменьшите) на три единицы длину очереди с номером 3;
- Обнулите длину очереди QPR.
В результате выполнения программы моделирования работы вычислительной системы GPSS выдаст отчет:
GPSS World Simulation Report - proba31.2.1
Wednesday, January 19, 2000 20:42:57
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 60243.977 7 1 0
NAME VALUE
B 10001.000
BR 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 166 0 0
2 QUEUE 166 65 0
3 SEIZE 101 1 0
4 DEPART 100 0 0
5 ADVANCE 100 0 0
6 RELEASE 100 0 0
7 TERMINATE 100 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B 101 0.991 590.877 1 101 0 0 0 65
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
BR 67 66 166 1 31.107 11289.054 11357.472 0
CEC XN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE
101 0 38246.575 101 3 4
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
167 0 60773.872 167 0 1
Основные обозначения:
START TIME – время начала моделирования
END TIME - время окончания моделирования
BLOCKS - количество блоков, используемых в программе
FACILITIES – количество устройств
STORAGES – количество многоканальных устройств, для которых определяется емкость накопителя
Далее приводится информация о блоках:
LOC – номер блока, назначенный системой
BLOCK TYPE – название блока
ENTRY COUNT – количество транзактов, прошедших через блок за время моделирования
СURRENT COUNT – количество транзактов, задержанных в блоке на момент конца моделирования
RETRY – количество транзактов, ожидающих специальных условий для прохождения через данный блок
Отчет о работе устройства
FACILITY – название устройства
ENTRIES – количество транзактов, прошедших через устройство
UTIL. – вероятность загрузки устройства (часть периода моделирования, когда устройство было свободно)
AVE. TIME – среднее время обработки одного транзакта устройством
AVAIL. – состояние готовности устройства на момент конца моделирования (1 –готово к обслуживанию очередной заявки; 0 – не готово)
OWNER – номер последнего транзакта занимающего устройство (если не занималось, то значение 0)
PEND – количество транзактов, ожидающих устройство, и находящихся в режиме прерывания
INTER – количество транзактов, прерывающих устройство в данный момент
RETRY – количество транзактов, ожидающих специальных условий, зависящих от состояния объекта типа «устройство»
DELAY – определяет количество транзактов, ожидающих занятия или освобождения устройства
Статистика об очередях:
QUEUE – имя очереди
MAX - максимальная длина очереди
CONT. – текущая длина очереди
ENTRY – общее количество входов
ENTRY(0)- количество «нулевых» входов
AVE.CONT. – средняя длина очереди
AVE.TIME – среднее время пребывания транзактов в очереди
AVE.(-0) – среднее время пребывания в очереди без учета «нулевых» входов
RETRY – количество транзактов, ожидающих специальных условий
Информация о списке текущих событий
CEC (Current Events Chain)
XN – номер транзакта
PRI – приоритет транзакта (по умолчанию - 0)
M1 – время пребывания транзакта в системе с момента начал моделирования
ASSEM - номер семейства транзактов
CURRENT – номер блока в котором находится транзакт
NEXT – номер блока в который перейдет транзакт далее
PARAMETER – номер или имя параметра транзакта
VALUE – значение параметра
Информация о списке будущих событий
FEC (Future Events Chain)
XN – номер транзакта
PRI – приоритет транзакта
BDT - таблица модельных событий – абсолютное модельное время выхода транзакта из списка будущих событий (и перехода транзакта в список текущих событий)
ASSEM - номер семейства транзактов
CURRENT - номер блока в котором находится транзакт (0 – если транзакт не вошел в модель)
NEXT - номер блока в который перейдет транзакт далее
PARAMETER – номер или имя параметра транзакта
VALUE – значение параметра
Задача. Изменим условие задачи. Пусть в вычислительной системе два компьютера (интенсивность обработки заданий одинаковая), все остальные условия остаются без изменений.
В среде GPSS программа, моделирующая работу вычислительной системы, выглядит следующим образом:
NAK STORAGE 2
GENERATE 360,300
QUEUE BR
ENTER NAK
DEPART BR
ADVANCE 600,540
LEAVE NAK
TERMINATE 1
START 100
Обратите внимание, в программе появилась дополнительная строка NAK STORAGE 2.
И блоки SEIZE – RELEASE заменены соответственно на блоки ENTER –LEAVE, моделирующие работу с многоканальным устройством.
Рассмотрим подробнее работу этих блоков.