
книги2 / монография 31
.pdfтребуют перераспределения используемых в системе фрагментов таблиц. Например, появляется новый канал связи либо добавляется новый узел в распределенной системе.
Описание предлагаемого эвристического алгоритма:
Шаг 0. Присваиваем переменной OSC максимально возможное целое число.
Шаг 1. Вычисляем элементы кортежа FQ(m) с частотами запросов к фрагментам. Элемент m кортежа это сумма частот всех запросов к фрагменту , генерируемых во всех отдельных узлах системы.
Присваиваем значение 0 всем элементам кортежа FQ.
В цикле для каждого фрагмента с номерами m от 1 до M подсчитываем для каждого узла системы (для k от 1 до K), и для всех прикладных процессов , выполняемых в этом узле (данные
матрицы ):
вычисляем сумму SQ(p,k,m) частот генерации процессом p в
узле k информационных запросов к фрагменту (данные из матрицы ) и частот генерации запросов на модификацию этого фрагмента (данные из матрицы ),
полученную сумму SQ(p,k,m) умножаем на частоту PF(k,p) выполнения процесса p в узле k (данные матрицы PF),
результат прибавляем к FQ(m).
Конец цикла.
В итоге мы имеем кортеж FQ(m) элемент m которого равен сумме частот всех запросов к фрагменту , генерируемых в системе всеми прикладными процессами во всех узлах системы.
Шаг 2. Заполняем элементы кортежа FDS (Fragment Distribution Sequence) номерами фрагментов, отсортированных в порядке убывания количества запросов к фрагменту. Кортеж FDS, который будет определять очередность распределения фрагментов по узлам системы, формируем следующим образом.
Присваиваем значение 0 всем элементам кортежа FDS.
119
В цикле по fn от 1 до M заполняем кортеж FDS:
В цикле по всем элементам кортежа FQ(m) ищем элемент с максимальным значением суммы частот запросов.
Запоминаем его номер в элементе FDS(fn) кортежа.
Удаляем этот элемент из кортежа FQ(m), тем самым уменьшая количество его элементов.
Конец цикла по номерам фрагментов fn.
Получили кортеж FDS, заполненный номерами фрагментов, упорядоченных в порядке убывания сумм частот запросов к данному фрагменту.
Далее на шаге 4 в этом порядке будет производиться распределение фрагментов по узлам системы.
Шаг 3. Вычисляем для всех фрагментов и для всех узлов системы значения элементов матрицы FW с весами фрагментов по формуле
(6.18).
В цикле для каждого узла системы (для k от 1 до K) и для каждого фрагмента с номерами m от 1 до M
рассчитываем значение элемента матрицы FW(k,m) веса фрагмента m для узла k.
Конец цикла по k и по m.
По завершению цикла имеем матрицу FW с весами фрагментов для каждого узла системы.
Шаг 4. Распределяем фрагменты |
по узлам системы |
|
|
последовательно, в цикле по отсортированным номерам фрагментов, сохраненным в кортеже FDS.
В цикле N1 по номерам фрагментов m от 1 до M выбираем номер очередного фрагмента из кортежа FDS(m), и присваиваем этот номер переменной nm. Получили в переменной nm номер очередного фрагмента, для которого будет произведен поиск поиска узла системы – кандидата для размещения в нем фрагмента с номером в nm.
Шаг 4.1. В цикле N2 по узлам системы (для k от 1 до K) ищем в элементах nm-го столбца матрицы FW(k,nm) элемент столбца с наибольшим значением веса фрагмента с номером из nm.
120
Запоминаем в переменной nk номер строки столбца найденного элемента столбца (равный номеру узла системы) с наибольшим значением соответствующего элемента FW(k,nm).
Конец цикла N2 поиска узла с наибольшим весом текущего фрагмента.
В итоге, выбран узел с номером nk – как кандидат для размещения в нем фрагмента с номером nm. Присваиваем Y(nm, nk)=1.
Шаг 4.2. Проверка выполнения ограничений задачи при размещении фрагмента nm в узле nk.
Условие (6.12): суммарный объем всех фрагментов,
размещенных в узле nk, не превышает емкость этого узла.
Условие (6.13): количество фрагментов, размещенных в узле nk, не превышает максимальное количество т .
Условие (6.14): фрагмент nm размещен в одном экземпляре в узле системы nk.
Если хотя бы одно из ограничений не выполняется, то Присваиваем Y(nm, nk)=0.
Обнуляем вес фрагмента nm для узла nk для того, чтобы этот узел больше не рассматривался в цикле N2 поиска узла – кандидата для размещения фрагмента nm:
Присваиваем FW(nk,nm) = 0.
Возврат на Шаг 4.1. к проверке возможности размещения фрагмента в другом узле.
Если ограничения выполняются, то проверяем, приводит ли данное размещение текущего фрагмента nm к улучшению (уменьшению) значения целевой функции.
Для этого:
Рассчитываем сумму L_OSC затрат на функционирование системы при текущем распределении Y фрагментов в узлах системы по формуле (6.23):
_ = + +
Если _ < , то
Значение целевой функции улучшается.
121
Возврат на Шаг 4.1. иначе
Значение целевой функции не улучшается. Присваиваем Y(nm, nk)=0.
Возврат на Шаг 4.1. Конец цикла N2 (Шаг 4.1).
Возврат в Шаг 4. Переходим к размещению очередного фрагмента.
Конец цикла N 1 (Шаг 4.)
Процесс распределения фрагментов закончен.
Шаг 5. Проверяем то, что все M фрагментов размещены по узлам системы.
Так как в рассматриваемой модели каждый из M фрагментов может и должен быть размещен только в одном узле системы, то должно выполняться условие:
∑ ∑ = |
(4.26) |
=1 =1
Если условие (4.26) не выполнено, то при заданных параметрах распределение фрагментов не найдено и необходима корректировка параметров или ограничений задачи и ее повторное решение.
Шаг 6. Для полученного распределения рассчитываем по формуле (4.25) значение AvRPT среднего времени ответа на запрос и проверяем выполнение ограничения (4.15):
≤
Если это ограничение не выполняется, то необходимо повторное решение после корректировки параметров задачи или данного ограничения.
Данный алгоритм реализован на языке C++ в среде MS Visual Studio 2019.
122

