KV Offload 热度改为每请求结算一次,修正淘汰顺序
建议精读,尤其是负责 KV Offload、CPU 缓存策略或调度器的工程师:
- 值得学习的三个设计决策:一是「用逻辑 rank 而非物理位置表达 recency」,从而让 pin 状态与淘汰顺序解耦;二是「每请求一次访问」的语义边界(insertion / reuse / 内部级联 pin 三分类);三是通过默认实现保持 `touch` API 与外部策略兼容的渐进式改法。
- 重点关注 `policies/lru.py` 的 `_is_current()` / `_update_recency()` / `evict()` 三者构成的懒失效与原子回滚协议,这是最容易在后续修改中被破坏的部分。
- 若维护自定义 `cache_policy_module_path` 策略,需验证新的 `on_request_finished()` / `on_store_miss()` 默认路径是否符合预期;若新增 offload key 的产出路径,务必同时调用 `set_offload_key_position()`,否则顺序会静默降级。
修正 Mamba 准入块估算,避免长请求永久卡在等待队列
值得精读,重点不在 diff 规模(源码仅 4 行),而在于三个设计决策:(1) 「上限截断」与「条件覆盖」的语义差异,以及为什么 `min()` 才能同时避免高估导致的准入饥饿和低估计的块池超发;(2) `apply_admission_cap` 从「影响数值」退化为「只影响副作用」,使准入与分配共用同一估算口径;(3) 新增测试把「估算等于实测」写成断言,是排查同类 block accounting 问题的通用模板。建议阅读顺序:先看 PR body 的复现场景与 Stall 描述,再看 `MambaManager.get_num_blocks_to_allocate` 尾部的构造与 `min()`,最后看新测试如何先把请求推进 `_allocated_block_reqs` 再制造 checkpoint 场景。后续可跟进:对 partial hit + checkpoint 组合、`num_prefill_checkpoint_blocks > 1` 与不同 `hash_block_size` 补充参数化覆盖,并在 review 中确认 #53614 是否为确定回归来源。