Papers
arxiv:2610.21500

When the KV Cache Is Slower Than the GPU: Scaling Remote KV Tiers for Context-Parallel Prefill

Published on Oct 15
· Submitted by
Antonio Tiene
on Oct 16

Abstract

Remote KV caching for long-context LLM serving can severely degrade latency unless the store is sharded by parallel rank, loaded asynchronously, and paired with high-bandwidth retrieval, yielding large throughput gains.

Reusing the attention KV cache across requests is a standard way to cut prefill cost in long-context LLM serving, and production systems increasingly back the per-engine cache with a remote tier shared by every engine. We study such a tier in a disaggregated deployment of GLM-5.3, an FP8 mixture-of-experts model with multi-head latent attention (MLA), on 8xB300 nodes running prefill context parallelism (PCP8). Enabling the remote tier (LMCache with a Valkey store) left median time-to-first-token unchanged but raised the 16k-token p99 from 3.96 s to 17.3 s. Replaying a production request stream on an isolated engine, we find that a remote hit took 0.88 s against 0.31 s to recompute the prompt, and that synchronous loading turned a hit-heavy stream into an unstable queue: p99 83.32 s with the GPUs 7% busy. A two-term cost model explains both: a hit pays off only if the tier delivers more than B* = sR (2.53 GB/s for this model and GPU), and a fixed per-hit engine cost (T0 ~ 0.33 s) means that hits on prompts shorter than about 17k tokens cannot beat recompute at any bandwidth. Guided by the model, we (i) shard the MLA KV store across PCP ranks, with a proof that the existing minimum-over-ranks lookup returns the longest cached prefix and a load protocol that can never desynchronize collectives; (ii) partition the remote tier by rank, one server instance per rank with no coordination, which raises GET bandwidth 6.3x to 10.76 GB/s; (iii) add asynchronous loading to the sharded store; and (iv) fix three client bugs that caused unbounded stalls. On the hit-heavy stream, with 98.5% of prompt tokens served from the remote tier, p99 falls from 83.32 s to 0.67 s. The sharded store raises prefill throughput by 14%, and by 34% together with an upstream kernel fix. All changes are submitted upstream to LMCache.

Community

Paper submitter

A remote KV tier is only useful if it beats recomputation, and on current GPUs that is a high bar: for GLM-5.3 on a B300 node, a cache hit must arrive at more than 2.53GB/s, and a fixed engine cost puts short prompts out of reach altogether. A single key-value server could not meet the bar, and synchronous
loading turned the shortfall into an unstable queue. Sharding the MLA KV store across context-parallel ranks spreads cache I/O evenly, and its static ownership lets the remote tier scale out by rank with no coordination. Together with asynchronous loading and three client fixes, this brings hit-heavy p99 from
83.32s to 0.67s.

Flat median with a p99 climbing from 3.96s to 17.3s at 16k is the signature of a queue wearing a cache's name — every engine in the pool contends for the same remote state, so the request that needs the tier most is the one stuck longest behind it. In deployment terms that's worse than no tier at all: you've added a hop and kept the tail. Before I'd trust this in prod I'd want the hit-rate distribution sliced by context length, plus eviction churn when short and long requests share one pool — a 90/10 split makes latency bimodal and the median tells you nothing about the users actually paying for long context. And I'd want to know whether the p99 is queueing or transfer, because those have opposite fixes: admission control and per-tenant tiers are cheap, more NICs are not. I've been burned by exactly this shape before — a shared cache that looked great on averages until two 32k requests landed in the same second.

Sign up or log in to comment

Get this paper in your agent:

hf papers read 2610.21500
Don't have the latest CLI?
curl -LsSf https://hf.co/cli/install.sh | bash

Models citing this paper 0

No model linking this paper

Cite arxiv.org/abs/2610.21500 in a model README.md to link it from this page.

Datasets citing this paper 0

No dataset linking this paper

Cite arxiv.org/abs/2610.21500 in a dataset README.md to link it from this page.

Spaces citing this paper 0

No Space linking this paper

Cite arxiv.org/abs/2610.21500 in a Space README.md to link it from this page.

Collections including this paper 0

No Collection including this paper

Add this paper to a collection to link it from this page.