Prhub

#22495 Add page_size to admission token budget check

原始 PR 作者 hnyls2002 合并时间 2026-04-10 16:16 文件变更 1 提交数 1 评论 6 代码增减 +12 / -3

执行摘要

修复 SWA 准入检查中页面大小预算不一致导致的过度准入问题。

根据PR body描述,当前准入检查(PrefillAdder.add_one_req)未考虑页面大小对齐开销,而预算扣除(_update_prefill_budget)已计入此开销。这导致准入检查比实际预算扣除更乐观,当内存池接近满载时,请求可能通过准入但分配器失败(返回None),触发不必要的重试。PR body明确指出:“Without this, the admission check is more optimistic than the actual budget deduction. When the pool is nearly full, a request can pass admission but cause the allocator to fail (returning None), triggering an unnecessary retraction.”

该PR值得精读,尤其关注SWA内存预算管理中的页面对齐开销处理。设计决策简单直接,但揭示了预算检查与实际扣除一致性的重要性。建议工程师理解_update_prefill_budgetadd_one_req的协作逻辑,以及页面大小在内存分配中的作用。

讨论亮点

无review评论,PR由作者直接合并。从PR body和issue评论看,作者通过CI测试验证了修复:运行了test_prefill_adder.py等测试,确保变更不影响现有功能。

实现拆解

仅修改一个文件:python/sglang/srt/managers/schedule_policy.py中的add_one_req方法。关键改动是在计算total_tokens时添加self.page_size,以匹配_update_prefill_budget中已考虑的页面对齐开销。具体变更:在原有total_tokens计算(基于req.extend_input_lenmax_new_tokens)基础上,增加+ self.page_size,确保准入检查与预算扣除逻辑一致。

文件 模块 状态 重要度
python/sglang/srt/managers/schedule_policy.py scheduling modified 8.0

关键符号

add_one_req

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险较低,但需注意:

  1. 核心路径变更:修改了调度策略中的准入检查逻辑,可能影响所有SWA相关请求的准入决策。
  2. 兼容性:变更使准入检查更严格,可能拒绝之前可通过的请求,需确保不影响正常负载下的吞吐量。
  3. 测试覆盖:尽管运行了相关测试,但未明确是否有针对边缘情况(如page_size变化、内存池满载)的专项测试。

影响范围:

  1. 用户:修复后,SWA内存管理更准确,减少因分配失败导致的重试,提升系统稳定性。
  2. 系统:防止内存池过度准入,避免分配器失败和潜在的性能抖动。
  3. 团队:变更较小,但涉及核心调度模块,需在部署后监控准入率和内存使用情况。
核心路径变更 预算逻辑调整

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论