Менеджер кеша дисковых блоков TARQ
Менеджер кеша дисковых блоков - самобалансирующийся менеджер кеша дисковых блоков с автоматической компенсацией нагрузки на дисковую систему.
Алгоритм вытеснения из кеша нужен для работы в среде где, для ускорения операций с диском, часть быстродействующей памяти используется для размещения наиболее часто востребованных блоков. Алгоритм служит для определения блока который можно выбросить с наименьшими потерями для общей производительности. Т.е. такого блока, который будет использоваться не так часто и/или интенсивно как остальные.
QHB может запускаться с усовершенствованным алгоритмом вытеснения - TARQ.
Алгоритм предполагает поддержку двух списков страниц - L1
и L2
.
Максимальная длина обоих списков составляет 2c, где c - размер кэша
в страницах. Оба списка формируются в стиле LRU. При перемещении в кэш
страницы, номер которой отсутствует в обоих списках, этот номер заносится
в начало списка L1
. При обращении к странице, номер которой фигурирует
в одном из списков, этот номер переносится в начало списка L2
.
Важной особенностью алгоритма является то, что только в начале каждого
из списков (подсписках T1
и T2
) находятся номера страниц, находящихся
в кэше, т.е. поддерживается история страниц, недавно вытесненных из кэша.
Страница для замещения выбирается из конца списка T1
или T2
в
зависимости от значения параметра p
, определяющего текущую допустимую
длину списка T1
, а тем самым, и длину T2
. Адаптивность алгоритма
состоит в том, что значение p
изменяется в зависимости от вида рабочей
нагрузки.
Для включения и управления новым алгоритмом вытеснения используются параметры в конфигурационном файле:
-
use_qhb_cache - булевый параметр при установке значения в TRUE будет использоваться новая версия кеша
-
qhb_cache_size - общий размер буферного кеша (при включении use_qhb_cache=true значение shared_buffers не используется)
-
shared_buffers_partition - размер фрагментов кеша (партиций, не имеют отношения к партициям таблицы), обращение к каждому фрагменту происходит независимо от остальных, слишком большой размер приведёт к возрастанию конкуренции за блокировки, слишком маленький может привести к задержкам если в партиции не окажется пригодных к вытеснению блоков (все грязные или занятые фоновым процессом).
Рекомендуемое значение:128
-
tarq_cache.touch_queue_ignore - целое число от 1 до 100, процент заполнения фрагмента кеша при котором обращения начинают приводить к операциям балансировки, для незаполненного или заполненного немного фрагмента балансировок не требуется.
Рекомендуемое значение:50
Ребалансировка - дорогая операция, в нагруженной среде к некоторым буферам (содержимое системных таблиц, словари, последовательности) может быть много тысяч обращений в секунду, существенно не влияющих на общий баланс. Для сглаживания можно использовать следующие параметры:
-
tarq_cache.touch_window - время в секундах, все обращения в течение этого "окна" считаются одним обращением.
Рекомендуемое значение:3
-
tarq_cache.touch_threshold - количество обращений к буферу по достижению которого происходит операция ребалансировки. \ Рекомендуемое значение:
5