Cold-RL: Learning Cache Eviction with Offline Reinforcement Learning for NGINX

2508.12485v1 cs.LG, cs.AI, cs.DB, cs.NI, C.2.4; C.4; D.4.2; I.2.6 2025-08-19
Авторы:

Aayush Gupta, Arpit Bhayani

Резюме на русском

#### Контекст Современные веб-прокси, такие как NGINX, широко используются для оптимизации производительности интернет-ресурсов. Одной из ключевых задач этих систем является эффективное управление кэшем. Однако существующие методы управления кэшем, такие как метод наименее недавно использованных (LRU), часто сталкиваются с проблемами при обработке периодических потоков, разномасштабных объектов и ситуаций, когда объекты в кэше часто меняются. Эти проблемы приводят к понижению производительности и неэффективному использованию памяти. Необходимость в более гибких и эффективных стратегиях управления кэшем побудила разработку новых подходов, основанных на искусственном интеллекте и машинном обучении. #### Метод Для решения этой проблемы предлагается Cold-RL, новая стратегия управления кэшем, основанная на оффлайн-обучении с помощью резерентного градиентного сетевого сетевого алгоритма. Cold-RL использует ограниченный набор легковесных признаков, таких как возраст объекта, размер, число попаданий, время между появлениями, оставшийся TTL и время ответа на запрос, для принятия решений. Эти признаки эффективно захватывают ключевые аспекты характера трафика. Обучение происходит вне-живучего, используя реальные логи трафика NGINX, в которых каждое решение о выборе объекта для удаления получает награду в зависимости от его последующего использования. Требования к времени выполнения решения привели к разработке особых ограничений на производительность. Например, решение должно быть принято за менее 500 микросекунд, чтобы не влиять на общую производительность NGINX. #### Результаты Опытные испытания показали, что Cold-RL значительно повышает производительность кэша NGINX по сравнению с традиционными методами. На бенчмарке с 25 MB кэша, Cold-RL повысил уровень попаданий (hit ratio) с 0.1436 до 0.3538, что составляет приблизительно 146% рост по сравнению с наиболее эффективными классическими методами. На более крупных кэшах (100 MB), где LRU уже дает приемлемый результат, Cold-RL все равно повысил hit ratio на 15%. Интересно, что на больших кэшах (400 MB), Cold-RL стал сопоставим с классическими методами, достигая уровня примерно 0.918. Более того, время работы решения Cold-RL занимает менее 2% от общего времени обработки запросов, и 95-й перцентиль задержки вытеснения (eviction) остается в границах SLO. #### Значимость Заключенные результаты демонстрируют, что Cold-RL может быть успешно применен в средах с требованиями к высокой производительности и малым ограничениям времени. Он предлагается как более эффективно

Abstract

Web proxies such as NGINX commonly rely on least-recently-used (LRU) eviction, which is size agnostic and can thrash under periodic bursts and mixed object sizes. We introduce Cold-RL, a learned eviction policy for NGINX that replaces LRU's forced-expire path with a dueling Deep Q-Network served by an ONNX sidecar within a strict microsecond budget. On each eviction, Cold-RL samples the K least-recently-used objects, extracts six lightweight features (age, size, hit count, inter-arrival time, remaining TTL, and last origin RTT), and requests a bitmask of victims; a hard timeout of 500 microseconds triggers immediate fallback to native LRU. Policies are trained offline by replaying NGINX access logs through a cache simulator with a simple reward: a retained object earns one point if it is hit again before TTL expiry. We compare against LRU, LFU, size-based, adaptive LRU, and a hybrid baseline on two adversarial workloads. With a 25 MB cache, Cold-RL raises hit ratio from 0.1436 to 0.3538, a 146 percent improvement over the best classical baseline; at 100 MB, from 0.7530 to 0.8675, a 15 percent gain; and at 400 MB it matches classical methods (about 0.918). Inference adds less than 2 percent CPU overhead and keeps 95th percentile eviction latency within budget. To our knowledge, this is the first reinforcement learning eviction policy integrated into NGINX with strict SLOs.

Ссылки и действия