Оптимальное управление приоритетной очередью в памяти одного уровня

Труды Карельского научного центра РАН № 5. 2011. С. 103-110

УДК 004.01:006.72

ОПТИМАЛЬНОЕ УПРАВЛЕНИЕ ПРИОРИТЕТНОЙ ОЧЕРЕДЬЮ В ПАМЯТИ ОДНОГО УРОВНЯ

А. В. Соколов, А. В. Драц

Институт прикладных математических исследовании Карельского научного центра РАН

В работе предложены новые математические модели для представления приоритетной очереди в виде n последовательных FIFO-очередей. На основе этих моделей предложены алгоритмы и комплекс программ, которые позволяют для заданных вероятностей выполнения основных операций находить оптимальный способ представления приоритетной очереди в смысле максимизации среднего времени до переполнения памяти и в смысле минимизации доли потерянных при переполнении элементов.

Ключевые слова: приоритетная очередь, FIFO-очереди, случайное блуждание, цепи Маркова, динамические структуры данных.

A. V. Sokolov, A. V. Drats. OPTIMAL CONTROL OF PRIORITY QUEUE IN SINGLE LEVEL MEMORY

The paper contains new mathematical models concerning representation of a priority queue in single level memory as n serial FIFO queues. Proceeding from these models we propose the algorithms and programs which allow to find the optimal way of representation of a priority queue in the sense of maximizing the average time until memory overflow and in the sense of minimizing the proportion of lost elements when the probabilities are known.

Key words: Priority queue, FIFO-queues, random walks, Markov chains, dynamic data structures.

Введение

Во многих приложениях используется структура данных, в которой основными операциями являются вставка элемента и удаление элемента с наибольшим приоритетом (ключом). Такую структуру данных называют приоритетной очередью. Основными методами реализации такой структуры данных являются упорядоченные и неупорядоченные списки, массивы, бинарные деревья, пирамиды

([Кормени др., 2000; Кнут, 2001; Боллапаргада и др., 2002]).

В этих и других работах различные методы представления приоритетной очереди сравниваются с точки зрения стоимости (времени) выполнения основных операций. Целью данной работы является изучение динамики изменения длины очереди в разных методах представления. При этом допускается возможность ее переполнения, что, например, в маршрутизаторах является обычной ситуацией. В

работе будут рассмотрены представления в виде массива и в виде п последовательных Р1РО-очередей. Предлагаются новые математические модели в виде случайных блужданий по целочисленной п-мерной решетке, описывающие работу приоритетной очереди, представленной в виде п последовательных Р1РО-очередей. Для представления в виде массива использована предложенная ранее модель в виде одномерного случайного блуждания. На основе этих моделей разработаны программы, которые позволяют для заданных значений параметров проектируемой или настраиваемой программной или аппаратной системы выбирать оптимальный метод представления приоритетной очереди.

В случае представления в виде массива вместе с каждым элементом необходимо хранить его приоритет. В этом случае переполнение наступит только тогда, когда вся свободная память закончится, но часть памяти тратится на хранение приоритетов.

В случае представления приоритетной очереди в виде п последовательных Р1РО-очередей все элементы с одинаковыми приоритетами помещаются в одну Р1РО-очередь. (Число Р1РО-очередей равно количеству приоритетов в приоритетной очереди). Каждой Р1РО-очереди выделен свой участок памяти. В этом случае память не тратится на хранение приоритетов, но могут возникнуть потери памяти тогда, когда одна из Р1РО-очередей полностью исчерпает свою часть памяти, а остальные заполнят ее не полностью. Здесь возникает дополнительная задача оптимального разбиения памяти между Р1РО-очередями.

Если использовать связанное представление очередей, т. е. хранить каждую Р1РО-очередь не в виде массива, а в виде связного списка, то этот метод представления приоритетной очереди сводится к представлению в виде массива. Вместе с каждым элементом хранить нужно будет не его приоритет, а указатель на следующий элемент Р1РО-очереди. Поэтому этот случай представления приоритетной очереди мы отдельно рассматривать не будем.

