Prhub

#22559 [metrics] Add `PoolStats.update_scheduler_stats` to deduplicate metrics assignment

原始 PR 作者 hnyls2002 合并时间 2026-04-11 12:04 文件变更 2 提交数 3 评论 5 代码增减 +15 / -26

执行摘要

重构调度器指标统计逻辑,统一池相关字段赋值并修复四舍五入一致性。

PR body中明确指出,本次变更旨在消除三个重复的赋值块(prefill stats、decode stats和idle check_memory),通过统一的pool_stats.update_scheduler_stats(self.stats)调用来集中池相关统计字段的赋值。同时,修复了token_usage字段的四舍五入不一致问题,此前仅idle路径进行了四舍五入,现在所有三个路径都保持一致。这是对#22554的后续改进。

该PR值得精读,特别是对于关注代码质量和可维护性的工程师。关注点包括:

  1. update_scheduler_stats方法如何统一处理不同池统计字段。
  2. round(..., 2)的引入如何修复四舍五入不一致问题。
  3. 如何通过单一方法调用替换多个重复块,这是典型的DRY原则应用。
讨论亮点

由于review_comments_count为0,没有review讨论记录。从commit历史看,有三个提交:第一个添加了update_scheduler_stats方法并去重;第二个添加了类型注解;第三个修复了token_usage的四舍五入一致性。这表明作者在实现过程中自行完善了代码,没有外部review反馈。

实现拆解

实现分为两个关键文件:

  1. 在python/sglang/srt/managers/scheduler_runtime_checker_mixin.py中,为PoolStats类新增update_scheduler_stats方法,该方法接收SchedulerStats对象,统一设置num_used_tokens、token_usage、full_token_usage、swa_token_usage和mamba_usage字段,其中token_usage使用round(..., 2)进行四舍五入。
  2. 在python/sglang/srt/observability/scheduler_metrics_mixin.py中,移除report_prefill_stats、report_decode_stats和check_memory方法中重复的字段赋值代码,替换为对pool_stats.update_scheduler_stats(self.stats)的调用。
文件 模块 状态 重要度
python/sglang/srt/managers/scheduler_runtime_checker_mixin.py scheduler modified 8.0
python/sglang/srt/observability/scheduler_metrics_mixin.py observability modified 7.0

关键符号

update_scheduler_stats report_prefill_stats report_decode_stats check_memory

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

评论区精华

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

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

风险与影响

风险较低:

  1. 核心变更集中在指标统计逻辑,不涉及核心推理路径,因此回归风险有限。
  2. 新增的round(..., 2)可能引入微小的精度差异,但PR body指出这是为了修复不一致性,因此是预期行为。
  3. 由于去除了重复代码,如果update_scheduler_stats方法存在逻辑错误,将同时影响prefill、decode和idle三个路径,但测试计划覆盖了这些路径。
  4. 文件python/sglang/srt/managers/scheduler_runtime_checker_mixin.py和python/sglang/srt/observability/scheduler_metrics_mixin.py都属于调度器模块,变更范围可控。

影响范围:

  1. 对用户:无直接影响,因为这是内部指标统计重构。
  2. 对系统:提升了代码可维护性,减少了重复逻辑,可能降低未来bug引入风险。
  3. 对团队:统一了指标赋值逻辑,便于后续开发和调试。影响程度:中等,因为涉及调度器核心统计逻辑,但属于重构而非功能变更。
核心统计逻辑变更 四舍五入一致性修复

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论