Менеджер кеша дисковых блоков 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