Files
agentic-kvc/RESULTS_SUMMARY.md
Gahow Wang a2111b6e18 PD-disagg docs: annotated corrections for e13391e contamination
Adds dated, non-destructive correction notes to the contaminated PD-vs-colo
artifacts after the producer-eviction bug (`evict_blocks(sent_block_ids)` on
`finished_sending`, deployed over the "fresh" pip vLLM by
`scripts/deploy_vllm_patches.sh`) was found and gated behind
`VLLM_EVICT_SENT_BLOCKS` (default off).

  PD_DISAGG_RESULTS.md  top CORRECTION banner + §6 RETRACTED marker.
                        §6 (session-affinity hot-pin) was an `e13391e`
                        artifact under controlled concurrency; §3 RR, §4
                        TPOT win, §5 D-pool ceiling, §5.1 consumer crash
                        stand.
  RESULTS_SUMMARY.md    §4 confirm+refine note: clean ablation confirms
                        the D-pool capacity thesis and adds regime-
                        dependence.
  pd_separation_analysis.md  scoped caution: thesis confirmed; flags
                        only reuse-dependent figures for cross-check
                        (this study used a different stack).
  figs/mb5/CORRECTION.md  flags mb5_producer_hotspot.png as retracted;
                        §3 RR and §5 D-pool figures stand.
2026-05-31 20:14:14 +08:00

9.3 KiB
Raw Permalink Blame History

目前已成立的结论2026-05-27

EAR 项目目前能用实测数据支撑的论点汇总。每条都标了对应的图/数据路径。


1. Workload 性质§2

Production trace = Qwen3-Coder agentic1.3 M sessions / 2.1 M reqs / 7200 s。

性质 数据 实证
KV 复用几乎全在 session 内 intra 93.2% / cross 5.7% / shared 1.1%;理论 APC 上界 79.6% figs/f2a_reuse_topology.png
Session 极度偏斜 top 1%/5%/10%/25%/50% = 46.5%/66.5%/74.6%/87.5%/96.0% input mass figs/f2b_session_skew.png
单请求 KV 已经很大 p50 1.8 GiB / p90 8.0 / p95 9.6 / p99 11.5 GiBKV pool 38 GiB/instance0.4 × H20 96 GiB→ p99 req 只能装 3 个/instance figs/f2c_kv_footprint_cdf.png

结论cache 是 session-local 的scheduling 必须保留 session affinity单 request KV 接近 pool 上限,PD-disagg 4P+4D 让系统 decode 容量直接减半

2. Dispatch Coupling§2.3

数据 Agentic (Qwen3-Coder) Chatbot (qwen3-max)
Inter-turn T_external p50 1.6 s 7.2 s
gap < 1 s 比例 39% 4%
gap < 5 s 比例 67% 29%
p99 738 s 43 s

参考图:figs/f3a_inter_turn_gap.png

结论agentic 有一段 chatbot 没有的 sub-second tool-call mode39% vs 4%)。当 W_turn ≳ T_external(任何 W_turn > 1 s 的 scheduler 在 agentic 上都满足这条件Little's Law L = Λ · N · (W_turn(L) + T_external) 进入闭环 regimescheduler 的 ε 退步通过 KV 竞争反馈环被放大成 wall-clock 数倍差距。实测lmetric 跑 600 s trace 用 49 min wall-clock = 8x amplification

3. 现有调度的三类失败§3

Baseline 失败模式 数据
load-balance / LMetric 丢 locality lmetric APC 56.9%vs 上界 79.6%LMetric 比 load_only 只好 +3.3pp,因为 cache 信号在乘性 score (pending+inputhit) × num_req 里被 num_req 吞掉
静态 PD-disagg D 侧 KV 容量墙 + transfer 成本 见 §4 cost-vs-benefit
Pure sticky 全员被 hot session 拖累,不是单一热点 sticky median worker 20.3 s vs unified 10.3 ssystem e2e p90 sticky 34.6 s vs unified 18.0 s用 max/median ratio 衡量是误导§3.3 用 absolute per-worker latency

参考图:figs/f4a_apc_loss.pngfigs/f4b_pdsep_kv_wall.pngfigs/f4c_per_worker_ttft.pngfigs/f6_e2e_latency_bars.pngfigs/f6_e2e_latency_full_grid.png

4. Static PD-disagg 为什么失败§3.2)—— 容量问题,不是 cost-benefit 问题

