РПЗ_Чуркин!!! (954252), страница 11
Текст из файла (страница 11)
Рис. 13. Формализованная схема РСОД
В схеме используются следующие обозначения:
ОАДi - обслуживающий аппарат, имитирующий дообработку на i-той рабочей станции сети запроса от этой станции к серверу после обработки запроса на сервере;
ОАФi - обслуживающий аппарат, имитирующий формирование запроса от i-той рабочей станции к серверу;
С – количество процессоров (2)
Бcpu - буфер, имитирующий очередь запросов к процессорам;
ОАcpui - обслуживающий аппарат, имитирующий работу процессора;
Бдi - буфер, имитирующий очередь запросов к i-му диску;
ОАдi - обслуживающий аппарат, имитирующий работу i-го диска.
Обслуживание заявок во всех ОА подчиняется экспоненциальному закону.
Исходными данными для моделирования сети являются:
Данные для моделирования РСОД .Таблица 43.
Обозначение | Описание |
N | Количество рабочих станций сети |
Т0 | Среднее значение времени дообработки на рабочей станции сети запроса от этой станции к базе данных на сервере |
Тр | Среднее значение времени формирования запроса от рабочей станции сети к базе данных на сервере |
ND | Количество дисков |
С | Количество процессоров сервера |
Tцп | Среднее значение времени обработки запроса в ЦП сервера |
Tдi | Среднее значение времени обработки запроса в диске сервера |
Выходными характеристиками аналитической модели являются:
Выходные данные моделирования РСОД .Таблица 44.
Обозначение | Описание |
rпрi | Коэффициент загрузки ОА, имитирующего работу i-го процессора сервера |
rдi | Коэффициент загрузки ОА, имитирующего работу i-го диска сервера |
Треак | Среднее значение времени реакции системы |
NAPC | Среднее количество работающих рабочих станций |
NARpc | Среднее количество рабочих станций, формирующих запросы |
Тцикл | Среднее время цикла системы |
ruser | Коэффициент загрузки пользователя рабочей станции |
rРС | Коэффициент загрузки рабочих станций |
Введем следующие обозначения:
lф1 – среднее значение суммарной интенсивности фонового потока запросов, выходящих из ОА, имитирующих работу рабочих станций, в канал;
tк – среднее значение времени обработки запроса в канале передачи данных;
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.
-
Определяем выходные результаты аналитической модели. Определяем средние времена пребывания запроса в узлах системы: канале, процессорах и дисках.
Определяем загрузку основных узлов системы: рабочей станции, пользователя, канала передачи данных, процессоров и дисков сервера.
загрузка рабочей станции: ;
загрузка пользователя: где
;
загрузка процессора: ;
загрузка дисков: где
.
-
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MyModel
{
public partial class Form1 : Form
{
//const:
int N = 25;
int C = 1;
int Nd = 6;
double pi = (double)1/6;
double DEL = 0.000001;
double k1 = 0.999;
int k2 = 100;
//var:
int T0 = 140;
int Tp = 140;
int tcp = 20;
int td = 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 af1;
double Tcp;
double Td;
double af;
double del;
double tmp=0;
bool fin = false;
double a;
af1 = k1 * Math.Min(C / (tcp), 1 / ( pi * td)) * (N - 1) / N;
do
{
Tcp = tcp / (1 - Math.Pow(b * af1 * tcp / C, C));
Td = pi * td / (1 * 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 = tcp/(1-Math.Pow(af1*tcp/C,C));
_Td = pi*td/(1-pi*af1*td);
_Tc = T0 + Tp + _Tcp + _Td;
_pPC = (T0 + Tp) / _Tc;
_pU = Tp / _Tc;
a = N / _Tc;
_pCPU = a * tcp /C;
_pD = 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)
{
}
}
-
Результаты аналитического моделирования
Результаты аналитического моделирования .Таблица 25.
Номер эксперимента | 1 | 2 | 3 | 4 | 5 |
Исходные данные | |||||
Количество рабочих станций | 25 | 25 | 25 | 25 | 25 |
Количество ЦП сервера | 2 | 2 | 2 | 2 | 2 |
Количество дисков | 4 | 1 | 10 | 5 | 8 |
Время формирования запроса | 90 | 50 | 100 | 500 | 45 |
Время дообработки запроса | 90 | 10 | 10 | 100 | 20 |
Среднее время обработки запроса на сервере | 10 | 10 | 10 | 50 | 80 |
Среднее время обработки запроса на диске | 10 | 10 | 10 | 50 | 40 |
Результаты моделирования | |||||
Загрузка рабочей станции | См. | Приложение1 | |||
Загрузка пользователя рабочей станции | |||||
Среднее количество работающих РС | |||||
Среднее количество РС, формирующих запрос | |||||
Загрузка процессора | |||||
Загрузка диска | |||||
Среднее время цикла системы | |||||
Среднее время реакции системы |
-
Имитационное моделирование сети
-
Моделирование системы, содержащей 25 ПЭВМ, два ЦП и диски
-
Формализованная схема
-
-
В соответствии с техническим заданием, моделируем распределенную систему обработки данных, содержащую 25 ПЭВМ, два ЦП и диски.
Рис. 13. Формализованная схема РСОД
Исходные и выходные данные аналогичны соответствующим данным в аналитическом моделировании.
-
Листинг программы на языке GPSS
INITIAL X$STATION_N,25 ;количество рабочих станций
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 25
WS_F STORAGE 25
SERVER_CPU STORAGE 2
DISK_N FUNCTION RN1,D3
0.33,1/.66,2/1,3
EXPON FUNCTION RN1,C23