执行摘要
将 on_idle 方法从 Mixin 移至 Scheduler 主类
PR body 指出,迁移依据是 components/scheduler/index.md 中对该方法归属的显式人类决策,旨在将空闲管家编排逻辑归入 Scheduler 主类,保持职责清晰。
值得精读,作为理解调度器组件化重构路线的关键步骤。
无 review 讨论。
PR body 指出,迁移依据是 components/scheduler/index.md 中对该方法归属的显式人类决策,旨在将空闲管家编排逻辑归入 Scheduler 主类,保持职责清晰。
值得精读,作为理解调度器组件化重构路线的关键步骤。
无 review 讨论。
| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
python/sglang/srt/managers/scheduler.py |
调度器 | modified | 7.46 |
python/sglang/srt/managers/scheduler_runtime_checker_mixin.py |
调度器 | modified | 7.46 |
python/sglang/srt/managers/scheduler.py
core-logic
接收 on_idle 方法,将其置于 is_fully_idle 之前,保持空闲相关代码连续。
def on_idle(self):
"""Idle housekeeping orchestrator: guard, check, metrics, reset, sleep."""
if not self.is_fully_idle():
return
# 内存泄漏检查(hisparse 启用时跳过——host-backup 期间 pool 计数器
# 会有意偏差,详见 _get_swa_token_info clamp)。
if not self.enable_hisparse:
has_leak, messages = self._check_all_pools(self.get_pool_stats())
if has_leak:
self._report_leak("pool", "\n".join(messages))
self._check_req_pool()
# tree cache 健全性检查
self._check_tree_cache()
# 每 30 秒记录一次指标
self._maybe_log_idle_metrics()
# 发布 KV 事件
self._publish_kv_events()
# 重置 token 比率
self.new_token_ratio = self.init_new_token_ratio
# 重置设备计时窗口,避免空闲时间被计入
self.reset_device_timer_window()
# 若无新事件则休眠
self.maybe_sleep_on_idle()
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
由于是纯方法迁移且逻辑字节一致,回归风险极低。但需注意 on_idle 内部调用了 _maybe_log_idle_metrics 等仍在 Mixin 中的方法,在 Mixin 完全退役前需保持继承链。
影响范围仅限于调度器内部重构,外部用户无感知。后续组件化重构(pool-stats-observer、invariant-checker 等)的基础步骤。
当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论