2026-05-27 纠正:本节前一版本论证"PD-disagg 因为 transfer cost > phase isolation benefit 而失败"。这个论证算错了。正确的 phase-isolation benefit 是每个 prefill 事件 × D 个 concurrent stream 的总和(≈ D × T_prefill),不是单个 request 的 decode 时长。用正确公式PD-disagg 在 phase-isolation 这一维上赢 colo 一两个数量级。Static PD-disagg 在 agentic 上失败的真正根因是 D 侧 KV pool 容量,不是这一维。

4.1 真正的失败模式D 侧 KV 容量天花板

8C colo 4P+4D PD-disagg
Per-D-instance KV pool0.4 × 96 GiB 38 GiB 38 GiB
系统总 decode 容量D 实例数 × 单池) 8 × 38 = 304 GiB 4 × 38 = 152 GiB
p99 单请求 KV = 11.5 GiB → 最多并发 decode 24 12减半

Colleague 4P+4D 实测TTFT p50 0.91 s → 62.8 s62×、success rate 99.5% → 52%。失败模式:D 池溢出 + 排队,不是 transfer 延迟。

参考图:figs/f4b_pdsep_kv_wall.pngpdf 版本是高质量 paper figure

4.2 MB2 — KV transfer costper-request 一次性成本,是 dominant cost

dash1 GPU 0+1intra和 dash1 ↔ dash2inter, 200 Gbps RoCE扫 9 个 size × 5 reps。

路径 稳态带宽(≤ 3 GiB p99 agentic 请求 11.5 GiB transfer
Intra-node 9.7 GB/s p50 1.9 s · max 10 s
Inter-node 10.0 GB/s(差 <3% p50 1.7 s · max 9.2 s

新发现intra/inter 几乎重合 → Mooncake batch_transfer_sync_write 永远走 RDMA NIC,不走 NVLink。200 Gbps NIC 是天花板。PD-disagg transfer cost 与拓扑无关

参考图:figs/mb2_transfer_time_compare.png、doc analysis/mb2/README.md

4.3 MB1 — Phase interferencePD-disagg 的潜在 benefit 上界)

dash1 GPU 0 单 instance无 kv_connectorchunked-prefill 默认开启D × P 扫描。D=8 结果:

Prefill T_prefill per-stream TPOT during penalty
2k tok 143 ms 32 ms 4×
32k tok 4.5 s 388 ms 52×
131k tok 57 s 1419 ms 183×

Decode 在 prefill 期间被几乎完全 halted,单 stream 损失 ≈ T_prefill 的时间。每个 prefill event 总 decode 损失 ≈ D × T_prefill

参考图:figs/mb1_interference.png、doc analysis/mb1/README.md

4.4 联合 cost-benefitper-prefill event

Prefill (KV size) T_prefill Cost = T_transfer Benefit = D × T_prefill (D=8) Cost / Benefit
2k tok (192 MiB) 0.14 s 8 ms 1.1 s 0.7%
33k tok (3 GiB, trace mean) 4.5 s 0.32 s 36 s 0.9%
125k tok (12 GiB, ~p99) 57 s 1.9 s 456 s 0.4%

PD-disagg 在 phase-isolation 这一维赢 100×250×。但这不是 §3.2 该用的论证,因为 §3.2 真正的 dominant failure 是 §4.1 的 D 池容量天花板(颠覆了上面的全部数学)。

总结

  • D 侧 KV 容量天花板§4.1)→ PD-disagg 在 agentic 上结构性失败
  • MB1 + MB2 的合计 cost-benefit 在 phase isolation 维度上 PD-disagg 是赢的,但这件事被容量天花板压倒
  • Paper §3.2 论证应该聚焦"D 池装不下"MB1/MB2 数据用作 supporting contextper-request transfer charge 量化、phase isolation benefit 量化)而不是 main argument。

