РПЗ_Мошкин (954311), страница 11
Текст из файла (страница 11)
tк=0.5(tк1+ tк2 ), где
tк1 – среднее время передачи запроса по каналу в прямом направлении;
tк2 – среднее время передачи запроса по каналу в обратном направлении;
n –количество серверов, обслуживающих рабочие станции;
– количество дисков в сервере, при условии, что все они одинаковые;
Pi– вероятность обращения к i-му диску сервера.
-
Порядок расчета рассматриваемой системы методом фонового потока
При расчете используется приближённый итерационный алгоритм нахождения значения выходных характеристик рассматриваемой системы.
-
Определяем начальное значение дляlф1:
К1принимает значения в диапазоне 0.995…0.99995.
-
Определяем средние времена пребывания запроса в узлах системы: канале, процессорах, дисках:
-
Определяем интенсивность фонового потока после очередной итерации:
-
Сравниваем lф1иlф. Если
, то переходим по пункту 6, иначе по пункту 5.
-
Определяем новое приближённое значение дляlф1:
К2принимает значения в диапазоне 10…1000, .
Переходим на пункт 2.
-
Определяем выходные результаты аналитической модели. Определяем средние времена пребывания запроса в узлах системы: канале, процессорах и дисках.
Определяем загрузку основных узлов системы: рабочей станции, пользователя, канала передачи данных, процессоров и дисков сервера.
загрузка рабочей станции: ;
загрузка пользователя: где
;
загрузка процессора: ;
загрузка дисков: где
.
-
Листинг программы
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceMyModel
{
publicpartialclass Form1 :Form
{
//const:
int N = 14;
int C = 1;
intNd = 6;
doublepi = (double)1/6;
double DEL = 0.000001;
double k1 = 0.999;
int k2 = 100;
//var:
int T0 = 140;
intTp = 140;
inttcp = 20;
inttd = 10;
//output:
double _Tcp;
double _Td;
double _pPC;
double _pCPU;
double _pU;
double _pD;
double _Tc;
double _Tr;
double _aW;
double _aF;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//----
N = Int32.Parse(textBox1.Text);
C = Int32.Parse(textBox2.Text);
Nd = Int32.Parse(textBox3.Text);
T0 = Int32.Parse(textBox5.Text);
Tp = Int32.Parse(textBox6.Text);
tcp = Int32.Parse(textBox7.Text);
td = Int32.Parse(textBox8.Text);
//----
pi = (double)1 / Nd;
double b = 1;
double af1;
doubleTcp;
double Td;
doubleaf;
double del;
doubletmp=0;
bool fin = false;
double a;
af1 = k1 * Math.Min(C / (b * tcp), 1 / (b * pi * td)) * (N - 1) / N;
do
{
Tcp = b * tcp / (1 - Math.Pow(b * af1 * tcp / C, C));
Td = b * pi * td / (1 - b * pi * af1 * td);
af = (N - 1) / (T0 + Tp + Tcp + Td);
tmp = Math.Abs(af1 - af) / af;
if (tmp< DEL) fin = true;
else
{
del = (af1 - af) / k2;
af1 = af1 - del;
}
} while (fin!=true);
Tcp = b*tcp/(1-Math.Pow(b*af1*tcp/C,C));
_Td = b*pi*td/(1-b*pi*af1*td);
_Tc = T0 + Tp + _Tcp + _Td;
_pPC = (T0 + Tp) / _Tc;
_pU = Tp / _Tc;
a = N / _Tc;
_pCPU = b * a * tcp /C;
_pD = b * a * pi * td;
_aW = _pPC * N;
_aF = Tp*N / _Tc;
_Tr = _Tc - Tp;
textBox4.Clear();
textBox4.Text += Math.Round(_pPC, 3); //pPC
textBox9.Clear();
textBox9.Text += Math.Round(_pU, 3); //pUser
textBox10.Clear();
textBox10.Text += Math.Round(_aW, 3); //aWorkload
textBox11.Clear();
textBox11.Text += Math.Round(_aF, 3); //aForming
textBox12.Clear();
textBox12.Text += Math.Round(_pCPU, 3); //pCPU
textBox13.Clear();
textBox13.Text += Math.Round(_pD, 3); //pDisk
textBox14.Clear();
textBox14.Text += Math.Round(_Tc, 3); //tCicle
textBox15.Clear();
textBox15.Text += Math.Round((_Tc - Tp), 3); //tReaction
;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void label5_Click(object sender, EventArgs e)
{
}
private void outputText1_TextChanged(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void label10_Click(object sender, EventArgs e)
{
}
private void label18_Click(object sender, EventArgs e)
{
}
}
}
-
Результаты аналитического моделирования
Таблица 45. Результаты аналитического моделирования
Номер эксперимента | 1 | 2 | 3 | 4 | 5 |
Исходные данные | |||||
Количество рабочих станций | 45 | 45 | 45 | 14 | 14 |
Количество ЦП сервера | 2 | 2 | 2 | 140 | 140 |
Количество дисков | 4 | 10 | 1 | 140 | 420 |
Время формирования запроса | 90 | 100 | 50 | 5 | 5 |
Время дообработки запроса | 90 | 10 | 10 | 5 | 5 |
Среднее время обработки запроса на сервере | 10 | 10 | 10 | 1 | 1 |
Среднее время обработки запроса на диске | 10 | 10 | 10 | 20 | 10 |
Результаты моделирования | |||||
Загрузка рабочей станции | 0,744 | 0,478 | 0,133 | 0,52 | 0,036 |
Загрузка пользователя рабочей станции | 0,372 | 0,043 | 0,022 | 0,087 | 0,011 |
Среднее количество работающих РС | 33,463 | 21,531 | 5,974 | 10,927 | 1,623 |
Среднее количество РС, формирующих запрос | 16,731 | 1,957 | 0,996 | 23,379 | 0,499 |
Загрузка процессора | 0,93 | 0,979 | 0,498 | 3,896 | 0,999 |
Загрузка диска | 0,465 | 0,196 | 0,996 | 0,974 | 0,125 |
Среднее время цикла системы | 242,062 | 229,9 | 451,93 | 1154,89 | 1802,12 |
Среднее время реакции системы | 152,062 | 219,9 | 441,93 | 1054,89 | 1782,12 |
-
Имитационное моделирование сети
-
Моделирование системы, содержащей 45 ПЭВМ, два ЦП и диски
-
Формализованная схема
-
-
В соответствии с техническим заданием, моделируем распределенную систему обработки данных, содержащую 45 ПЭВМ, два ЦП и диски.
Рис. 13. Формализованная схема РСОД
Исходные и выходные данные аналогичны соответствующим данным в аналитическом моделировании.
-
Листинг программы на языке GPSS
INITIAL X$STATION_N,45 ;количество рабочих станций
INITIAL X$STATION_TD,90 ;дообработка запроса
INITIAL X$STATION_TF,90 ;формирование запроса
INITIAL X$SERVER_CPU_T,10 ;время работы процессора
INITIAL X$DISK_N,4 ;количество дисковых массивов на сервере (RAID-10)
INITIAL X$DISK_T,10 ;время работы дискового массива
WS_D STORAGE 45
WS_F STORAGE 45
SERVER_CPU STORAGE 2
DISK_N FUNCTION RN1,D3
0.33,1/.66,2/1,3
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
WS_FORM QUEUE QSYSTEM
*******************************************************************************
;формирование запроса
ENTER WS_F,1
ADVANCE (Exponential(1,0,X$STATION_TF))
LEAVE WS_F,1
*******************************************************************************
;обработка на сервере
;процессоры
SVR_CPU ENTER SERVER_CPU,1 ;занятие одного из ЦП сервера
ADVANCE (Exponential(1,0,X$SERVER_CPU_T))
LEAVE SERVER_CPU,1