КОДИРОВАНИЕ И ПЕРЕДАЧА ИНФОРМАЦИИ X
УДК 681.324
doi:10.15217/issn1684-8853.2015.5.100
ЭВРИСТИЧЕСКИЙ АЛГОРИТМ РАСЧЕТА РАЗМЕРОВ ПАМЯТИ В МНОГОУРОВНЕВОЙ СИСТЕМЕ ХРАНЕНИЯ
Д. А. Маличенкоа 1, ведущий программист
аСанкт-Петербургский государственный университет аэрокосмического приборостроения,
Санкт-Петербург, РФ
Введение: рассматривается многоуровневая блочная система хранения данных. Уровни отличаются типом памяти и скоростью работы с данными. Для каждого приложения, работающего с системой, задано требуемое качество обслуживания, выражаемое в виде времени отклика системы на запрос. Распределение адресного пространства приложений между уровнями памяти влияет на время отклика системы. Целью работы является автоматическое распределение областей памяти приложений в зависимости от входного потока заявок таким образом, чтобы требования на качество обслуживания были выполнены. Результаты: сформулирована оптимизационная задача расчета размеров памяти приложений на всех уровнях системы и предложен эвристический алгоритм ее решения. Используются такие характеристики потока запросов, как среднее значение доли запросов, попадающих в кэш, и распределение частот запросов к блокам данных на дисках. Оценка работы алгоритма вычислена с помощью имитационного моделирования системы хранения, на которую подавался поток заявок, снятый ранее с реальных систем хранения. Результаты моделирования демонстрируют, что предложенный алгоритм в некоторых случаях позволяет повысить эффективность работы системы хранения до 10 %. Практическая значимость: предложенный алгоритм может улучшить качество обслуживания в многоуровневой системе хранения данных.
Ключевые слова — многоуровневая система хранения, управление многоуровневой системой хранения, Storage Area Network, качество обслуживания, моделирование.
Введение
Системы хранения данных очень разнообразны по уровню сложности. Для некоторых задач обычные жесткие диски, которые используются в персональных компьютерах, не подходят. Например, у сервисов по бронированию и покупке билетов или у социальных сетей возникают дополнительные требования к системам хранения данных. Требуется хранить больше данных, одновременно обрабатывать заявки от большого числа клиентов, а также быстро работать с данными. Для таких целей используются специализированные сложные системы хранения, которые могут представлять собой целую сеть. В работе рассматривается пример такой системы хранения данных. Для увеличения скорости работы системы используются диски разного типа. Применение только очень быстрых дисков значительно увеличивает стоимость всей системы. Обычно комбинируют диски с разной скоростью работы. В этом случае более востребованные данные хранятся на более быстрых дисках, менее востребованные данные хранятся на медленных дисках. Со временем востребованность данных меняется, и управляющая система должна перекладывать данные между дисками разного типа.
1 Научный руководитель — профессор, проректор по науке, доктор технических наук, директор Института информационных систем и защиты информации, заведующий кафедрой безопасности информационных систем СанктПетербургского государственного университета аэрокосмического приборостроения Е. А. Крук.
С системой хранения работает множество клиентов — приложений. У каждого приложения свой объем востребованных данных, следовательно, пропорции, в которых данные распределены между дисками разного типа, у каждого приложения свои. Одному приложению может требоваться больше быстрой памяти для обеспечения заданной скорости работы, другому меньше, а со временем эта ситуация может поменяться в обратную сторону. Если объем быстрой памяти, выделенный приложению, слишком мал, то все наиболее востребованные данные приложения не поместятся в быструю память, и часть данных будет считываться с медленных дисков, что приведет к уменьшению средней скорости работы с данными для приложения. Кроме дискового пространства у каждого приложения есть своя область в кэш-памяти. Требуемые размеры этих областей также разные для разных приложений и зависят от характеристик потока запрашиваемых данных. В данной работе рассматривается задача выбора для каждого приложения размера выделяемой памяти в кэше и на дисках всех типов.
Многоуровневые системы хранения известны давно. В работе [1] дано функциональное описание такой системы, а в работе [2] предложен алгоритм перемещения блоков данных между дисками разных типов. В работе [3] для идеализированной модели системы хранения представлены аналитические выражения для расчета требуемого размера кэша, а также для размеров дисков и оптимального количества уровней системы хранения. Оптимизация размеров кэш-памяти рас-
смотрена в работах [4-6], а распределение места на дисках — в работах [7, 8]. В работе [7] система состоит из двух уровней памяти: 8ЯБ-дисков и обычных дисков, причем ЯЯБ-память работает в режиме кэша.
В настоящей работе, в отличие от многих других, рассматривается изоляция приложений друг от друга в кэше и на дисках. Решения алгоритма распространяются не только на диски, но и на кэш, для которого вычисляются требуемые хит-рейты.
Многоуровневая система хранения данных
Опишем систему хранения с четырьмя типами памяти. Имеется кэш-память и три типа дисков (рис. 1), которые отличаются объемом и скоростью работы. Запрашиваемый блок данных сначала проверяется на наличие в кэше. Если блок в кэше отсутствует, то он считывается с того диска, на котором записан.
Рассмотрим сценарий, в котором у каждого приложения, работающего с системой, есть своя независимая область в кэше и свой логический диск, при этом физически пространство логического диска распределено между дисками всех типов. Более подробно работа системы проиллюстрирована на рис. 2.
Когда приложение 1 запрашивает блок данных, то система хранения сначала ищет его в выделенной для приложения 1 области кэша. Если блок найден, то время чтения блока равно времени чтения из кэша. Если блок отсутствует в кэше, то он считывается с диска. Приложение работает с логическим диском. На более низком уровне системы хранения лежат физические диски разного типа. Блок данных может лежать либо на быстрых дисках, либо на медленных. Примером быстрых дисков могут служить диски на ПавИ-памяти (ЯЯБ-диски), примером медленных дисков могут служить ЯЛТЛ-диски. Расположение блоков данных постоянно меняется системой. Будем считать, что раз в час система перемещает блоки данных в соответствии с вероятностями их запросов. Все блоки сортируются по популярности, и самые популярные записываются на самые быстрые диски, пока место, выделенное для данного приложения, не закончится; далее блоки записы-
■ Рис. 1. Упрощенная схема многоуровневой системы хранения
■ Рис. 2. Схема работы многоуровневой системы хранения с разделением приложений
ваются на более медленные диски. Статистика по вероятностям запросов собирается в течение часа до следующего перемещения блоков.
Определение основных зависимостей и постановка задачи
Пусть время доступа к блоку данных в кэше равно t0, а времена доступа к дискам t1, t2, t3 и t0 << t1 << t2 << t3. Пусть объемы памяти в кэше и на дисках соответственно равны 50, 51, Б2, Б3. С системой работает п приложений А1, ..., Ап. Пусть объем памяти, выделенный для ¿-го приложения на ]-м уровне памяти, равен в1). Под уровнем понимается тип памяти. Тогда
X в) * ^.
(1)
г=1
Пусть р) — вероятность того, что блок данных, запрошенный ¿-м приложением, окажется на ]-м уровне памяти. Тогда среднее время доступа к блоку данных для ¿-го приложения
Т = Ро^о + Р1*1 + Р2Ь + РзЧ,
(2)
где Р0 + + Р2 + Р3 = 1.
Пусть заданы ограничения на средние времена доступа к блоку данных для каждого приложения:
Т * Я. (3)
Следовательно, присутствует ограничение на
вероятности р-
Poto + Plh + P2f2 + Рз*8 ^ R ■
(4)
Вероятности р- связаны с объемами памяти а. Чем больше памяти приложение использует на ]-м уровне относительно других уровней памяти, тем выше вероятность р-. Обозначим эту зависимость так:
р0 = Г («0);
р) _ ' («), р0 ), 1 ^} ^ 3,
где /С() и — функции зависимости между размером занимаемой памяти и вероятностью попадания на нее для кэш-памяти и дисков соответственно.
Вероятность р0 называют хит-рейтом. Важной характеристикой кэш-памяти является стековое расстояние [9] — это количество уникальных блоков данных, запрошенных между запросом одного и того же блока, плюс один. Например, если блоки запрашивались в последовательности А, В, С, Б, Е, Б, С, В, Б, А, то стековое расстояние для второго появления блока А равно пяти. Функция распределения стековых расстояний дает вероятность того, что стековое расстояние для следующего запрошенного блока будет меньше либо равно x. Это означает, что если иметь в распоряжении кэш размером х блоков, то хит-рейт кэша будет равен Рв^(х). Для ¿-го приложения этот факт можно записать таким образом:
Ро = («0).
Заметим, что (¿0) = ^¿¿(¿0).
Рассмотрим теперь Ррор(х) — функцию распределения вероятностей того, что следующий запрошенный ¿-м приложением блок данных будет находиться среди первых х блоков с наивысшей вероятностью появления. Иногда Ррор(х) называют популярностью адресов [9]. Чтобы получить эту функцию для потока запрашиваемых блоков данных, необходимо посчитать частотные вероятности каждого блока. После этого отсортировать пары значений (номер блока, вероятность) по убыванию вероятности. Перенумеруем блоки по порядку после сортировки, начиная от самого вероятного. Функция, задаваемая этими парами, где аргумент — номер блока по порядку, а значением является вероятность, будет функцией плотности вероятности блока, а построенная по ней функция распределения будет искомой Ррор(х). Если имеется три диска разных типов с размерами 51, Б2, Б3, и данные упорядочены по степени востребованности так, что самые востребованные хранятся на диске 1, а самые невостребованные — на диске 3, то вероятность
того, что данные будут запрошены с диска 1, равна
р _ Ррор (я1) _ Г
р1 ~_'а'
1 - Ро
вероятность запроса данных с диска 2
) _РРор («2 + «1 ) - Ррор ) _ ,2
Р2 =-
1 - Р0
- = fd
'd ,
а вероятность запроса данных с диска 3
Fpop (4 + 4 + 4) - Fpop (4 + 4)
Рз =-
1 - РО
(5)
(6)
(7)
Таким образом, функция для дисков разных уровней будет отличаться. В рассматриваемой системе хранения приложению выделена только часть в- каждого диска, т. е. в- < 5. Перепишем уравнения (5)-(7) другим образом:
«1 _ Ррор-1 (р1 (1 - р0)); (8)
«2 + 4 _ Ррор-1 ((р2 + р )( - р0 )); (9) «3 + «2 + «1 _ Ррор-1 ((( + р2 + р1 )( - р0)). (10)
При этом на вероятности р- имеется ограничение (4), а на в- — ограничение (1).
Все необходимые зависимости определены, перейдем к постановке задачи. Пусть известны параметры 50, 51, 52, 53 10, t1, t2, п,Щ = 1 _ п, требуется найти такие в-, чтобы выполнялись заданные ограничения Щ = 1 _ п.
Кроме заданных параметров, в выражениях (8)-(10) присутствуют функции Р^(х) и Ррор(х), которые меняются в зависимости от потока запросов, и для реальной системы их можно получить только численно, они задаются таблицей. Это приводит к тому, что известные методы решения задач оптимизации в данном случае не применимы. По этой причине нами предлагается эвристический алгоритм решения задачи.
Описание предлагаемого решения
Функционально предлагается заменить исходный кэш со статичным разделением областей между приложениями на описанный в работе [6] динамический кэш, который меняет границы областей приложений в зависимости от заданного для каждого приложения хит-рейта. В настоящей работе вводится дополнительный блок (рис. 3), который раз в час будет пересчитывать для каждого приложения размеры областей, выделяемых системой на дисках разного типа.
Значения ¿0 вычисляются динамическим кэшем [6], чтобы достичь хит-рейтов, заданных для
■ Рис. 3. Функциональная схема предлагаемого решения
■ Возможные события в результате перераспределения памяти
№ Условие Действие
1 Тх > Rx, Ту < aRy Продолжать увеличивать ¿Х и уменьшать
2 Тх < Rx, Ту < aRy Остановить перераспределение ^
3 Ту >оЯу Сделать шаг назад, т. е. уменьшить ¿Х и увеличить 8у
приложений. В предлагаемой схеме хит-рейты задает блок расчета в! ф В начале работы системы размеры в0 задаются некоторым типовым образом, например, одинаковыми или пропорционально требованиям на отклик системы.
Рассмотрим алгоритм расчета ¿2 ¿3. Как упомянуто выше, алгоритм вычисляет границы областей один раз в час. За час собирается статистика, вычисляется ^рор(х), и вместе с текущими значениями границ по выражениям (5)-(7) могут быть рассчитаны вероятности р[, р2, Р3. Используя эти вероятности и р0, которую можно посчитать в кэше, с помощью выражения (2) вычисляем Т). Далее все Т разделим на два списка. В первый список попадут Т) > Я), а во второй список — Т < 5Я), где 5 характеризует необходимый запас по требуемой задержке и представляет собой долю от Я1. В первый список Т1 попадут задержки тех приложений, для которых требование Щ не выполнилось, а во второй список Т2 — задержки тех, для которых они выполнились с избытком. Если эти списки не пустые, то далее задача алгоритма состоит в таком изменении ¿3, при котором для всех приложений требования Щ станут удовлетворяться. Для этого сначала списки Т1 и Т2 сортируются по возрастанию. Далее для приложений, чьи Т оказались в начале списков, происходит изменение размеров областей на дисках. Изменения производятся пошагово, по одному слоту, начиная с самой быстрой памяти. Сначала приложения с избытком уменьшается на один слот, а приложения с недостатком увеличивается на один слот. После этого по формуле (2) снова пересчитываются Т) для двух приложений. В таблице представлены различные варианты значений Т) и дальнейшие шаги.
Параметр а необходим для того, чтобы приложение с запасом по Т не стало приложением, не удовлетворяющим требованию. Если выполнилось условие 2, то дальше выбирается следующая пара приложений с недостатком и избытком Т), причем приложение с избытком может остаться тем же, что было на предыдущем шаге. Если выполнилось условие 3, то резерв быстрой памяти у приложения с избытком закончился. В этом случае после шага назад приложение
с недостатком все еще не удовлетворяет требованию. Далее необходимо повторить процедуру перераспределения для следующего уровня памяти &2. Если и в нем будет такой же результат, то выбирается следующее приложение с избытком, и процедура перераспределения памяти повторяется с уровня s{. Далее либо закончатся все приложения с недостатком быстрой памяти, что означает успешное завершение алгоритма, либо закончатся приложения с избытком, а с недостатком останутся. В последнем случае система не сможет удовлетворить текущим требованиям на задержку.
Работа алгоритма основана на предположении, что во время функционирования системы присутствуют достаточно длинные периоды стабильности FP^op(x), тогда, собрав за определенное время статистику, можно рассчитывать на то, что новые значения sj будут актуальны.
Для того чтобы быстрее реагировать на изменения потока запросов, в алгоритме предусмотрена процедура пересчета требуемого хит-рейта. Она работает каждые 10 мин, в то время, когда пересчет s1, s^, s3 не производится. По текущим значениям s1, s2, S3 с помощью формул (5)-(7) вычисляются pj, p|, pДалее из этих формул можно выразить вероятность pj, которая и является требуемым хит-рейтом. Найденное значение передается в блок управления кэшем, который должен в результате работы выдерживать заданные pj.
Результаты моделирования
Определим коэффициент Q, по которому предложенный алгоритм будет оцениваться и сравниваться с системой без пересчета размеров областей на дисках. Для этого введем вспомогательный коэффициент
NT < R}
N
(11)
где Ы{Т• * Я)} — количество десятиминутных интервалов, в течение которых среднее время считывания блока данных не превышало заданное для приложения ¿, а N — общее количество
десятиминутных интервалов работы системы. Тогда
1 n
Q _1Z qt,
n
i_i
(12)
откуда видно, что Q характеризует работу системы в целом по всем приложениям.
Для вычисления коэффициента Q воспользуемся имитационным моделированием. В качестве модели кэша будем использовать LRU (Least Recently Used) стек [9]. В случае с постоянными размерами областей памяти в кэше будем использовать несколько LRU-стеков фиксированного размера. В случае с изменяемыми размерами областей размеры будут пересчитываться [6]. В качестве модели дисков будем использовать таблицу, в которой записано, к диску какого типа относится каждый блок данных. Каждый час блоки будут перемещаться между дисками разного типа согласно Fp0p(x), как описано выше. В качестве потока заявок использовались логи реальных систем хранения [10]. На рис. 4 представлены пары коэффициентов Q для одного синтезированного лога и для нескольких общедоступных логов реальных систем хранения. Первый коэффициент получен для системы с размерами sj, выставленными пропорционально требованиям на задержку (статические границы). Второй коэффициент получен при работе системы с предложенным алгоритмом пересчета sj (динамические границы).
Логи Financiall, Financial2 сняты с систем обработки транзакций в реальном времени в финансовых организациях. Логи WebSearch2, WebSearch3 собраны с известных поисковых систем [10]. Из рисунка видно, что наибольший выигрыш получается на синтезированном логе. Как было отмечено, предлагаемый алгоритм опирается на предположение о наличии достаточно длинных периодов времени, на которых функция Fpop(x) постоянна. В синтезированном логе это условие строго выполняется, поэтому выигрыш наибольший. В реальности поведение Fpop(x) непредсказуемо. Кроме предсказуемости функции популярности для успеха алгоритма необходимо, чтобы приложениям требовались разные объемы памяти для выполнения заданных ограничений и чтобы эти объемы достаточно отличались от выделенного изначально объема. На логах
Литература
1. Morenoff E., McLean J. Application of Level Changing to a Multilevel Storage Organization // Communications of the ACM. Mar. 1967. Vol. 10. Iss. 3. P. 149-154. doi:10.1145/363162.363183
2. Ver Hoef E. W. Design of a Multi-Level File Management System // Proc. of the 1966 21st Na-
1,2 1 0,8 © 0,6 0,4 0,2
4
ЧА
k-%
k*
%
% \ % \ %> 4
' v
ix X X— статические границы kvwwi— динамические границы
■ Рис. 4. Результаты моделирования предложенного алгоритма
ПпапиаИ и WebSearch3 наблюдается незначительный выигрыш предложенного алгоритма. На логе Ппапс1а12 разницы нет. Это связано с тем, что свободных для перераспределения ресурсов не было и выдерживались изначально выставленные границы. На логе WebSearch2 выигрыш предложенного алгоритма составляет 12 %. Можно также отметить, что благодаря введенным защитным параметрам а и 5, на всех рассмотренных логах критерий ф не стал хуже по сравнению с исходной системой (со статическими границами). Также были исследованы логи и других систем. На них выигрыш составил 1-10 %.
Заключение
Работа предложенного в статье алгоритма перераспределения места на дисках основана на предположении о стабильности распределения популярностей адресов. Если это выполняется, то алгоритм дает ощутимое преимущество, что показано с помощью моделирования на искусственном потоке запросов адресов. При использовании потока с реальных систем данное предположение может не выполняться, однако моделирование показало, что довольно часто и на реальных потоках запросов алгоритм дает выигрыш до 10 %. Это позволяет сделать вывод, что алгоритм можно использовать как помощника при конфигурировании системы хранения.
tional Conf. 1966. P. 75-86. doi: 10.1145/800256. 810684
3. Chow C. K. Determination of Cache's Capacity and its Matching Storage Hierarchy // IEEE Transactions on Computers. Feb. 1976. Vol. C-25. Iss. 2. P. 157-164. doi: 10.1109/TC.1976.5009230
4. Lai P., Fan R. Makespan-Optimal Cache Partitioning // IEEE 21st Intern. Symp. on Modeling, Analysis
0
& Simulation of Computer and Telecommunication Systems (MASCOTS). 14-16 Aug. 2013. P. 202-211. doi: 10.1109/MASCOTS.2013.28
5. Yuan L. A Locality-based Performance Model for Load-and-Compute Style Computation // IEEE Intern. Conf. on Cluster Computing (CLUSTER). 24-28 Sept. 2012. P. 566-571. doi: 10.1109/CLUSTER.2012.25
6. Дужин В. С. Алгоритм перераспределения кэша между приложениями в системе хранения данных // Научная сессия ГУАП: сб. докл.: в 3 ч. Ч. I. Технические науки. СПб.: ГУАП, 2012. С. 73-75.
7. Liu X., Salem K. Hybrid Storage Management for Database Systems // Proc. of the VLDB Endowment.
June 2013. Vol. 6. Iss. 8. P. 541-552. doi: 10.14778/ 2536354.2536355
8. Canim M., at al. An Object Placement Advisor for DB2 Using Solid State Storage // Proc. of the VLDB Endowment. Aug. 2009. Vol. 2. Iss. 2. P. 13181329.
9. Feitelson D. G. Workload Modeling for Computer Systems Performance Evaluation. — NY.: Cambridge University Press, 2015. — 564 p.
10. UMass Trace Repository. http://traces.cs.umass. edu/index.php/Storage/Storage (дата обращения: 10.09.2015).
UDC 681.324
doi:10.15217/issn1684-8853.2015.5.100
Heuristic Algorithm for Calculating the Size of Tiers in a Hierarchical Storage System
Malichenko D. A.a, Senior Programmer, dml@vu.spb.ru
aSaint-Petersburg State University of Aerospace Instrumentations, 67, B. Morskaia St., 190000, Saint-Petersburg, Russian Federation
Introduction: A hierarchical storage system which serves many applications is discussed. Levels in the hierarchy differ in their memory type and response time. For each application, a certain quality of the service is assigned in terms of latency. The allocation of the address space among applications and memory levels affects the response time of the system. The purpose of the work is automatic memory allocation at every level taking into account the request flow characteristics in order to meet the service quality demands. Results: A memory partitioning optimization problem is formulated, and a heuristic algorithm is proposed for its solution. The cache hit rate and distribution function of popularity of the requested memory blocks are used as flow characteristics. An assessment of the storage system efficiency is calculated by simulating a storage system fed by a request flow saved from real storage systems. The calculated assessments show up to 10% gain for the proposed algorithm. Practical relevance: The proposed algorithm can improve the service quality in a hierarchical storage system.
Keywords — Hierarchical Storage System, Hierarchical Storage Management, Storage Area Network, Quality of Service, Simulation.
References
1. Morenoff E., McLean J. Application of Level Changing to a Multilevel Storage Organization. Communications of the ACM, March 1967, vol. 10, iss. 3, pp. 149-154. doi:10.1145. 363162.363183
2. Ver Hoef E. W. Design of a Multi-Level File Management System. Proc. of the 1966 21st National Conf., 1966, pp. 7586. doi: 10.1145/800256.810684
3. Chow C. K. Determination of Cache's Capacity and its Matching Storage Hierarchy. IEEE Transactions on Computers, February 1976, vol. C-25, iss. 2, pp. 157-164. doi: 10.1109/TC.1976.5009230
4. Lai P., Fan R. Makespan-Optimal Cache Partitioning. IEEE 21st Intern. Symp. on Modeling, Analysis & Simulation of Computer and Telecommunication Systems (MASCOTS), 14-16 August 2013, pp. 202-211. doi: 10.1109/MAS-COTS.2013.28
5. Yuan L. A Locality-based Performance Model for Load-and-Compute Style Computation. IEEE Intern. Conf. on Cluster Computing (CLUSTER), 24-28 September 2012, pp. 566571. doi: 10.1109/CLUSTER.2012.25
6. Duzhin V. S. Cache Partitioning Algorithm in a Storage System. Nauchnaia sessiia GUAP [Proceedings of Scientific Session of SUAI]. Saint-Petersburg, GUAP Publ., 2012, vol. III "Technical science", pp. 73-75 (In Russian).
7. Liu X., Salem K. Hybrid Storage Management for Database Systems. Proc. of the VLDB Endowment, June 2013, vol. 6, iss. 8, pp. 541-552. doi: 10.14778/2536354.2536355
8. Canim M., Mihaila G. A., Bhattacharjee B., Ross K. A., Lang C. A. An Object Placement Advisor for DB2 Using Solid State Storage. Proc. of the VLDB Endowment, August 2009, vol. 2, iss. 2, pp. 1318-1329.
9. Feitelson D. G. Workload Modeling for Computer Systems Performance Evaluation. New York, Cambridge University Press, 2015. 564 p.
10. UMass Trace Repository. Available at: http://traces. cs.umass.edu/index.php/Storage/Storage (accessed 10 September 2015).