Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги2 / монография 31

.pdf
Скачиваний:
0
Добавлен:
10.05.2024
Размер:
3.71 Mб
Скачать

требуют перераспределения используемых в системе фрагментов таблиц. Например, появляется новый канал связи либо добавляется новый узел в распределенной системе.

Описание предлагаемого эвристического алгоритма:

Шаг 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

Соседние файлы в папке книги2