Add a config item to control the percentage of clean pages admitted into the block cache

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Block Cache
    • 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.

            Assignee:
            [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            Etienne Petrel
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: