Курсач (954121), страница 8
Текст из файла (страница 8)
- буфер, имитирующий очередь запросов к i-му диску;
- обслуживающий аппарат, имитирующий работу i-го диска.
Р – вероятность обращения запроса к ЦП после обработки на диске. Обслуживание заявок во всех ОА подчиняется экспоненциальному закону.
Таблица 30. Исходными данными аналитической модели являются:
Обозначение | Описание |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 31. Выходными характеристиками аналитической модели являются:
Обозначение | Описание |
|
|
|
|
|
|
|
|
Введём следующие обозначения:
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.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Analytic_model
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
int N = Convert.ToInt32(textBox1.Text);
double To = Convert.ToDouble(textBox2.Text);
double Tp = Convert.ToDouble(textBox3.Text);
double tk = Convert.ToDouble(textBox4.Text);
int C = Convert.ToInt32(textBox5.Text);
double tp = Convert.ToDouble(textBox6.Text);
double td = Convert.ToDouble(textBox7.Text);
double P = Convert.ToDouble(textBox8.Text);
double K1 = Convert.ToDouble(textBox9.Text);
double K2 = Convert.ToDouble(textBox10.Text);
double del = Convert.ToDouble(textBox11.Text);
double arg1 = 1 / 2 * tk;
double arg2 = C / tp;
double arg3 = 1 / P * td;
double v;
if (arg1 < arg2)
v = Math.Min(arg1, arg3);
else
v = Math.Min(arg2, arg3);
double Lf1 = K1 * v * ((N - 1) / N);
double Tk = 2 * tk / (1 - 2 * Lf1 * tk);
double Tpr = tp / (1 - Math.Pow(Lf1 * tp / C, C));
double Td = td / (1 - P * Lf1 * td);
double Lf = (N - 1) / (To + Tp + Tk + Tpr + Td);
if (Math.Abs(Lf1 - Lf) / Lf < del)
{
double b = (Lf1 - Lf) / K2;
Lf1 = Lf1 - b;
Tk = 2 * tk / (1 - 2 * Lf1 * tk);
Tpr = tp / (1 - Math.Pow(Lf1 * tp / C, C));
Td = td / (1 - P * Lf1 * td);
Lf = (N - 1) / (To + Tp + Tk + Tpr + Td);
}
double Tc = To + Tp + Tk + Tpr + Td;
double PC = (To + Tp) / Tc;
double US = Tp / Tc;
double rk = 2 * tk * (N / Tc);
double rp = (N / Tc) * tp / C;
double rd = P * td * (N / Tc);
double Tr = Tc - Tp;
int Nw = Convert.ToInt32(N * PC);
int Nq = Convert.ToInt32(N * US);
textBox12.Text = Convert.ToString(PC);
textBox13.Text = Convert.ToString(US);
textBox14.Text = Convert.ToString(Tc);
textBox15.Text = Convert.ToString(rk);
textBox16.Text = Convert.ToString(rp);
textBox17.Text = Convert.ToString(rd);
textBox18.Text = Convert.ToString(rd);
textBox19.Text = Convert.ToString(Tr);
textBox20.Text = Convert.ToString(Nw);
textBox21.Text = Convert.ToString(Nq);
tabItem2.IsSelected = true;
}
private void button2_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(@"Испольнитель: студентка группы ИУ5-94
Кострова Наталия");
}
}
}
Таблица 32. Результаты аналитического моделирования
Номер эксперимента | 1 | 2 | 3 | 4 | 5 |
Исходные данные | |||||
Количество рабочих станций | 14 | 14 | 14 | 14 | 14 |
Среднее время дообработки запроса на РС | 140 | 160 | 120 | 100 | 120 |
Среднее время формирования запроса на РС | 140 | 160 | 120 | 100 | 120 |
Среднее время передачи через канал в прямом направлении | 5 | 5 | 10 | 10 | 5 |
Среднее время передачи через канал в обратном направлении | 5 | 5 | 10 | 10 | 5 |
Количество процессоров | 1 | 1 | 1 | 1 | 1 |
Среднее время обработки запроса на процессоре | 10 | 40 | 10 | 20 | 20 |
Количество дисков | 6 | 6 | 6 | 6 | 6 |
Среднее время обработки запроса на диске | 20 | 20 | 40 | 10 | 40 |
Результаты моделирования | |||||
Загрузка рабочей станции | 0.875 | 0.82 | 0.774 | 0.8 | 0.774 |
Загрузка пользователя рабочей станции | 0.437 | 0.41 | 0.387 | 0.4 | 0.387 |
Среднее количество работающих РС | 12 | 11 | 11 | 11 | 11 |
Среднее количество РС формирующих запрос | 6 | 6 | 5 | 6 | 5 |
Загрузка канала | 0.437 | 0.283 | 0.743 | 0.843 | 0.45 |
Загрузка процессора | 0.437 | 1.43 | 0.682 | 0.843 | 0.78 |
Загрузка диска | 0.432 | 0.19 | 0.3 | 0.11 | 0.712 |
Среднее время цикла системы | 320 | 390 | 310 | 250 | 310 |
Среднее время реакции системы | 180 | 230 | 190 | 150 | 190 |
-
Имитационное моделирование сети
Имитационное моделирование рассматриваемой PCOD на GPSS
Формализованная схема РСОД в виде сети массового обслуживания (СМО) приведена на рисунке 21. В нее входят 16 рабочих станций и два сервера.