В качестве первого критерия оптимальности рассмотрим среднее время работы до переполнения Т. Этот критерий применяется в том случае, если переполнение является аварийной ситуацией.

Переполнение памяти не всегда является аварийной ситуацией. Если допускаются потери элементов, то в случае попытки включения элемента, он просто отбрасывается, если нет

свободной памяти для него. Так продолжается до тех пор, пока не появится свободная память, т. е. до исключения элемента. Такое поведение очереди называется «сбросом хвоста» [Боллапаргада и др., 2002]. Такая схема применяется, например, в работе сетевых маршрутизаторов. В этом случае разумно будет минимизировать долю времени, которую приоритетная очередь проводит в состоянии «сброса хвоста» Р*. Тем самым минимизируется доля потерянных элементов. Эта величина рассмотрена в качестве второго критерия. Будем считать, что такая схема работы применяется в течение длительного промежутка времени, поэтому время можно условно считать бесконечным.

ПостАновкА зАДАчи

Рассмотрим очередь с п приоритетами, расположенную памяти размера т (т > п). Будем считать, что время дискретно, и в каждый момент времени происходит одна из следующих операций:

• Вставить элемент с приоритетом г с вероятностью рг (1 ^ г ^ п);

• Удалить элемент с наибольшим приоритетом с вероятностью д;

• Найти элемент с наибольшим приоритетом с вероятностью г.

Рг +-+ Рп + д + г = 1.

Вероятности не зависят от времени и количества элементов в очереди. Наивысший приоритет равен п, наименьший - 1. Работа начинается с пустой очереди. Предположим также, что не происходит завершения работы в случае исключения элемента из пустой структуры данных.

Требуется построить математические модели рассматриваемых методов представления приоритетной очереди, на их основе найти среднее время работы Т и долю времени Р* и разработать программы выбора лучшего метода представления приоритетной очереди для данных критериев оптимальности.

Критерий максимизации времени работы до переполнения. Представление в виде массива

Введем обозначения: р = рг +    + рп -суммарная вероятность включения элемента в приоритетную очередь, х = хг + ••• + хп - общее количество элементов, I - отношение размера памяти, которую занимает ключ к размеру информационной части.

©'

Будем считать, что информационная часть

m

занимает одну единицу памяти. M = -----

_ 1 + 1 _

- размер памяти, который тратится на размещение информационных частей, он же равен общему количеству элементов, которые можно разместить в памяти. Например, если элемент массива объявлен как struct node{DataT info; DataKey key;}; sizeof(info)= 4*sizeof(key); sizeof(info) = 4 байт и размер памяти равен

40 байт, то т = 10 единиц памяти, I = 1/4 и М = 1+1 = 8 единиц памяти (единица памяти равна 4 байта). В работах [Феллер, 1964], [Тарасюк, 2008], [Аксенова, Соколов, 2008] в качестве математической модели было предложено случайное блуждание в интервале длины М. х = —1 - отражающий экран. х = М + 1 -поглощающий экран. Переходы между состояниями:

(x) р (x') = / (x + 1) 0 ^ Х ^ M - 1

v ' ^ ' у Поглощающее состояние x = M

(х) __—___у (х;) = (х) 0 ^ х ^ М

Было показано, что среднее время работы до переполнения равно

M1

+ <;тЫ(Р) M+1 -1) , p=q

T =

q — p (q — p)2 V\pJ

1 (M + 1)(M + 2),

p=q

Критерий максимизации времени работы до переполнения. Представление в виде п последовательных Е^С-очередей

Пусть А1,..., Ап - фиксированное разбиение памяти между очередями. В качестве математической модели рассмотрим блуждание

по целочисленному п-мерному параллелепипеду, ограниченному гиперплоскостями хг = 0, хг = Аг,

— отражающие барьеры. хг = Аг + 1 — поглощающие барьеры. Количество состояний равно Пп=1(^г + 1).

