РПЗ Агаян (954314), страница 11
Текст из файла (страница 11)
Рис.8. Формализованная схема рассматриваемой PCOD
В схеме используются следующие обозначения
- обслуживающий аппарат, имитирующий дообработку на i-той рабочей станции сети запроса от этой станции к серверу после обработки запроса на сервере
- обслуживающий аппарат, имитирующий формирование запроса от i-той рабочей станции к серверу; (
);
- буфер, имитирующий очередь запросов к каналу;
— обслуживающий аппарат, имитирующий задержку при передаче данных через канал;
- буфер, имитирующий очередь запросов к процессорам;
- обслуживающие аппараты, имитирующие работу процессоров.
- буфер, имитирующий очередь запросов к i-му диску;
- обслуживающий аппарат, имитирующий работу i-го диска.
Р - вероятность обращения запроса к ЦП после обработки на диске. Обслуживание заявок во всех ОА подчиняется экспоненциальному закону.
Таблица 38. Исходные данные аналитической модели
Обозначение | Описание |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 39. Выходные характеристики аналитической модели
Обозначение | Описание |
|
|
|
|
|
|
|
|
Введём следующие обозначения:
lф1 – среднее значение суммарной интенсивности фонового потока запросов, выходящих из ОА, имитирующих работу рабочих станций, в канал
lф1b – среднее значение интенсивности фонового потока запросов, проходящих через ОА, имитирующих работу сервера и дисков, где b=1/(1–р) ;
b - среднее количество проходов запроса по тракту процессор-диски за время одного цикла его обработки в системе.
tк – среднее значение времени обработки запроса в канале передачи данных;
tк=0.5(tк1+ tк2 ).
Где tк1 и tк2 соответственно среднее время передачи запроса по каналу в прямом и обратном направлениях.
-
Порядок расчета рассматриваемой системы методом фонового потока.
При расчете используется приближённый итерационный алгоритм нахождения значения выходных характеристик рассматриваемой системы
-
Определяем начальное значение для lф1
К1 принимает значения в диапазоне 0.995…0.99995.
-
Определяем средние времена пребывания запроса в узлах системы: канале, процессоре, дисках:
-
Определяем интенсивность фонового потока после очередной итерации:
К2 принимает значения в диапазоне 10…1000, .
Переход на пункт 2.
-
Определяем выходные результаты аналитической модели.
Определяем средние времена пребывания запроса в узлах системы: канале, процессоре и дисках.
Определяем загрузку основных узлов системы: рабочей станции, пользователя, канала передачи данных, процессора и дисков сервера.
Примечание.
1. Количество рабочих станций должно соответствовать номеру варианта задания, за исключением следующих пяти случаев: для первого варианта N=31, для второго N=32, для третьего N=33, для четвертого N=34, для пятого N=35.
2. При проведении экспериментов среднее значение времени дообработки запроса на рабочей станции должно принимать следующие значения Т0 = 10*N , Т0 = 20*N ,
Т0 = 30*N
3. При проведении экспериментов среднее значение времени формирования запроса на рабочей станции сети к базе данных на сервере должно принимать следующие значения Т0 = 10*N , Т0 = 20*N , Т0 = 30*N.
4. При проведении экспериментов среднее значение времени передачи запроса по каналу, если канал медленный, должно принимать значение tк=-5
5. При проведении экспериментов средние значения времени обработки запроса в ЦП сервера и на диске сервера должны принимать следующие значения tцп =10 или tцп =20,
tд = 10 или tд = 20.
-
Листинг программы.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math, ExtCtrls, jpeg;
type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit16: TEdit;
Edit17: TEdit;
Edit18: TEdit;
Edit19: TEdit;
Button1: TButton;
Button2: TButton;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Image1: TImage;
Label23: TLabel;
Label24: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function GetMinimum(f1:real; f2:real; f3:real):real;
function GetPower( f:real;Power:real) :real;
var
Form2: TForm2;
//////////////////////////////////
NPC,NServ:Integer; //кол-во рабочих станций, серверов
MTQueryPC , // время дообработки запроса
MTFormQueryPC , //формирование запроса
MTTChannelDirect , // время передачи в прямом направлении
MTTChannelRevers , //время передачи в обратном направлении
MTQueryServer , //обработка на сервере
Precision : real;
implementation
{$R *.dfm}
function GetMinimum(f1:real; f2:real; f3:real):real;
var Minimum:real;
begin
Minimum := f1;
if (f2 < Minimum)then Minimum := f2;
if (f3 < Minimum)then Minimum := f3;
result:= Minimum;
end;
function GetPower( f:real;Power:real) :real;
var i:Integer;
begin
if Power=0 then result:= 1;
i:= 0;
while i < Power
do
begin
f := f*f;
i:= i+1;
end;
result:= f;
end;
function Calc():bool;
var tcs,T0,Tp,K1,K2,delta1,
Tk,Tc,Lf,B,Lf1,tk_,Ppc,
Pk,Pc,Tcircle,L, Treaction,Delta:real;
C :Integer;
N,IterationNumber :Integer;
begin
NPC := StrToInt(Form2.Edit1.Text);
NServ:= StrToInt(Form2.Edit6.Text);
MTQueryPC := StrToInt(Form2.Edit2.Text); // время дообработки запроса
MTFormQueryPC:= StrToInt(Form2.Edit3.Text); //формирование запроса
MTTChannelDirect := StrToInt(Form2.Edit8.Text); //время передачи в прямом направлении
MTTChannelRevers := StrToInt(Form2.Edit9.Text); //время передачи в обратном направлении
MTQueryServer := StrToInt(Form2.Edit7.Text); //обработка на сервере
Precision := StrToFloat(Form2.Edit5.Text);
IterationNumber :=0;
tcs := MTQueryServer; // время дообработки запроса
C := NServ;
N := NPC; //кол-во рабочих станций, серверов
T0 := MTQueryPC; // время дообработки запроса
Tp := MTFormQueryPC; //формирование запроса
K1 :=StrToFloat(Form2.Edit11.Text);
K2 := StrToInt(Form2.Edit13.Text);
delta1 := 0;
Tk := 0;
Tc := 0;
Lf := 0;
B := 1;
Lf1:= 0;
tk_ := 0.5 * (MTTChannelDirect + MTTChannelRevers);
// выходные данные
Ppc := 0;
Pk := 0;
Pc := 0;
Tcircle := 0;
L := 0;