.066,1/.133,2/.199,3/.266,4/.332,5/.399,6/.465,7/.532,8/.598,9
.665,10/.731,11/.798,12/.864,13/.931,14/1,15
* Определение порядка опроса:
Qorder function pl,dl5
1,2/2,3/3,4/4,5/5,6/6,7/7,8/8,9/9,10/10,11/11,12/12,13/13,14/14,15/15,1
* Предварительное задание значений факторов для эксперимента
q_time equ 100; Время опроса
t_time equ 10; Время передачи одного пакета
q_int equ 30000; Интенсивность запроса на рабочих станциях
* Время передачи 1 Кбайта из глобальной сети при скорости 3,6 Кбайт/с
gntime equ 278; 278 мс
generate „,1; Генерация опросного маркера
assign 1,1; Номер опрашиваемой рабочей станции
next seize channel; Опрос рабочей станции
Advance q_time
test ne ch*l,0,ifempty; Есть ли запрос на этой рабочей станции?
unlink pl,send_f,l; Передать запрос, если он есть
ifempty release channel; Занять канал для опроса
assign l,fn$qorder; Опрос следующей рабочей станции
Transfer,next
generate (exponential(3,0,q_int)),,,,l; Запрос с рабочей станции
assign l,fn$wsnum; № рабочей станции, сгенерировавшей запрос
assign 2,(gamma(4,0,.4,88)\l+l); Размер запроса, Кбайт
queue network; Фиксация появления запроса
link pl,fifo; Ждать опроса станции
send_f seize channel; Занять канал
advance (t_time#p2); Передать запрос
|
|
release channel; Освободить канал
seize cpu; Начать обработку запроса на сервере
advance p2; Время сборки запроса из пакетов
transfer.85,bdq,gnq; Запрос к БД или к сети?
bdq advance 50,40; Время обработки запроса к БД
Assign 2,(duniform(5,10,1024))
Transfer,send_b
* Обработка запроса к глобальной сети
* Поиск в глобальной сети. Время поиска зависит от скорости соединения с сетью
Gnq advance (gamma(6,0,gn_time/1390,10))
Assign 2,(duniform(7,50,150))
advance (gn_time#p2); Время получения данных из сети
Transfer,send_b
* Передача результатов обработки запроса на рабочую станцию
Sendjb release cpu
priority 2; Повысить приоритет для ответа
Seize channel
Advance (t_time#p2)
Release channel
depart network; Фиксация времени пребывания в сети
Terminate
generate 86400000; Таймер (24 часа = 86400 с = 86400000 мс)