-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Block Cache
-
None
-
Storage Engines - Persistence
-
373.818
-
SE Persistence backlog
-
None
Motivation
The block cache currently admits every full page handed to BlockCache::put() (deltas are already skipped). To tune memory usage and protect against caching low-value pages, operators need a knob to admit only a percentage of clean pages.
Approach
- Add a new startup parameter to src/mongo/db/modules/atlas/src/disagg_storage/server_parameters.idl (e.g. disaggBlockCacheCleanPagePercentage, double/int 0–100), alongside the existing disaggBlockCacheSizeBytes / disaggBlockCacheNumShards knobs.
- Apply the admission decision in BlockCache::put() (pali_block_cache.cpp) — admit a clean page only if it falls within the configured percentage (deterministic sampling on the cache key, not RNG, to stay reproducible).
- Define behavior at the bounds (0 = admit no clean pages, 100 = current behavior).
Definition of Done
- New knob exists, is documented in the IDL, and defaults to current behavior (no regression when unset).
- BlockCache::put() honors the percentage for clean pages.
- Unit test in pali_test.cpp covers 0%, 100%, and an intermediate value.
- is related to
-
WT-17313 Server Victim (Block) Cache Improvements
-
- Backlog
-