2026-09-16
Router 新增饱和下限,全队排队时钉住前缀拥有者
值得精读:`policies/admission.rs` 的 pin 分支是完整的「何时不该分流」判据实现,`policies/engine_load.rs` 的极性注释解释了为什么缺采样两个方向的默认动作都是留在前缀拥有者。重点关注三个设计决策:floor 与 limit 的取值关系如何决定标签口径;压力排序与缓存局部性排序之间的取舍(作者明确标记为未决);`all_queued` 语义扩张对现有看板的影响。若计划在生产启用,建议先确认 prefill 舰队负载采样覆盖率,并观察 `saturation_pin` 与 `all_queued` 计数是否出现预期外的增长。
Router 新增队列闸门:排队 worker 不再凭缓存亲和夺冠
值得精读,尤其是做路由 / KV 局部性 / 负载均衡的同学。重点看三处设计决策:(1) 为什么用 `num_waiting_reqs` 而不是 in-flight 或运行深度,以及 fail-open 的取舍(`queue_gate_admits` 的注释本身就是设计说明);(2) 两条「第二层」为何不是同一个条件——这是把闸门从「一个 if」变成「一个可上线的特性」的关键,PR body 里「with a single prefix owner the gate rejects it, the set empties, the ungated tier re-admits that same queueing owner, and affinity traffic keeps flowing exactly where the gate meant to divert it」是最值得记住的一段;(3) `cache_aware_fallback_decision` 的判定顺序(`fleet_all_queued` 先于容量)如何决定「饱和 fleet 会不会读成健康 fleet」,这条正是 review 抓出来的 bug。上线前建议先确认引擎确实发布负载样本,并在目标 fleet 上评估 `fleet_is_all_queued` 的每请求开销。
PD 准入门口直接退休被拒请求,decode 超时降为即时 400
值得精读。核心设计决策包括:a) 以「资源所有权」判别 intake 拒绝与请求重入——prefill 门口嗅探资源、decode 门口信任调用方标志的差异化策略;b) 退休收尾集中到 `Scheduler.retire_unadmitted_request` 单一入口,与 #36988 的 post-forward 路径共享同一所有权测试从而保证互斥;c) 测试用 spy 包装真实退休方法,让门口与退休两半代码相遇;d) 明确拒绝「统一 `_check_if_req_exceed_kv_capacity` 与退休逻辑」这类表面合理的合并。该 PR 也展示了高价值自审 review 的写法:先验证两个 load-bearing 论断,再列出「明确不是问题」的排除项,避免后人重复争论。
修复 NPU 多 stage PP 启动崩溃,去掉失效属性引用
值得花几分钟精读,但不是因为改动的技术难度,而是因为它揭示了一个可复用的工程教训:删除公共属性(#38293)与新增对该属性的引用(#38249)在时间上交错,最终由 NPU 用户在启动阶段埋单。阅读时建议重点关注三点:① 作者在 PR body 中的根因回溯链路,理解「跨 PR 集成缺口」是如何形成的;② `all_gather_group` 从条件取值改为恒取 `attn_tp_group` 的语义变化,是否会影响下游 all-gather 分支;③ 该路径为何没有自动化测试,以及在 NPU CI 中加入 `pp-size > 1` 启动冒烟用例的可行性。若你是 NPU 相关代码的维护者,建议顺手排查其他平台分支(XPU/ROCm)是否存在同样指向 `require_attn_tp_allgather` 的残留引用。
统一混合 SWA 内存池改用共享字节预算并重构准入记账
值得精读。重点学习三处设计决策:一是 `create_prefill_budget` 工厂把准入记账下沉到分配器,消除调度器对池类型的 if/else 分支;二是 `can_reserve/reclaim_plan` 联合判定配合穷举式派生属性测试,是防御共享字节记账回归的有效范式;三是兄弟类重构解决了 Mamba 三池错误继承两池策略的抽象问题。遗留跟进项(rationale 注释、PrefillDelayer 水线、动态口径文档化)应在后续 PR 中闭环。
修复关闭路径:NCCL 主动中止,ASGI 服务器接管退出
值得精读,尤其关注两个设计决策:一是'abort vs destroy'的权衡——关闭路径上 peer 已退出是常态,因此选择本地中止而非集体式销毁,并用'未初始化返回、无 API 降级、异常仅告警'的就地降级策略替代开关控制;二是'hook 交接退出权'的模式——不在 asyncio 任务里 `sys.exit(0)`,而是通过 `set_server_stop_hook()` 让真正的服务器对象(uvicorn Server 或 granian Server)执行 lifespan shutdown,同时先 cancel 自身任务避免 pending 任务告警。这套模式对任何'信号处理 vs 服务器生命周期'耦合的服务都有借鉴价值。建议阅读时对照 commit 历史,可以看到作者从加 kill switch 到删 kill switch 的收敛过程。
重构 HiCache buffer 预取管线,修复命中记账错乱与重试失控
值得精读。这是 HiCache buffer-mode 预取管线的核心重构,建议重点关注三个设计决策:一是 `add_one_req` 的选择/提交分离模式,是“先记账后确认”型准入缺陷的通用解法;二是 FULL-only pin 与 SWA segment lock 的分离理由;三是 Rust/Python 双实现共享测试时的显式覆盖回退管理方式(NotImplementedError stub + 测试 skip)。对缓存子系统的维护者,本 PR 的 rebase 历史(适配 #38483、#32888、#39318)也是理解项目演化脉络的很好素材。