Расчетно-пояснительная записка (954093), страница 8
Текст из файла (страница 8)
8. Аналитическое моделирование сети.
Общая формализованная схема PCOD в виде сети массового обслуживания (СМО) приведена на рис. 8, а формализованная схема рассматриваемой PCOD в виде CMO приведена на рис. 9.
Рис. 8. Формализованная схема PCOD, содержащая ПЭВМ, канал и сервер.
Рис. 9. Формализованная схема рассматриваемой PCOD.
В схеме используются следующие обозначения
- обслуживающий аппарат, имитирующий дообработку на i-той рабочей станции сети запроса от этой станции к серверу после обработки запроса на сервере
- обслуживающий аппарат, имитирующий формирование запроса от i-той рабочей станции к серверу; (
);
- буфер, имитирующий очередь запросов к каналу;
— обслуживающий аппарат, имитирующий задержку при передаче данных через канал;
- буфер, имитирующий очередь запросов к процессорам;
- обслуживающие аппараты, имитирующие работу процессоров.
- буфер, имитирующий очередь запросов к i-му диску;
- обслуживающий аппарат, имитирующий работу i-го диска.
Р - вероятность обращения запроса к ЦП после обработки на диске. Обслуживание заявок во всех ОА подчиняется экспоненциальному закону.
Исходными данными аналитической модели являются:
Обозначение | Описание |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Выходными характеристиками аналитической модели являются:
Обозначение | Описание |
|
|
|
|
|
|
|
|
Введём следующие обозначения:
lф1 – среднее значение суммарной интенсивности фонового потока запросов, выходящих из ОА, имитирующих работу рабочих станций, в канал
lф1b – среднее значение интенсивности фонового потока запросов, проходящих через ОА, имитирующих работу сервера и дисков, где b=1/(1–р) ;
b - среднее количество проходов запроса по тракту процессор-диски за время одного цикла его обработки в системе.
tк – среднее значение времени обработки запроса в канале передачи данных;
tк=0.5(tк1+ tк2 ).
Где tк1 и tк2 соответственно среднее время передачи запроса по каналу в прямом и обратном направлениях.
n – количество серверов, обслуживающих рабочие станции;
количество дисков в сервере, при условии, что все они одинаковые
- вероятность обращения к i-му диску сервера
Порядок расчета рассматриваемой системы методом фонового потока
При расчете используется приближённый итерационный алгоритм нахождения значения выходных характеристик рассматриваемой системы
-
Определяем начальное значение для lф1
lф1= К1min
К1 принимает значения в диапазоне 0.995…0.99995.
-
Определяем средние времена пребывания запроса в узлах системы: канале, процессоре, дисках:
-
Определяем интенсивность фонового потока после очередной итерации:
-
Сравниваем lф1 и lф .Если
, то переход на пункт 6, иначе на пункту 5
-
Определяем новое приближённое значение для lф1:
К2 принимает значения в диапазоне 10…1000, .
Переход на пункт 2.
-
Определяем выходные результаты аналитической модели.
Определяем средние времена пребывания запроса в узлах системы: канале, процессоре и дисках.
Определяем загрузку основных узлов системы: рабочей станции, пользователя, канала передачи данных, процессора и дисков сервера.
где
где
Листинг программы.
procedure TForm1.Button1Click(Sender: TObject);
var
NPC: integer; // 1. Количество рабочих станций
T0: integer; // 2. Среднее время дообработки рабочей станции
Tp: integer; // 3. Среднее время формирования запроса
tk1: real; // 4. Ср. время передачи по каналу в прямом напрвлении
tk2: real; // 5. Ср. время передачи по каналу в обратном напрвлении
C: integer; // 6. Количество процессоров
tpr: integer; // 7. Среднее время обработки запроса в процессоре
NDisk: integer; // 8. Количество дисков
tdi: real; // 9. Среднее время обработки запроса в диске
Pi: real; // 10. Верояность обращения к диску после обработки запроса в процессоре
P: real; // 11. Верояность обращения к процессору после обработки запроса в диске
K1: real; // 12. Коэффициент К1
K2: real; // 13. Коэффициент К2
prec: real; // 14. Точность
// -------------------------------------------------------------------------- //
minimum: real;
Lf: real; // Интеснивность фонового потока после очередной итерации
Lf1: real; // Средняя интесивность фонового поктока запросов
beta: real; // Среднее количество проходов запросов по тракту за 1 цикл
tk: real; // Среднее время передачи запроса по каналу
Tchan: real; // Среднее время пребывания запроса в канале
Tproc: real; // Среднее время пребывания запроса в процессоре
Tdisk: real; // Среднее время пребывания запроса в диске
Tcycle: real; // Время цикла
L: real; // Лямбда
iteration: integer;
roPC, roPolz, roChan, roProc, roDisk, roDisk2: real; // Загрузка узлов системы
delta1: real; // Вспомогательное значение (5й пункт)
begin
// Выполняем вычисления
// 1. Считываем данные с формы
NPC := StrToInt(Form1.Edit1.Text);
T0 := StrToInt(Form1.Edit2.Text);
Tp := StrToInt(Form1.Edit3.Text);
tk1 := StrToFloat(Form1.Edit4.Text);
tk2 := StrToFloat(Form1.Edit5.Text);
C := StrToInt(Form1.Edit6.Text);
tpr := StrToInt(Form1.Edit7.Text);
NDisk := StrToInt(Form1.Edit8.Text);
tdi := StrToFloat(Form1.Edit9.Text);
P := StrToFloat(Form1.Edit10.Text);
Pi := StrToFloat(Form1.Edit11.Text);
K1 := StrToFloat(Form1.Edit12.Text);
K2 := StrToFloat(Form1.Edit13.Text);
prec := StrToFloat(Form1.Edit14.Text);
// 2. Инициализируем вспомогательные переменные
beta := 1 / (1 - P);
tk := 0.5 * (tk1 + tk2);
iteration := 0;
// 3. Производим вычисления
// 1й пункт
if ((Pi = 0) or (tdi = 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;
Lf1 := K1 * minimum * ( (NPC - 1)/NPC );
while true do
begin
inc(iteration);
// 2й пункт
Tchan := (2*tk) / (1 - 2*Lf1*tk);
Tproc := (beta*tpr) / (1 - Power(beta*Lf1*tpr/C, C));
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);
Tproc := (beta*tpr) / (1 - Power(beta*Lf1*tpr/C, C));
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;
roProc := beta*L*tpr/C;
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;
end.
Результаты аналитического моделирования.
Таблица 8.1.
Результаты аналитического моделирования
Номер эксперимента | 1 | 2 | 3 | 4 | 5 | ||
Исходные данные | |||||||
Количество рабочих станций | 12 | 12 | 12 | 12 | 12 | ||
Среднее время дообработки запроса на РС | 120 | 240 | 360 | 120 | 240 | ||
Среднее время формирования запроса на РС | 120 | 240 | 360 | 120 | 240 | ||
Среднее время передачи через канал в прямом направлении | 5 | 5 | 5 | 5 | 5 | ||
Среднее время передачи через канал в обратном направлении | 5 | 5 | 5 | 5 | 5 | ||
Количество серверов | 1 | 1 | 1 | 1 | 1 | ||
Среднее время обработки запроса на процессоре | 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,95 | 0,97 | 0,86 | 0,93 | ||
Загрузка пользователя рабочей станции | 0,45 | 0,48 | 0,49 | 0,43 | 0,47 | ||
Среднее количество работающих РС | 11 | 11 | 12 | 10 | 11 | ||
Среднее количество РС формирующих запрос | 5 | 6 | 6 | 5 | 6 | ||
Загрузка канала | 0,45 | 0,24 | 0,16 | 0,43 | 0,23 | ||
Загрузка процессора | 0,22 | 0,12 | 0,08 | 0,43 | 0,23 | ||
Загрузка диска 1 | 0 | 0 | 0 | 0 | 0 | ||
Загрузка диска 2 | 0 | 0 | 0 | 0 | 0 | ||
Среднее время цикла системы | 267 | 503 | 742 | 280 | 514 | ||
Среднее время реакции системы | 147 | 263 | 382 | 160 | 274 | ||
Интенсивность фонового потока | 0,04 | 0,02 | 0,01 | 0,04 | 0,02 | ||
Число итераций | 674 | 797 | 849 | 667 | 796 |
9. Имитационное моделирование сети.