Перенумеруем состояния в лексикографическом порядке следующим образом:

(0,0,0,..., Ап-1 _ 1, 0), (0,0,0,..., Ап-1 _ 1,1),..., (0,0,0,..., Ап-1 — 1, Ап — 1),

(0,0,0,..., Ап-1,0), (0, 0, 0,..., Ап-1, 1),..., (0,0, 0,..., Ап-1, Ап — 1),

(А1, А2, А3, . . . , Ап-1, 0), (А1, А2, А3, . . . , Ап-1, 1), . . . , (А1, А2, А3, . . . , Ап-1, Ап — 1),

Пример нумерации состояний показан на в состояние (х/1,...,хП) происходит в соответ-

рис. 1. Переход системы из состояния (х1,...,хп) ствии с правилами (4).

хз

х1 =0 хз х1 = 1

7 11 15 19 23 27 31 35 39

6 10 14 18 22 26 30 34 38

5 9 13 17 21 25 29 33 37

0 4 8 12 16 х2 20 24 28 32 36 х2

43

42

41

х1 = 2

47 51 55 59

46 50 54 58

45 49 53 57

40 44 48 52 56 х2

3

2

1

Рис. 1. Нумерация состояний при т = 9, п = 3, А1 = 2, А2 =4, А3 = 3

(..., хг + 1,..., х^-,...) 0 ^ хг < Аг

Поглощающее состояние хг = Аг

д . (... ,хг,... ,х^-,...) х1 = ••• = хп = 0 1 (. ..,хг — 1,...,х^-,...) 1 ^ хг ^ Аг, хг+1 =

= хп = 0

1 ^ г ^ п, 1 ^ ^ п, г = ^.

Для описания процесса построим соответствующую поглощающую цепь Маркова. Необходимо построить матрицу вероятностей переходов ^. Для этого нужно знать номер каждого состояния. Для вычисления номера состояния построим функцию Р(х1,х2,..., хп) = I, где I - номер состояния.

Если есть только одна очередь, то функция имеет вид: Р(х1) = хь Если появляется вторая очередь, то состояния (хг) становятся эквивалентными (хг, 0). Между состояниями (хг, 0) и (хг+1, 0) нужно вставить А2 — 1 состояний: (хг, 1), (хг, 2),..., (хг, Ап-1 — 1), поэтому функция будет иметь вид Р(х1, х2) = А2х1 +х2.

При появлении третьей очереди получаем функцию

Р(х1, х2, х3) = А3(А2х1 + х2) + х3.

Рассуждая таким образом, получим для п очередей функцию

Р(х1,х2, . . . ,хп) = Ап(Ап-1(. . . (А3(А2х1 + х2) + х3) +-----+ хп-1) + хп.

Для построения матрицы переходных вероятностей нужно в цикле перебрать все состояния (от (0, 0, . . . , 0, 0) до (0, 0, . . . , 0, М)) и вычислить вероятности перехода из I-того состояния в остальные (I = Р(х1, х2 ..., хп)):

ф[^(Жі, Ж2, . . . , Ж„)][^(Жі, Ж2, . . . , Жп + 1)] = Рп

^[^

і^і^га у >

^[Е(Жі,Ж2, . . . ,Жп)][-Р(Жі,Ж2, . . . ,Жп)] = г

Для вычисления среднего времени блуждания нужно вычислить фундаментальную матрицу N = (Е — ^)-1 [Кемени, Снелл, 1970]. N3 - среднее время, которое процесс проведет в состоянии ], если он начался в состоянии г. Поскольку работа начинается с пустых структур данных, то г = 0 и Т = ^ N03.

з

Чтобы найти оптимальное разбиение памяти, необходимо перебрать все возможные разбиения памяти, для каждого из них найти среднее время работы до переполнения и выбрать наибольшее время. Всего для размера памяти т и п очередей существует С п-1 _ (т-1)!

ут— і

ордан, 1963].

(п-і)!(т-п)!

