Расчетно-пояснительная записка (954104), страница 8
Текст из файла (страница 8)
Таблица 7.7.
Оптимальные варианты размещения БД по узлам сети
БД1 | БД2 | БД3 | БД4 | БД5 | БД6 | БД7 | БД8 | БД9 | БД10 | Оценка варианта | |
Вар.1 | Y3 | Y6 | Y4 | Y4 | Y7 | Y6 | - | Y6 | Y7 | Y3 | 6947,1 |
Вар.2 | Y6 | Y6 | Y4 | Y4 | Y7 | Y6 | - | Y6 | Y7 | Y6 | 6947,1 |
Число обращений | 317 | 1242,5 | 1947 | 324 | 340,5 | 670,5 | - | 1130 | 88 | 443,8 |
Итак, получили, что в каждом из двух оптимальных вариантов размещения БД по узлам сети, суммарное количество обращений ко всем БД, т.е. суммарные затраты, составляют 6947,1.
8. Аналитическое моделирование сети.
Общая формализованная схема PCOD в виде сети массового обслуживания (СМО) приведена на рис. 8, а формализованная схема рассматриваемой PCOD в виде CMO приведена на рис. 9.
Рис. 8. Формализованная схема PCOD, содержащая ПЭВМ, канал и сервер.
Рис. 9. Формализованная схема рассматриваемой 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
lф1= К1min
К1 принимает значения в диапазоне 0.995…0.99995.
-
Определяем средние времена пребывания запроса в узлах системы: канале, процессоре, дисках:
-
Определяем интенсивность фонового потока после очередной итерации:
-
Сравниваем lф1 и lф .Если
, то переход на пункт 6, иначе на пункту 5
-
Определяем новое приближённое значение для lф1:
К2 принимает значения в диапазоне 10…1000, .
Переход на пункт 2.
-
Определяем выходные результаты аналитической модели.
Определяем средние времена пребывания запроса в узлах системы: канале, процессоре и дисках.
Определяем загрузку основных узлов системы: рабочей станции, пользователя, канала передачи данных, процессора и дисков сервера.
где
где
Листинг программы.
procedure TForm1.Button1Click(Sender: TObject);
var
NPC: integer; // 1. Количество рабочих станций
T0: integer; // 2. Среднее время дообработки рабочей станции
Tp: integer; // 3. Среднее время формирования запроса
tk1: real; // 4. Ср. время передачи по каналу в прямом напрвлении
tk2: real; // 5. Ср. время передачи по каналу в обратном напрвлении
C: integer; // 6. Количество процессоров
tpr: integer; // 7. Среднее время обработки запроса в процессоре
NDisk: integer; // 8. Количество дисков
tdi: real; // 9. Среднее время обработки запроса в диске
Pi: real; // 10. Верояность обращения к диску после обработки запроса в процессоре
P: real; // 11. Верояность обращения к процессору после обработки запроса в диске
K1: real; // 12. Коэффициент К1
K2: real; // 13. Коэффициент К2
prec: real; // 14. Точность
// -------------------------------------------------------------------------- //
minimum: real;
Lf: real; // Интеснивность фонового потока после очередной итерации
Lf1: real; // Средняя интесивность фонового поктока запросов
beta: real; // Среднее количество проходов запросов по тракту за 1 цикл
tk: real; // Среднее время передачи запроса по каналу
Tchan: real; // Среднее время пребывания запроса в канале
Tproc: real; // Среднее время пребывания запроса в процессоре
Tdisk: real; // Среднее время пребывания запроса в диске
Tcycle: real; // Время цикла
L: real; // Лямбда
iteration: integer;
roPC, roPolz, roChan, roProc, roDisk, roDisk2: real; // Загрузка узлов системы
delta1: real; // Вспомогательное значение (5й пункт)
begin
// Выполняем вычисления
// 1. Считываем данные с формы
NPC := StrToInt(Form1.Edit1.Text);
T0 := StrToInt(Form1.Edit2.Text);
Tp := StrToInt(Form1.Edit3.Text);
tk1 := StrToFloat(Form1.Edit4.Text);
tk2 := StrToFloat(Form1.Edit5.Text);
C := StrToInt(Form1.Edit6.Text);
tpr := StrToInt(Form1.Edit7.Text);
NDisk := StrToInt(Form1.Edit8.Text);
tdi := StrToFloat(Form1.Edit9.Text);
P := StrToFloat(Form1.Edit10.Text);
Pi := StrToFloat(Form1.Edit11.Text);
K1 := StrToFloat(Form1.Edit12.Text);
K2 := StrToFloat(Form1.Edit13.Text);
prec := StrToFloat(Form1.Edit14.Text);
// 2. Инициализируем вспомогательные переменные
beta := 1 / (1 - P);