4.7.Пример № 1 решения задачи оптимального размещения фрагментов таблиц
Имеется фрагмент распределенной системы, топология которой представлена взвешенным графом = ( , Г). Дуги графа раскрашены весами – стоимостью передачи единицы данных (стоимость связи) между парами смежных узлов графа.
Ниже приведены матрицы с исходными данными задачи для фрагмента распределенной системы, имеющего следующие параметры: K = 6 – число узлов системы, P = 6 – количество процессов, решаемых в узлах системы, M = 6 – количество фрагментов.
Топология фрагмента системы представлена графом на рисунке
4.1.
Рис.4.1. Топология фрагмента системы
Для распределенной системы задана матрица = { }
стоимости передачи единицы данных (стоимость связи) между |
||||
|
|
|
̅̅̅̅̅ |
|
всеми парами узлов системы , |
|
(, = |
||
1, ). |
||||
|
|
|
|
Так же задано первоначальное распределение фрагментов по узлам системы. Начальное распределение задано в Таблице 4.1 и показано на рисунке 4.2.
123

Таблица 4.1. Начальное распределение фрагментов №1
Фрагмент |
F1 |
F2 |
F3 |
F4 |
F5 |
F6 |
Узел |
|
|
|
|
|
|
N1 |
1 |
0 |
1 |
0 |
1 |
1 |
N2 |
1 |
1 |
1 |
0 |
0 |
0 |
N3 |
0 |
0 |
1 |
1 |
0 |
1 |
N4 |
1 |
1 |
0 |
0 |
0 |
1 |
N5 |
0 |
1 |
0 |
1 |
1 |
0 |
N6 |
0 |
1 |
0 |
1 |
1 |
0 |
|
|
|
|
|
|
|
Рис.4.2. Начальное распределение №1 фрагментов по узлам системы
Характеристики системы при данном начальном распределении фрагментов таблиц следующие:
Сумма затрат на функционирование системы равно 29 324 единиц.
Среднее время обработки запроса в системе равно 9 единицам. Задача заключается в поиске нового размещения фрагментов
РБД, более оптимального, чем начальное размещение фрагментов. Матрица стоимости связи (матрица инцидентности с весами
дуг) для рассматриваемого примера графа представлена в таблице
4.2.
124
Таблица 4.2. Матрица CoC стоимости связи
|
Узлы |
|
|
N1 |
|
|
N2 |
|
|
N3 |
|
|
N4 |
|
|
N5 |
|
|
N6 |
|
|
системы |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N1 |
|
0 |
|
15 |
|
15 |
|
0 |
|
0 |
|
20 |
|
||||||
|
N2 |
|
15 |
|
0 |
|
17 |
|
16 |
|
0 |
|
0 |
|
||||||
|
N3 |
|
15 |
|
17 |
|
0 |
|
15 |
|
20 |
|
17 |
|
||||||
|
N4 |
|
0 |
|
16 |
|
15 |
|
0 |
|
8 |
|
0 |
|
||||||
|
N5 |
|
0 |
|
0 |
|
20 |
|
8 |
|
0 |
|
20 |
|
||||||
|
N6 |
|
20 |
|
0 |
|
17 |
|
0 |
|
20 |
|
0 |
|
Так как топология компьютерной системы известна, то на основе матрицы стоимости передачи данных, с использованием любого известного алгоритма поиска кратчайших путей в графе, формируется матрица затрат на передачу запросов по кратчайшим
путям между узлами системы |
= { |
|
|
|
|
̅̅̅̅̅̅ |
. Матрица |
||||||||||||||||
}, , = 1, |
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
представлена в таблице 4.3. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Таблица 4.3. Матрица DTC затрат на передачу информации по |
|||||||||||||||||||||||
|
|
|
кратчайшим путям |
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Узлы |
|
|
N1 |
|
|
N2 |
|
|
N3 |
|
|
N4 |
|
|
N5 |
|
|
N6 |
|
|
|
|
|
системы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N1 |
|
0 |
|
15 |
|
|
15 |
|
30 |
|
35 |
|
20 |
|
|
|
|||||
|
|
N2 |
|
15 |
|
0 |
|
|
17 |
|
16 |
|
24 |
|
34 |
|
|
|
|||||
|
|
N3 |
|
15 |
|
17 |
|
|
0 |
|
15 |
|
20 |
|
17 |
|
|
|
|||||
|
|
N4 |
|
30 |
|
16 |
|
|
15 |
|
0 |
|
8 |
|
28 |
|
|
|
|||||
|
|
N5 |
|
35 |
|
24 |
|
|
20 |
|
8 |
|
0 |
|
20 |
|
|
|
|||||
|
|
N6 |
|
20 |
|
34 |
|
|
17 |
|
28 |
|
20 |
|
0 |
|
|
|
Заданы стоимостные (SE ,SU) и временные (TE ,TU) затраты на обработку информационных запросов и запросов на модификацию данных, которые представлены ниже в таблице 4.4.
125
Таблица 4.4. Характеристики процессов обработки запросов
|
Узел / |
|
|
N1 |
|
|
N2 |
|
|
N3 |
|
|
N4 |
|
|
N5 |
|
|
N6 |
|
|
Вектор |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TE |
|
13 |
|
15 |
|
14 |
|
15 |
|
14 |
|
13 |
|
||||||
|
SE |
|
2 |
|
3 |
|
3 |
|
4 |
|
3 |
|
3 |
|
||||||
|
TU |
|
26 |
|
28 |
|
27 |
|
28 |
|
27 |
|
28 |
|
||||||
|
SU |
|
5 |
|
6 |
|
7 |
|
8 |
|
6 |
|
5 |
|
Определим стоимость хранения фрагментов в различных узлах системы. Пусть нам задан кортеж DSC со стоимостью хранения единицы данных в узлах системы (таблица 4.5) и рассчитаны размеры фрагментов данных – матрица FV (таблица 4.6).
Таблица 4.5. Кортеж DSCстоимость хранения единицы данных
Узел |
1 |
2 |
3 |
4 |
5 |
6 |
Стоимость |
10 |
20 |
15 |
22 |
20 |
10 |
Таблица 4.6 Матрица FV с размерами фрагментов
Фрагмент |
F1 |
F2 |
F3 |
F4 |
F5 |
F6 |
Размер |
35 |
55 |
42 |
70 |
46 |
63 |
Для каждого фрагмента , используя данные кортежа DSC и матрицы FV (вектор с размерами фрагментов), получим значения матрицы FSC (fragment storage cost) стоимости хранения фрагментов таблиц в разных узлах системы (таблица 4.7):
( |
, |
) = ( ) ( ), |
= 1, . . , , |
|
|
|
|
= 1, … ,
126
Таблица 4.7. Матрица FSC стоимости хранения фрагментов
Узел |
|
|
|
|
|
|
Фрагмент |
N1 |
N2 |
N3 |
N4 |
N5 |
N6 |
F1 |
350 |
550 |
420 |
700 |
460 |
630 |
F2 |
700 |
1 100 |
840 |
1 400 |
920 |
1 260 |
F3 |
525 |
825 |
630 |
1 050 |
690 |
945 |
F4 |
770 |
1 210 |
924 |
1 540 |
1 012 |
1 386 |
F5 |
700 |
1 100 |
840 |
1 400 |
920 |
1 260 |
F6 |
350 |
550 |
420 |
700 |
460 |
630 |
|
|
|
|
|
|
|
Известны следующие параметры прикладных процессов и запросов, которые генерируются в ходе выполнения этих процессов в узлах системы.
Матрица PF(k,p), представленная ниже в таблице 4.8 содержит частоты выполнения прикладных процессов в узлах распределенной системы. Каждый процесс во время работы может генерировать как несколько информационных запросов, так и несколько запросов на модификацию данных в разных фрагментах.
Таблица 4.8. Матрица PF(k,p) частот выполнения процессов в узлах
Узел |
|
|
Процесс |
|
|
|
Nk |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
N1 |
3 |
2 |
11 |
2 |
4 |
5 |
N2 |
4 |
2 |
2 |
3 |
2 |
3 |
N3 |
4 |
13 |
1 |
15 |
2 |
2 |
N4 |
12 |
2 |
1 |
4 |
2 |
1 |
N5 |
1 |
2 |
9 |
3 |
5 |
14 |
N6 |
2 |
1 |
2 |
8 |
12 |
1 |
|
|
|
|
|
|
|
В таблице 4.9 представлена матрица PQE(p,m) с частотами генерации информационных (поисковых) запросов к фрагментам РБД, генерируемых во время исполнения процессов в системе. Матрица PQU(p,m) (таблица 4.10) содержит частоты генерации в прикладных процессах запросов на модификацию фрагментов таблиц РБД.
127
Таблица 4.9. Матрица ( , ) частот генерации информационных запросов
|
Про- |
|
Фрагменты таблиц |
|
|
||||
|
цесс |
|
F1 |
F2 |
F3 |
F4 |
|
F5 |
F6 |
|
P1 |
|
9 |
3 |
26 |
4 |
|
7 |
4 |
|
P2 |
|
1 |
2 |
3 |
14 |
|
2 |
2 |
|
P3 |
|
2 |
3 |
3 |
2 |
|
23 |
3 |
|
P4 |
|
3 |
1 |
2 |
1 |
|
2 |
23 |
|
P5 |
|
2 |
25 |
3 |
2 |
|
1 |
2 |
|
P6 |
|
25 |
2 |
2 |
3 |
|
4 |
2 |
|
Итого |
|
42 |
36 |
39 |
26 |
|
39 |
36 |
Таблица 4.10. Матрица ( , ) частот генерации запросов на обновление фрагментов
|
Про- |
|
Фрагменты таблиц |
|
|
||||
|
цесс |
|
F1 |
F2 |
F3 |
F4 |
|
F5 |
F6 |
|
P1 |
|
1 |
2 |
48 |
13 |
|
3 |
5 |
|
P2 |
|
3 |
2 |
3 |
24 |
|
4 |
4 |
|
P3 |
|
3 |
4 |
4 |
2 |
|
19 |
2 |
|
P4 |
|
3 |
5 |
4 |
2 |
|
5 |
22 |
|
P5 |
|
9 |
24 |
4 |
4 |
|
2 |
5 |
|
P6 |
|
19 |
4 |
3 |
3 |
|
13 |
7 |
|
Итого |
|
38 |
41 |
66 |
48 |
|
46 |
45 |
Элементы кортежа NQ(k) (таблица 4.11) представляют собой количество всех запросов к фрагментам, генерируемыми в отдельных узлах системы. Значения NQ(k) подсчитываются на основе матриц PF(k,p), PQE(p,m) и PQU(p,m).
128