Hanchen Li, Qiuyang Mang, Runyuan He, Qizheng Zhang, Huanzhi Mao, Xiaokun Chen, Hangrui Zhou, Alvin Cheung, Joseph Gonzalez, Ion Stoica (UC Berkeley / Tsinghua) | 2025-11 | arXiv 2511.02230 Category: agent | Tags: agent-serving, kv-cache-management, multi-turn-scheduling, ttl-mechanism, react-agent Read: 2026-05-25
Continuum 为多轮 ReAct agent 推理引入 KV cache time-to-live (TTL) 机制:以 cost-benefit 模型计算最优保留时间,兼顾 reload 成本和排队延迟;结合 program-level FCFS 调度,实现 1.12–3.66× 延迟下降和最高 8.18× 真实 SWE-agent 加速。
现有推理引擎(vLLM/SGLang)在 agent tool call 间隙立即驱逐 KV cache。与人类交互不同,agent tool call 返回极快(≤2s),但 KV 被驱逐后下一轮推理必须重入等待队列,产生 per-turn queueing delay——此延迟跨多轮累积,在实测中占总延迟的 58.2%。即使启用 CPU offloading 让 KV reload 近乎免费,排队延迟仍然无法消除。
InferCept 虽保留 KV cache,但仅考虑 reload 成本、忽略排队延迟,且无法适应 tool call 时长的高度长尾分布(cd 最慢 10% 占 94.1% 总延迟)。

Paper Figure 1: 两种失败模式对比。上方:end-of-turn eviction 导致额外 prefill 重计算;下方:即使 CPU offloading 保留了 KV,per-turn queueing delay 仍然迫使请求在 GPU 队列中等待。
Figure 1 直观展示了为什么仅解决 KV reload 问题是不够的——排队延迟是一个独立于数据传输的调度问题,InferCept 的 preserve 策略对此完全无效。
核心方法: 为每个完成 tool call 的请求计算最优 TTL $\tau^*$,在 TTL 窗口内 pin 住 KV cache 在 GPU 显存中。TTL 通过期望效用最大化确定:
$$\tau^* = \arg\max_{\tau} \left[ \mathcal{P}(\tau, f) \times \mathsf{Benefit}(r) - \mathsf{Cost}(\tau, r) \right]$$
其中 $\mathsf{Cost}(\tau,r) = \frac{\mathsf{MemUsage}(r)}{\mathcal{M}} \times \tau$ 量化 GPU 显存占用对其他请求的阻塞代价;$\mathsf{Benefit}(r) = \mathsf{CacheMissCost}(r) + \mathsf{OutofOrderCost}(r)$ 包含 reload 成本和排队延迟两项收益;$\mathcal{P}(\tau, f)$ 是 tool $f$ 在 $\tau$ 内完成的概率(从历史统计估计)。
核心技术壁垒: OutofOrderCost 的 memoryfulness factor $\eta = -\mathrm{Corr}(k, N-k)$。此标量捕获了「维持程序顺序是否有助于加速」:当 agent 程序步数固定($\eta=1$),维持 FCFS 等价于近似 SRTF;当步数服从几何分布($\eta=0$),排序无益。这一数量将排队延迟从「看起来重要」提升为「可量化决策」的变量——这是 Continuum 相比 InferCept 的本质差异。
当 TTL 过期而 tool call 未返回时,KV cache 自动驱逐,提供对长尾 tool 延迟的鲁棒性保证。

Paper Figure 7: Continuum 系统架构。Tool Call Handler 识别 tool call 并预测时长;Scheduler & TTL Logic 计算最优 TTL 并管理 Priority Queue;GPU Memory 中的 KV blocks 带 TTL 标记,过期自动释放。
Continuum 作为 vLLM 的模块化插件实现。核心组件是 Tool Call Handler,在每次请求进出引擎时被调用:(1) 从生成输出中识别 tool call;(2) 查询历史记录 $S[f]$ 预测 tool 时长;(3) 用 utility model 计算 TTL;(4) 将 KV cache pin 到 GPU 显存并设置 TTL 定时器。调度器在每轮调度循环中检查过期的 TTL pin 并释放,同时以 program-level FCFS 优先级调度等待队列中的请求。
Agent 的一个完整 turn 流经状态机:推理 → 检测 tool call → 计算 TTL → pin KV → 等待 tool 返回。如果 tool 在 TTL 内返回,请求以最高优先级被立即调度(无排队延迟);如果 TTL 过期,KV 被安全释放,请求重新排队并承担可控的 reload 成本。
无形式化作者证明 — 仅实证
Continuum 的 TTL 最优性基于 expected utility maximization,但未提供收敛性证明或 competitive ratio。所有正当性来自实验验证。
| 符号 | 定义 | 物理意义 |
|---|---|---|
| $\tau$ | TTL 值 | KV cache 最大 GPU 驻留时间 |
| $\mathsf{MemUsage}(r) / \mathcal{M}$ | 内存占比 | pin 一个请求阻塞多少个平均请求 |
| $\mathsf{CacheMissCost}(r)$ | 重建成本 | prefill 或 CPU→GPU reload 的时间 |
| $\eta$ | memoryfulness factor | 维持程序顺序对加速的贡献系数 |
| $\mathcal{T}$ | 平均排队延迟 | 历史观测的 per-request 等待时间 |
| $\mathcal{P}(\tau, f)$ | CDF@τ | tool $f$ 在 $\tau$ 内完成的概率 |
关键方程物理意义:
6 minimum checks:
Agent-specific checks:

