Расчетно-пояснительная записка (954104), страница 9
Текст из файла (страница 9)
tk := 0.5 * (tk1 + tk2);
iteration := 0;
// 3. Производим вычисления
// 1й пункт
{ if ((Pi = 0) or (tdi = 0) or (tpr = 0)) then
begin
if ( (1/(2*tk)) < (C / (beta*tpr)) ) then
minimum := 1/(2*tk) else minimum := C / (beta*tpr);
end
else
begin
if ( (1/(2*tk)) < (C / (beta*tpr)) ) then
begin
if ((1/(2*tk)) < (1 / (beta*Pi*tdi)))
then minimum := 1/(2*tk)
else minimum := 1 / (beta*Pi*tdi);
end
else
begin
if ((C / (beta*tpr)) < (1 / (beta*Pi*tdi)))
then minimum := C / (beta*tpr)
else minimum := 1 / (beta*Pi*tdi);
end;
end;
}
if ((1/(2*tk)) < (1 / (beta*Pi*tdi)))
then minimum := 1/(2*tk)
else minimum := 1 / (beta*Pi*tdi);
Lf1 := K1 * minimum * ( (NPC - 1)/NPC );
while true do
begin
inc(iteration);
// 2й пункт
Tchan := (2*tk) / (1 - 2*Lf1*tk);
if (C <> 0) then Tproc := (beta*tpr) / (1 - Power(beta*Lf1*tpr/C, C))
else roProc := 0;
Tdisk := (beta*tdi) / (1 - beta*Pi*Lf1*tdi);
// 3й пункт
Lf := (NPC - 1) / (T0 + Tp + Tchan + Tproc + Tdisk);
// 4й пункт
if ( (Abs(Lf1 - Lf) / Lf) < prec ) then break;
// 5й пункт
delta1 := (Lf1 - Lf) / K2;
Lf1 := Lf1 - delta1;
end;
// 6й пункт
Tchan := (2*tk) / (1 - 2*Lf1*tk);
if (C <> 0) then Tproc := (beta*tpr) / (1 - Power(beta*Lf1*tpr/C, C))
else roProc := 0;
Tdisk := (beta*tdi) / (1 - beta*Pi*Lf1*tdi);
Tcycle := T0 + Tp + Tchan + Tproc + Tdisk;
roPC := (T0 + Tp) / Tcycle;
roPolz := Tp / Tcycle;
L := NPC / Tcycle;
roChan := 2*L*tk;
if (C <> 0) then roProc := beta*L*tpr/C else roProc := 0;
roDisk := beta*L*Pi*tdi;
if (Ndisk = 1) then roDisk2 := 0 else roDisk2 := roDisk;
// 4. Выводи результаты
Form2.Edit1.Text := FloatToStr( roundTo (roPC, -2) );
Form2.Edit2.Text := FloatToStr( roundTo ((T0/Tcycle), -2) );
Form2.Edit3.Text := FloatToStr( roundTo (roPC * NPC, 0) );
Form2.Edit4.Text := FloatToStr( roundTo ((T0/Tcycle) * NPC, 0) );
Form2.Edit5.Text := FloatToStr( roundTo (roChan, -2) );
Form2.Edit6.Text := FloatToStr( roundTo (roProc, -2) );
Form2.Edit7.Text := FloatToStr( roundTo (roDisk, -2) );
Form2.Edit8.Text := FloatToStr( roundTo (roDisk2,-2) );
Form2.Edit9.Text := FloatToStr( roundTo (Tcycle, -2) );
Form2.Edit10.Text:= FloatToStr( roundTo (Tcycle - Tp, -2) ); // Время реакции
Form2.Edit11.Text := FloatToStr( roundTo (Lf1, -2) );
Form2.Edit12.Text := IntToStr( iteration );
Form2.ShowModal;
end;
Результаты аналитического моделирования.
Таблица 8.1.
Результаты аналитического моделирования
Номер эксперимента | 1 | 2 | 3 | 4 | 5 | ||
Исходные данные | |||||||
Количество рабочих станций | 13 | 13 | 13 | 13 | 13 | ||
Среднее время дообработки запроса на РС | 130 | 260 | 390 | 130 | 260 | ||
Среднее время формирования запроса на РС | 130 | 260 | 390 | 130 | 260 | ||
Среднее время передачи через канал в прямом направлении | 5 | 5 | 5 | 5 | 5 | ||
Среднее время передачи через канал в обратном направлении | 5 | 5 | 5 | 5 | 5 | ||
Количество серверов | 2 | 2 | 2 | 2 | 2 | ||
Среднее время обработки запроса на сервере | 10 | 10 | 10 | 20 | 20 | ||
Количество дисков | 0 | 0 | 0 | 0 | 0 | ||
Среднее время обработки запроса на диске | 0 | 0 | 0 | 0 | 0 | ||
Вероятность обращения запроса к диску сервера после обработки запроса на сервере | 0 | 0 | 0 | 0 | 0 | ||
Вероятность обращения запроса к ЦП после обработки на диске | 0 | 0 | 0 | 0 | 0 | ||
Результаты моделирования. | |||||||
Загрузка рабочей станции | 0,9 | 0,96 | 0,97 | 0,84 | 0,93 | ||
Загрузка пользователя рабочей станции | 0,45 | 0,48 | 0,49 | 0,42 | 0,47 | ||
Среднее количество работающих РС | 12 | 12 | 12 | 11 | 12 | ||
Среднее количество РС формирующих запрос | 6 | 6 | 6 | 5 | 6 | ||
Загрузка канала | 0,45 | 0,24 | 0,16 | 0,42 | 0,23 | ||
Загрузка серверов | 0 | 0 | 0 | 0 | 0 | ||
Загрузка диска 1 | 0,22 | 0,12 | 0,08 | 0,42 | 0,23 | ||
Загрузка диска 2 | 0,22 | 0,12 | 0,08 | 0,42 | 0,23 | ||
Среднее время цикла системы | 290 | 544 | 802 | 309 | 558 | ||
Среднее время реакции системы | 160 | 284 | 412 | 179 | 298 | ||
Интенсивность фонового потока | 0,04 | 0,02 | 0,01 | 0,04 | 0,02 | ||
Числа итераций | 671 | 796 | 848 | 652 | 791 |
9. Имитационное моделирование сети.
Имитационное моделирование рассматриваемой PCOD на GPSS
Формализованная схема моделируемой PCOD приведена на рис. 10.
Рис. 10. Формализованная схема моделируемой PCOD.
Укрупненная структура программы моделируемой РСОД на языке GPSS
Структура программы имеет следующий вид (табл. 9.1.)
Таблица 9.1.
Структура программы.
Блоки и метки | Пояснение |
INITIAL | Задание количественных и временных параметров исходных данных моделируемой системы |
STORAGE | Задание многоканальных узлов системы |
FUNCTION | Задание функции распределения запросов по узлам и времени выполнения запросов в узлах |
GENERATE | Генерация количества задач, циркулирующих в системе |
Метка WOSF | Объединяет набор блоков, описывающих формирование запроса на рабочей станции |
Метка CAN | Объединяет набор блоков, описывающих обработку запроса в канале |
Метка SVR | Объединяет набор блоков, описывающих обработку запроса в дисках |
Метка REP | Объединяет набор блоков, описывающих правило перехода запроса после обработки на диске в канал |
Метка WOSD | Объединяет набор блоков, описывающих дообработку запроса на рабочей станции |
Текст программы на языке GPSS
INITIAL X$STATION_N,13
INITIAL X$STATION_TD,130
INITIAL X$STATION_TF,130
INITIAL X$CANAL_T,5
INITIAL X$SERVER_T,10
INITIAL X$DISK_N,2
INITIAL X$DISK_T,10
FLAG1 VARIABLE 0
FLAG2 VARIABLE 1
WORKSTATION_D STORAGE 13
WORKSTATION_F STORAGE 13
WORKSTATION_PC STORAGE 13
SERVER STORAGE 1
DISK_N FUNCTION RN1,D2
0.5,1/1,2
EXPON FUNCTION RN1,C23
0,0/.1,.104/.2,.222/.3,.355/.4,.510/.5,.69/.6,.915/.7,1.2/
.75,1.37/.8,1.5/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.82/
.95,2.98/.96,3.2/.97,3.5/.98,3.9/.995,5.3/.998,6.2/.9995,7/1,8
GENERATE ,,,X$STATION_N
ASSIGN FLAG1,V$FLAG1
ASSIGN FLAG2,V$FLAG2
WOSF QUEUE QSYSTEM
QUEUE QREACTION
ENTER WORKSTATION_F,1
ADVANCE X$STATION_TF,FN$EXPON
LEAVE WORKSTATION_F,1
ASSIGN 3,SVR
TEST E P$FLAG1,P$FLAG2,CAN
LEAVE WORKSTATION_PC,1
CAN QUEUE QCANAL
SEIZE CANAL
DEPART QCANAL
ADVANCE X$CANAL_T,FN$EXPON
RELEASE CANAL
TRANSFER ,P3
SVR ASSIGN 5,FN$DISK_N
QUEUE P5
SEIZE P5
DEPART P5
ADVANCE X$DISK_T,FN$EXPON
RELEASE P5
PER ASSIGN 3,WOSD
TRANSFER ,CAN
WOSD DEPART QREACTION
ENTER WORKSTATION_PC,1
ENTER WORKSTATION_D,1
ADVANCE X$STATION_TD,FN$EXPON
LEAVE WORKSTATION_D,1
DEPART QSYSTEM
ASSIGN FLAG1,1
TRANSFER ,WOSF
GENERATE 100000
TERMINATE 1
START 1
Листинг программы имитационного моделирования
GPSS World Simulation Report - Имитационное моделирование.12.1