способов разбиения [Ри-

Управление на бесконечном времени. Представление в виде массива

Как и в предыдущем критерии часть памяти тратится на хранение приоритетов. Всего

т

можно хранить М

I + 1

элементов в па-

(ж) р > (ж') =

(ж) я ) (ж') =

(ж + 1) 0 ^ ж ^ М

(ж) ж = М + 1

(ж) ж = 0

(ж — 1) 1 ^ ж ^ М

(ж — 2) ж = М + 1

(ж) 0 ^ ж ^ М

(ж — 1) ж = М + 1

д — р

р *

р

м+і

1

р

М+1

д = р

д = р

Управление на бесконечном времени. Представление в виде п последовательных ЕШЭ-очередей

Пусть А1, . . . , Ап - фиксированное разбиение памяти между очередями. В качестве математической модели рассмотрим блуждание по целочисленному п-мерному параллелепипеду, ограниченному гиперплоскостями хг = 0, хг = Аг, (1 ^ г ^ п). Дополнительно к каждому состоянию на гиперплоскостях хз = Аз введем состояние «сброса хвоста». Количество обычных состояний равно Пп=1(Аг + 1).

Количество состояний «сброса хвоста», соответствующих ^-й очереди равно

П(кг + 1).

мяти. В качестве математической модели рассмотрим блуждание в одномерном интервале длины М. Переход из состояния (ж) в состояние (ж') происходит в соответствии со следующими правилами:

і=і

і=І

Общее количество состояний «сброса хвоста» равно:

/

\

І] П

і=і \ї=і \*=.7

/

Задача сводится к вычислению доли времени, которую проводит одна РІРО-очередь в состоянии «сброса хвоста». Эта задача была решена в работе [Аксенова и др., 2009]:

Перенумеруем сначала обычные состояния в лексикографическом порядке, как в предыдущем параграфе, затем перенумеруем состояния «сброса хвоста», соответствующие гиперплоскости х1 = А1, затем соответствующие гиперплоскости х2 = А2 и т. д. На каждой гиперплоскости хг = Аг перенумеруем состояния в лексикографическом порядке, по аналогии с обычными состояниями. Пример нумерации состояний показан на рис. 2. Состояния с номерами больше 35 являются состояниями «сброса хвоста».

Перенумеруем состояния в лексикографическом порядке следующим образом:

107

д

хз

57

жі =0

58 59 60і

5 8 11 50

4 7 10 49

хз

61

14

13

17 20 23

16 19 22

хі = 1

"62і 63 64

53

52

0 3 6 9 48 ж2 12 15 18 21 51 ж2

жі = 2

66 67 68і жз

29 32 35 56 38 41 44 47

28 31 34 55 37 40 43 46

27 30 33 54 ж2 36 39 42 45

ж і = 3

Х2

Рис. 2. Нумерация состояний при т = 7, п = 3, к і = 2, к2 = 3, кз =2

Переход системы из состояния (жі,...,жп) им матрицу вероятностей переходов Для

в состояние (х1, . . . , жП) происходит в соответ- обычных состояний ее вид будет такой же, как

ствии с правилами (7). ив предыдущем параграфе. Для состояния

Для описания процесса построим соответ- «сброса хвоста» на плоскости ж^ = к матрица

ствующую регулярную цепь Маркова. Постро- вероятностей переходов принимает вид (8).

(. ..,Жі,...,Х,... ) >

(. ..,Жі,...,хі,... ) ---*_>.

Жі + 1 ,Ж' ,. .. ) 0 < жі < кі , ж' <

Жі + 1 ,Ж' - 1 ,. .) 0 < жі < кі , ж' = +1

Жі ,. Ж ...) Жі = кі + 1 , Ж' <

Жі ,. Жі -1 . .. ) Жі = кі + 1 , ж ' = +1

Жі ,. Ж ... ) Ж1 = = • • • = Ж„ =0

Жі ,. Ж' -1 . .. ) 0 < жі < Ж' > 0, Ж'+1 = • • = Жп = 0