Paper Figure 9: OpenHands + Llama-8B on H100 的 average 和 P95 job delay。Continuum(绿色)在所有 JPS(Jobs Per Second)下显著优于 vLLM 和 Autellix,且差距随负载增大而扩大。
在 OpenHands 真实 SWE-agent 工作负载上,Continuum 在 JPS=0.05 时将 average delay 从 vLLM 的 ~5000s 降至 ~1600s(3.1×),P95 从 ~9000s 降至 ~3000s(3×)。Autellix 的 PLAS 调度虽考虑程序级优先级,但因缺乏 KV 保留机制,在高负载下退化严重。

Paper Figure 11: SWE-Bench trace + Llama-8B 的 P90 和 P95 job duration。Continuum 在全部 JPS 下持续优于 vLLM、Autellix+、InferCept 三个基线。
P90/P95 的改善尤其显著——因为排队气泡对尾延迟的影响是累积的:每多一轮 tool call,气泡多叠加一次。InferCept 虽保留 KV,但因忽略排队延迟,其 P90/P95 与 vLLM 差距不大(JPS=0.125 时仅 1.1× 改善 vs Continuum 的 1.5×)。

Paper Figure 14: 随 turn multiplier 增加(1× 到 5×,即 10.9 到 50.6 turns),Continuum 的改善倍数从 1.6× 增长到 3.7×,而自身延迟保持稳定。
这是论文最关键的 scaling 实验。当 turn 数从 10.9 增加到 50.6 时,vLLM/InferCept/Autellix 的延迟线性增长(per-turn queueing delay 累积),但 Continuum 的延迟几乎不变——因为 TTL 消除了每轮的排队气泡。这验证了 per-turn queueing delay 是一个与 turn 数成正比的系统性问题。

Paper Figure 6: TTL 过短导致 KV 被过早驱逐(左,承担 prefill + queueing 代价);TTL 过长导致 GPU 显存被无效占用(右,阻塞其他请求)。

Paper Figure 12: 真实分布式 SWE-agent 环境下,Continuum 在中高负载下延迟优于 SGLang 和 Dynamo,同时保持相同 pass rate(~7%)。
在 Company A 的真实 SWE-agent 测试床上,Continuum 最高达到 8.18× 延迟下降。这远超模拟实验的 1.12–3.66×,表明真实 agent trace 的排队气泡问题比合成 benchmark 更严重。

Paper Figure 13: 不同 max batch size(16–256)和 chunk size(256–4096)下,Continuum 一致优于所有基线,证明其对引擎配置的鲁棒性。
| 维度 | SWE-Bench | BFCL v4 | OpenHands |
|---|---|---|---|
| Turns per program | 10.9 ± 2.1 | 6.3 ± 2.3 | ~ |
| Tool time (ms) | 925 ± 3550 | 1923 ± 2133 | ~ |
| Tokens per program | 70k ± 20k | 93k ± 69k | ~ |
| 延迟改善 (emulated) | 1.12–3.66× | 1.10–3.22× | up to 3.1× |
| 延迟改善 (real) | — | — | 8.18× |
| 步骤 | 论证 | 证据 |
|---|---|---|
| 1. Agent workload 的 tool call 间隙导致 KV 被驱逐 | 现有引擎的 end-of-turn eviction 策略与 agent 的 fast tool return 不匹配 | Table 2: tool call 平均 925ms/1923ms,远快于人类交互 |
| 2. KV 驱逐的主要代价不是 reload,而是 per-turn queueing delay | 即使 CPU offloading 使 reload 近乎免费,请求仍需排队等待 GPU 空间;此延迟跨 turn 累积 | Figure 4: InferCept 保留 KV 后排队气泡仍与 vLLM 相当;气泡占总延迟 58.2% |
| 3. 简单的「always pin」策略不可行,因为 tool call 时长高度长尾 | 无限 pin 导致 GPU 显存被长尾 tool call 占死 | Figure 5: cd 最慢 10% 占 94.1% 总延迟 |
| 4. TTL 机制以 cost-benefit 模型设定有界保留时间 | 最优 $\tau^*$ 在命中概率 × 收益与显存占用成本之间取平衡 | §4.1-4.2 公式推导 + Figure 6 直观说明 |
| 5. Program-level FCFS 结合 TTL 实现近似 SRTF | 已服务更多 turn 的程序剩余 token 更少,FCFS 近似 SRTF | Figure 3: future tokens 随 step 单调递减 |
| 6. 效果随 turn 数增加而放大 | per-turn delay 是累积量,消除它的收益与 turn 数成正比 | Figure 14: 1× turns 1.6× → 5× turns 3.7× |
| 7. 真实生产环境效果优于模拟 | 真实 agent trace 的排队问题比合成 benchmark 更严重 | Figure 12: 最高 8.18× |
代码开源: https://github.com/Hanchenli/vllm-continuum (基于 vLLM)
OutofOrderCost 中的 memoryfulness factor $\eta$ 是整个系统的 keystone——它将「是否应该维持程序执行顺序」从直觉判断转化为可量化的统计度量。没有这个因子,TTL 决策退化为仅基于 reload cost 的 InferCept 策略。$\eta$ 的计算仅需维护 $(k, N)$ 的运行时统计,overhead 可忽略,但其对决策质量的影响是决定性的。