Google представил новый метод управления кэшем — линейное эластичное кэширование. Он снижает общую стоимость владения кэш-памятью за счет динамической регулировки ее размера в зависимости от текущей нагрузки.
Традиционные системы кэширования используют фиксированный объем памяти. Это приводит к неэффективному использованию ресурсов: малый кэш снижает производительность, а большой — увеличивает расходы из-за простоя памяти.
Новый подход Google рассматривает память как услугу, стоимость которой линейно зависит от объема кэшируемых данных и времени их хранения.
В основе метода лежит концепция, похожая на «проблему аренды лыж». Система решает: «арендовать» место для данных в оперативной памяти, постоянно оплачивая ее, или «купить» промах, выгрузив данные и рискуя задержкой при повторном запросе.
Алгоритм оптимизирует политику вытеснения и продолжительность «аренды» данных.
Для определения оптимального времени жизни каждой страницы данных используется легковесная модель машинного обучения. Она учитывает размер данных, стоимость промаха кэша и тип операции с базой данных.
Интеграция линейного эластичного кэширования в серверы Spanner, распределенной базы данных Google, показала результаты: использование памяти сократилось на 15,5%, а общее количество промахов кэша увеличилось на 5,5%.
Общая стоимость владения снизилась примерно на 5%. Увеличение промахов пришлось на данные, которые дешево извлекать из хранилища, что минимизировало влияние на фактические затраты ввода-вывода.