Жі - 1 ,Ж' - 1 ,. .) Жі = кі + 1, Ж' > 0, Ж'+1 = • • • = Жп =0

Жі ,. Жі - 2 ,. .. ) 0 < Жі < кі, Ж' = к. + 1, Ж'+1 = • • • = Жп

Жі - 1 ,Ж' - 2 ,. .) Жі = к + 1, ж ' = к + 1, Ж'+1 = • • • = Жп

Жі Ж , ... ) 0 < Жі < кі , ж' < к'

Жі Жі -1 . .. ) 0 < Жі < кі , ж' = к' + 1

2

1

0

/

п і— 1 п

Е

і=і з=і г=і

і=і \г=і /

+кп(кп—і... кі+і(кі—1(... (кз(к2жі + ж2) + жз) +------------------+ жі—і) + жі+і +--+ жп—і) + ж^

\

(і08).

Таблица 1. Среднее время работы до переполнения Т, п = 4, т = 24

г 0 0 0 0 0.5 0 0 0.1 0

Р1 0,15 0,2 0,05 0,2 0,1 0,4 0,05 0,18 0,1

Р2 0,15 0,15 0,1 0,2 0,1 0,1 0,05 0,1 0,1

Р3 0,15 0,1 0,15 0,2 0,1 0,05 0,1 0,1 0,1

Р4 0,15 0,05 0,2 0,2 0,1 0,05 0,4 0,02 0,1

9 0,4 0,5 0,5 0,2 0,1 0,4 0,4 0,5 0,6

к1 9 13 6 7 7 17 5 13 9

к2 6 6 7 7 7 3 4 5 6

кз 5 3 6 6 6 2 6 4 5

к4 4 2 5 4 4 2 9 2 4

Т 64,3 234,98 200,46 27,32 54,65 78,32 68,37 1165,8 2868,62

11 55,05 182 182 21,11 42,22 55,05 55,05 729,5 112102,41

12 75,01 306 306 27,78 55,56 75,01 75,01 2000,45 49763,85

14 90 420 420 32,78 65,56 90 90 4086,81 14678,92

18 100 506 506 36,11 72,22 100 100 6506,26 2839,29

Таблица 2. Доля времени, которую приоритетная очередь проводит в состоянии «сброса хвоста» Т, п = 4, т = 16

г 0 0 0 0 0, 5 0 0 0,1 0

Р1 0,15 0,2 0,05 0,2 0,1 0,4 0,05 0,18 0,1

Р2 0,15 0,15 0,1 0,2 0,1 0,1 0,05 0,1 0,1

Рз 0,15 0,1 0,15 0,2 0,1 0,05 0,1 0,1 0,1

Р4 0,15 0,05 0,2 0,2 0,1 0,05 0,4 0,02 0,1

9 0,4 0,5 0,5 0,2 0,1 0,4 0,4 0,5 0,6

&1 9 10 4 12 12 13 7 9 6

к2 3 3 5 2 1 1 2 3 4

кз 3 2 4 1 1 1 3 3 3

к4 2 1 3 1 2 1 4 1 3

р * 0,2011 0,0433 0,0456 0,6 0,3 0,2 0,2009 0,01 0,0041

11 0,20534 0,0556 0,0556 0,6 0,3 0,1155 0,1155 0,0155 0,00543

12 0,20234 0,0455 0,0455 0,6 0,3 0,1094 0,1094 0,0094 0,00234

14 0,201 0,0385 0,0385 0,6 0,3 0,1058 0,1058 0,00582 0,00103

18 0,2005 0,0333 0,0333 0,6 0,3 0,1036 0,1036 0,00365 0,00046

У построенной цепи Маркова существует предельный вектор а, который удовлетворяет уравнению а * ^ = а [Кемени, Снелл, 1970]. По закону больших чисел значение аг является долей времени, которое процесс проводит в состоянии г. Чтобы найти долю времени, которую система проводит в состоянии «сброса хвоста», необходимо вычислить сумму тех компонент вектора а, которые соответствуют состояниям «сброса хвоста». В примере на рис. 2 необходимо будет просуммировать компоненты с номерами от 36 до 68.

ЧИСЛЕННЫЕ РЕЗУЛЬТАТЫ

Для решения задачи были написаны программы, которые вычисляют матрицу ^, среднее время работы до переполнения и долю времени, которую система проводит в состоянии «сброса хвоста» и находят оптимальное разбиение памяти между очередями в случае представления приоритетной очереди в виде последовательных Р1РО-очередей. Некоторые результаты работы программ представлены в таблицах 1 и 2. В строке Т находится среднее время работы до переполнения в случае представления в виде п Р1РО-очередей, в строках кг

В строке 12 - когда размер ключа равен 1/2 размеру информационной части.

В строке 14 - когда размер ключа равен 1/4 размеру информационной части.

В строке 18 - когда размер ключа равен 1/8

СВЕДЕНИЯ ОБ АВТОРАХ:

Соколов Андрей Владимирович д. ф.-м. н.

Институт прикладных математических исследований КарНЦ РАН

ул. Пушкинская, 11, Петрозаводск, Республика Карелия, Россия, 185910 эл. почта: avs@krc.karelia.ru тел.: (8142) 766313

Драц Андрей Владимирович

Институт прикладных математических исследований КарНЦ РАН

ул. Пушкинская, 11, Петрозаводск, Республика Карелия, Россия, 185910 эл. почта: adeon88@mail.ru тел.: (8142) 763313

размеру информационной части.

Предложенные в статье модели и разработанные на их основе программы могут дать для известных значений вероятностей выполнения операций оптимальные размеры очередей разных приоритетов, которые системный администратор может учитывать при настройке маршрутизатора.

Работа выполнена при финансовой поддержке РФФИ, грант 09-01-00330.

ЛИТЕРАТУРА

Аксенова Е. А., Драц А. В., Соколов А. В. Оптимальное управление п ИЕО-очередями на бесконечном времени // Информационно-управляющие системы. 2009. № 6. С. 46-54.

Аксенова Е. А., Соколов А. В. Анализ некоторых методов реализации приоритетной очереди // Межвуз. сб. «Стохастическая оптимизация в информатике» Изд-во С.-Петербургского университета, 2008. Вып. 4. С. 61-71.

Боллапаргада В., Мэрфи К., Расс У. Структура операционной системы Ивсо 1ОБ. М.: Вильямс, 2002. 208 с.

Кемени Дж., Снелл Дж. Конечные цепи Маркова. М.: Наука, 1970. 272 с.

Кнут Д. Искусство программирования для ЭВМ. М.: Вильямс, 2001. Т. 3. 434 с.

Кормен Е., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. М.: МЦНМО, 2000.960 с.

Риордан Дж. Введение в комбинаторный анализ. М.: Издательство иностранной литературы, 1963. 375 с.

Седжвик Р. Фундаментальные алгоритмы на С++. Анализ. Структуры данных. Сортировка. Поиск пер. с англ. Роберт Седжвик. К.: Издательство «ДиаСофт», 2001. 688 с.

Тарасюк А. В. Оптимальная реализация N ИЕО-очередей в памяти одного уровня в случае одновременного выполнения операций // Системы управления и информационные технологии. 2008. № 1 (31). С. 75-78.

Феллер В. Введение в теорию вероятностей и ее приложения. М.: Мир, 1964. 499 с.

Sokolov, Andrey

Institute of Applied Mathematical Research, Karelian Research Centre, Russian Academy of Science 11 Pushkinskaya St., 185910 Petrozavodsk, Karelia, Russia

e-mail: avs@krc.karelia.ru

Drats, Andrey

Institute of Applied Mathematical Research, Karelian Research Centre, Russian Academy of Science 11 Pushkinskaya St., 185910 Petrozavodsk, Karelia, Russia

e-mail: adeon88@mail.ru