2026-05-30 更新 — 干净栈三轴 ablation 证实本节、并加 regime 细化。 本节的容量论点D 池容量天花板 / decode 减半)在修复 e13391e 污染后的 clean stack 上得到确认concurrency 轴 N=64 时 PD 倾覆,producer APC 从 71% 崩到 1.4%、TPS 30% 而 colo 线性 scaleFig 3细化PD 并非"在 agentic 上一律失败"——它在 低负载 / decode-heavy / 低复用 区间 colo真正失败的是 agentic corner高复用 + 短输出 + 大上下文 + 高并发)——静态 P:D split 无法同时给出复用所需的 producer 容量 decode 容量,而 colo 的弹性池两者兼得。 另注:旧 MB5 文档(PD_DISAGG_RESULTS.md §6"session-affinity 救不了 PD / PD 复用=0%" 的结论是 e13391eproducer 每次 KV 传输后 evict prefix污染产物,已撤回 干净栈上 session 路由的 producer APC 与 colo 持平7182%)。 图:figs/mb5_pd_ablation/

5. EAR 设计的实证状态§4

Pillar 已实证 待实证
Affinity-default routing (Pillar 1) Current unified 算法 = LMetric + high-cache affinityAPC 79.4%(达到 79.6% 上界 97%TTFT p90 7.3 smedian worker p90 10.3 s
Hot-triggered session migration (Pillar 2) substrate 已通:kv_both connector 在 trace replay 上 net positiveTTFT p90 18.6%DR-fix 后 36.6%),原 elastic_migration_v2 paper 的 "+45% kv_both penalty" obsolete e2e 策略层trigger 阈值 + target selection 在反馈环里)未直接验证

6. 已经能写的 paper 主张(按 confidence 排序)

  1. Agentic vs chatbot 在调度上是不同 regimedispatch coupling + sub-second tool-call mass—— 实证完整
  2. 三类现有调度 baseline 各自的失败模式load-balance / static PD-disagg / pure sticky—— 实证完整
  3. Static PD-disagg 在 agentic 下失败的 dominant 根因是 D 侧 KV 容量(不是 phase-isolation cost-benefit—— 实证完整(f4b + colleague 4P+4D 数据)
  4. Mooncake transfer cost 拓扑无关intra ≈ inter~9.7 GB/s NIC 上限)—— 实证完整MB2
  5. Phase isolation interference 在 chunked-prefill on 下仍然显著per-stream TPOT during prefill 15×2000× baseline—— 实证完整MB1注意:这条数据本身不直接论证 "PD-disagg 失败",因为算正确账后 PD-disagg 反而在这一维上赢;它的用途是给 §3.2 提供 phase-isolation benefit 上界的量化。
  6. Affinity-default 调度current unified达到 APC 上界per-worker latency 也压倒 sticky —— 实证完整
  7. Hot-triggered migration 修复 sticky 的 hot pin —— design 完整、e2e 待验证

7. 待做

  • MB3-5end-to-end PD-disagg deploymentD-pool runtime occupancy、cache reuse × PD interaction、PD ratio sweep。这些是 §5 完整实验矩阵的事
  • EAR Pillar 2 migration e2e validation(在 connector_tax DR-fix 之上重测)
  • §5.4 wall-clock amplification sweep5 baseline × 3 runs钉死 dispatch coupling 论证的实证 closure
  • Scale-out 验证dash1+dash2 = 16 GPU等 dash0 + 3-node 可用时扩到 80 GPU