Skip to content
About
Main content

Partitioned capacity: four arguments, one structure

Four arguments have arrived independently at the same conclusion:

  1. Unbounded key space (The derivation ladder). Negative entries (cached "does not exist" answers) can be generated without limit and must not compete with positive entries.
  2. Different miss costs (Cost-aware eviction). One hit-rate objective across cost classes optimizes the wrong thing.
  3. Marginal return (What makes data cacheable). The best allocation equalizes dMRC/dC, the slope of each tenant's with respect to its share. A tenant dominated by one-shot requests has almost no marginal return anywhere, so it deserves a cap, not a fair share.
  4. Isolation. A scanning tenant in a shared cache is more than a noisy neighbour. A co-tenant's origin is sized for (1 − h)λ, so a hit-rate collapse gives it a multiple of its capacity. In a shared cache, one tenant's access pattern is another tenant's availability dependency. That is why this belongs to workload management (who gets how much of a shared resource), not to tuning.

The mechanisms, with their costs:

MechanismBenefitCost
Static partitionssimple, predictablewaste capacity on idle tenants
Dynamic partitioning by marginal miss-ratio curveoptimalneeds a miss-ratio curve per tenant, so the What makes data cacheable instrumentation becomes a prerequisite for the third time
Per-class admission filteringnearly free; the already does itonly approximate protection
Pinningthe only hard guaranteeconverts cache capacity into dedicated storage, so it stops being a cache

The last row shows that (Every gain costs something elsewhere.)

Compression: Four independent derivations demand partitioned capacity. Only pinning guarantees anything, and it does so by no longer being a cache.