Field notes from the cave

ADR-0007: Eviction — size-aware, FIFO-based (not LRU/LFU)

Status: Accepted (2026-06-09) — revisable; the policy is pluggable.

Context

LRU and LFU are the wrong frame here for two reasons: 1. They optimize object count, but we evict to reclaim bytes, and objects span 1 MB–1 GB (1000×) — so value-per-byte is what matters, not recency alone. 2. LRU’s per-hit list surgery is a lock convoy under thread-per-core (ADR-0001).

We also have few objects (thousands of big ones, not memcached’s tens of millions of tiny ones), which lets us afford a richer per-object policy than memcached can.

Decision

Consequences

References

S3-FIFO (Yang et al., SOSP 2023) · SIEVE (Zhang et al., NSDI 2024) · GreedyDual-Size / GDSF (Cao & Irani 1997; Cherkasova 1998) · W-TinyLFU (Caffeine) as an alternative admission filter.