Prhub

sgl-project/sglang · 标签视图

标签列表

聚合结果

scheduling 相关 PR

2026-09-01
功能 重要性 9.36 洞察度 7.00

unified 池泛化至 N 子池,新增浮动池支撑 mamba+SWA 三态 KV

值得精读。三个设计决策尤其值得关注:一是 `_CapacityField` 用数据描述符 + epoch 让容量 memo 失效"按构造"发生,避免了散落的失效钩子;二是 `_float_open_short_side` 的 demand-vector 策略,使单带宽短供、耦合多带分配、未来组合准入向量统一为一种表达;三是 `_relieve_for_alloc` 将 flush/relocate/evict 收敛为单一 ladder。建议结合 test_unified_capacity_memo.py 与 test_multi_ended_allocator.py 的测试方法论阅读,这两份测试的防御深度(属性测试 + 反射扫描 + 伪装写入探测)本身就值得借鉴。

功能 重要性 8.29 洞察度 7.00

打通 mixed chunk 与投机解码的组合降级路径

值得精读,尤其关注两条设计决策:一是把混合 step 的降级契约表达为 `supports_mixed_chunk()` 能力位而非算法字符串硬编码;二是 overlap 下“调度期占位 + forward 入口晚期绑定”的尾部重建模式(`resolve_mixed_spec_tails`),它绕开了 CPU 无法得知在飞 accept 数的根本矛盾。阅读建议:先看 `mix_with_running` 与 `resolve_mixed_spec_tails`,再读测试文件中的三个 cell,最后按 commit 顺序浏览 [Fix] 记录理解每个坑的成因。

2026-08-31
缺陷修复 重要性 7.07 洞察度 6.00

修复空暂存环水位不前进导致的 PD 暂存转发卡死

值得精读。两个设计点值得学习:一是环形缓冲区水位的经典解法——用 round 的单调性抵消 tail 归零带来的回退,保证异步 readiness 检查始终可推进;二是作者用"allocator-reset-only 仍失败"的对照实验把问题拆成两个正交缺陷,这种验证方法可复用到其他分布式状态同步类 bug。对维护 staging 传输层的同学,建议后续关注 `_send_watermark` 静默异常路径与订阅快照丢失时的补偿重试。

2026-08-30
重构 重要性 5.42 洞察度 4.00

将 kv_committed_len 写入收拢进 KV 分配函数

值得快速阅读,不必精读。重点关注两个 alloc 函数尾部循环的「分配即提交」记账模式,以及 `_OWNER_SITES` 用 mutation-count 强制审计写入点归属的测试设计——这是 sglang 保护核心记账不变量的一种轻量而有效的做法。对于想理解 owned-KV 解耦重构链的读者,可把它作为入口之一。

重构 重要性 7.51 洞察度 6.00

KV 记账字段收拢进 ReqKvInfo,纯重构为所有权模型铺路

值得精读。虽是纯重构,但展示了高质量"所有权集中化"迁移的完整范式:先收拢字段、再抽象计算逻辑(swa_dead_lo)、最后补显式不变式断言,且注释随 commit 反复打磨。对理解 sglang 的 KV cache 所有权模型、流式会话状态转移以及 unified-memory 演进方向都有帮助。重点阅读 schedule_batch.py 的 ReqKvInfo 定义与 streaming_session.py 的 save_from_req / try_match_prefix。

缺陷修复 重要性 7.25 洞察度 6.00

空闲循环树缓存深度校验默认关闭,修复 DP 组调度卡死

值得精读。代码量虽小,却包含两个可复用设计:一是用 EnvField 的 callable default 实现「生产默认关、CI 默认开、显式覆盖优先」的三态配置语义,让调试仪器默认不进生产路径同时不牺牲 CI 回归;二是测试通过 contextmanager 清理进程环境变量来稳定默认值断言,是环境耦合测试的典型解法。对调度器与缓存团队,建议同时关注 sanity_check 自身性能(TODO(hzh))与文档同步。

2026-08-29
缺陷修复 重要性 8.72 洞察度 6.00

HiCache buffer 模式改为按实时树裁决预取去留

值得精读。核心价值在于解决异步预取与实时缓存树状态不一致的经典问题:不信任会过期的 node id,而是在决策点对 live tree 重新匹配,且把决策前置到 IO commit 之前以保持撤销语义。消费端 trim 而非全有全无的设计也值得借鉴。建议读者重点看 `pipeline.py` 中 `try_lock_anchor` 的四态返回与 `staged_splice_tokens` 的三种不可用判定,以及 `unified_radix_cache.py` 的 IO commit 决策顺序;如后续要扩展 HiCache,需注意重匹配开销与取消后重试的竞态。

重构 重要性 7.51 洞察度 6.00

Req.kv 常驻化,KV 归属统一由 req_pool_idx 判定

值得精读。这是 SGLang mem_cache KV 所有权重构系列的开篇(分支名 `lsyin/kv-ownership-pr1`),`is_holding_kv` 单一谓词 + eager 对象 + 清零释放的组合是后续 #37094、#37108、#37164 的阅读前提。建议重点理解三处:`ReqKvInfo.is_released`/`mark_released` 的契约、`release_kv_cache` 收紧后的断言、以及 `streaming_session.py` 中 slot 与 req 之间的所有权转移方式。