Белоус К.С. ИУ5-99 (954031), страница 8
Текст из файла (страница 8)
Полученные результаты, показывающие оптимальные варианты размещения БД по узлам сети, записываем в таблицу 6.5.
Оптимальные варианты размещения БД по узлам сети
| БД1 | БД2 | БД3 | БД4 | БД5 | БД6 | БД7 | БД8 | БД9 | БД10 | Оценка варианта |
Вар.1 | У3 | У1 | У4 | У5 | У5 | У1 | У5 | У6 | У3 | У5 | 6899 |
Вар.2 | У3 | У1 | У4 | У5 | У5 | У1 | У6 | У6 | У3 | У5 | 6899 |
Число обращений | 130 | 1417,5 | 1380 | 287,5 | 127,5 | 445 | 600 | 1680 | 104 | 727,5 |
|
Таблица 6.5. Оптимальный вариант размещении БД по узлам сети.
Итак, получили, что в каждом из двух оптимальных вариантов размещения БД по узлам сети, суммарное количество обращений ко всем БД, т.е. суммарные затраты, составляют 6899.
-
Аналитическое моделирование
-
Формализованная схема и исходные данные рассматриваемой РСОД
Формализованная схема рассматриваемой PCOD в виде CMO приведена на рис.20.
Рис.20. Формализованная схема рассматриваемой 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
К1 принимает значения в диапазоне 0.995…0.99995.
-
Определяем средние времена пребывания запроса в узлах системы: канале, процессоре, дисках:
-
Определяем интенсивность фонового потока после очередной итерации:
К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 KR_ASOIU
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.Height = 414;
this.Width = 714;
int N = Convert.ToInt32(textBox6.Text); // Число РС
double T0 = Convert.ToDouble(textBox5.Text); // Вр. дооработки запроса на РС
double Tp = Convert.ToDouble(textBox4.Text); // Вр. формирования запроса на РС
int C = Convert.ToInt32(textBox7.Text); // Кол-во процессоров сервера
double Tn = Convert.ToDouble(textBox10.Text); // Вр. обработки запроса в процессоре
int M = Convert.ToInt32(textBox9.Text); // Кол-во дисков сервера;
double Td = Convert.ToDouble(textBox8.Text); // Вр. обработки запроса в сервере
double Pii; // Вер-ть обращения к i-му диску
double G; // Вер-ть пост. з-са после обр-ки снова в процессор
double b;
double v, v1, v2; //интенсивность фонового потока
double TnL;
double TdL;
double L, L1, L2, Ld, D1;
double TTp; // Время цикла системы
double Ppc; //загрузка РС
double Pn; //Загрузка процессора
double Pd; //Загрузка диска
double Pu; //Загрузка пользователя РС
double Tr; //Время реакции системы
double Nw;
double Np;
int i;
double K1 = Convert.ToDouble(textBox1.Text);
double K2 = Convert.ToDouble(textBox2.Text);
double delta = Convert.ToDouble(textBox3.Text); //коэф-ты
double temp;
if (M!=0) {
Pii = 1/(double)M;
}
else Pii=0;
G=0;
b=(1-G); //b=1
v1=C/(b*Tn); //интенсивность фонового потока запросов в процессоры
v2=1/(b*Pii*Td); //интенсивность фонового потока запросов в диски
if (v1<v2) {
v=v1;
}
else v=v2;
L2=K1*v*(N-1)/N; //среднее значение суммарной интенсивности
do{
L1=L2;
TnL = Tn * b / (1 - Math.Pow(L1*Tn/C, C)); //процессорное время
TdL=Td*b*Pii/(1-b*Pii*L1*Td); //время дисков
L=(N-1)/(T0+Tp+(TnL+TdL));
D1=Math.Abs(L1-L)/K2;
L2=L1-D1;
temp = Math.Abs((L1 - L) / L);
}
while (temp > delta);
TTp=T0+Tp+(TnL+TdL);
Ppc=(T0+Tp)/TTp;
Ld=N/TTp;
Pn=(Tn*b*Ld)/C;
Pd=b*Td*Pii*Ld;
Pu=Tp/TTp;
Tr=TTp-Tp;
Nw=N*((T0+Tp)/TTp); //количество работающих PC
Np=N*(T0/TTp); //количество PC, формир. запрос
//Вывод
textBox14.Text = Convert.ToString(Ppc);
textBox13.Text = Convert.ToString(Pn);
textBox12.Text = Convert.ToString(Pd);
textBox11.Text = Convert.ToString(TTp);
textBox18.Text = Convert.ToString(Pu);
textBox17.Text = Convert.ToString(Tr);
textBox16.Text = Convert.ToString(Nw);
textBox15.Text = Convert.ToString(Np);
// MessageBox.Show(Convert.ToString(M));
}
private void button2_Click(object sender, EventArgs e)