Адаптивный кеш замены - Adaptive replacement cache
Адаптивный кэш замены (ARC) это алгоритм замены страницы с лучшей производительностью[1] чем LRU (наименее недавно использованный). Это достигается путем отслеживания как часто используемых, так и недавно использованных страниц, а также истории недавнего удаления для обоих. Алгоритм был разработан[2] в IBM Исследовательский центр Альмадена. В 2006 году IBM получила патент на адаптивную политику замены кеша.
Резюме
Базовый LRU поддерживает упорядоченный список (каталог кэша) записей ресурсов в кэше с порядком сортировки, основанным на времени последнего доступа. Новые записи добавляются вверху списка после того, как нижняя запись была удалена. Попадания в кеш перемещаются вверх, а все остальные записи опускаются.
ARC улучшает базовую стратегию LRU, разделяя каталог кэша на два списка, T1 и T2, для недавно и часто используемых записей. В свою очередь, каждый из них расширяется призрак list (B1 или B2), который прикреплен в конце двух списков. Эти призрак списки действуют как системы показателей, отслеживая историю недавно удаленных записей кэша, и алгоритм использует призрак обращений для адаптации к недавним изменениям в использовании ресурсов. Обратите внимание, что призрак списки содержат только метаданные (ключи для записей), а не сами данные ресурса, т.е.когда запись вытесняется в призрак список его данные отбрасываются. Комбинированный каталог кэша организован в четыре списка LRU:
- T1 для последних записей в кэше.
- T2, для частых записей, упоминается как минимум дважды.
- B1, призрак записи, которые недавно были удалены из кеша T1, но все еще отслеживаются.
- B2, аналогичный призрак записи, но выселены из Т2.
T1 и B1 вместе называются L1, объединенная история недавних одиночных обращений. Аналогично, L2 - это комбинация T2 и B2.
Весь каталог кеша можно визуализировать в одной строке:
. . . [ B1 <-[ Т1 <-!-> Т2 ]-> B2 ] . . [ . . . . [ . . . . . . ! . .^. . . . ] . . . . ] [ фиксированный размер кеша (c) ]
Внутренний [ ] скобки обозначают фактический кэш, который, хотя и имеет фиксированный размер, может свободно перемещаться по истории B1 и B2.
L1 теперь отображается справа налево, начиная сверху, что обозначено значком ! маркер. ^ указывает целевой размер для T1 и может быть равен, меньше или больше фактического размера (как указано !).
- Новые записи введите T1 слева от !, и постепенно сдвигаются влево, в конечном итоге вытесняются из T1 в B1 и, наконец, полностью выпадают.
- Любая запись в L1, на которую ссылаются еще раз, получает еще один шанс и входит в L2, справа от центральной ! маркер. Оттуда он снова выталкивается наружу, из Т2 в В2. Записи в L2, получившие еще одно попадание, могут повторяться бесконечно, пока, наконец, не выпадут в крайнем правом углу B2.
Замена
Записи (повторные), поступающие в кеш (T1, T2), вызовут ! двигаться к маркеру цели ^. Если в кэше нет свободного места, этот маркер также определяет, удалит ли запись T1 или T2.
- Удары в B1 увеличивают размер T1, нажимая ^ Направо. Последняя запись в T2 вытесняется в B2.
- Хиты в B2 уменьшат T1, подталкивая ^ обратно влево. Последняя запись в T1 теперь вытесняется в B1.
- Промах в кеше не повлияет ^, но ! граница приблизится к ^.
Развертывание
В настоящее время ARC используется в контроллерах хранения IBM DS6000 / DS8000.
Sun Microsystems масштабируемая файловая система ZFS использует вариант[3] ARC как альтернатива традиционному Солярис Кэш страниц файловой системы в виртуальной памяти. Он был изменен, чтобы разрешить заблокированные страницы, которые в настоящее время используются и не могут быть освобождены.
PostgreSQL на короткое время использовала ARC в своем диспетчере буферов (версия 8.0.0), но быстро заменила его другим алгоритмом, сославшись на опасения по поводу патента IBM на ARC.[4]
VMware vSAN (ранее Virtual SAN) - это гиперконвергентная программно-определяемая система хранения (SDS), разработанная VMware. Он использует вариант ARC в своем алгоритме кэширования. [5]
Смотрите также
Рекомендации
- ^ One Up на LRU, Usenix: логин; Август 2003 г.
- ^ Нимрод Мегиддо и Дхармендра Модха, 09.03.2010 архив домашней страницы АРК, с указателями на несколько статей
- ^ комментарии в Solaris ZFS arc.c исходный файл объясняет различия с оригинальной работой
- ^ Статья в Postgresql General Bits, "Сага об алгоритме и патенте ARC", опубликовано 6 февраля 2005 г.
- ^ Справочный документ, «Алгоритмы кэширования VMware vSAN»[постоянная мертвая ссылка ]