From 0eff0f74608fef93a19a7ab058f1cba5e94cab57 Mon Sep 17 00:00:00 2001 From: cctry Date: Fri, 4 Sep 2026 15:05:57 -0700 Subject: [PATCH] Add num_prealloc_ready_tokens to decode load snapshot (#38065) --- python/sglang/srt/managers/load_snapshot.py | 1 + .../srt/managers/scheduler_components/load_inquirer.py | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/python/sglang/srt/managers/load_snapshot.py b/python/sglang/srt/managers/load_snapshot.py index 26e306e4d..968f438f8 100644 --- a/python/sglang/srt/managers/load_snapshot.py +++ b/python/sglang/srt/managers/load_snapshot.py @@ -202,6 +202,7 @@ class LoadSnapshot(msgspec.Struct, omit_defaults=True): # num_total_tokens minus tokens still awaiting a KV transfer (equal to it # outside disaggregated decode). num_active_tokens: int = 0 + num_prealloc_ready_tokens: int = 0 max_total_num_tokens: int = 0 max_running_requests: int = 0 token_usage: float = 0.0 diff --git a/python/sglang/srt/managers/scheduler_components/load_inquirer.py b/python/sglang/srt/managers/scheduler_components/load_inquirer.py index e470a40ae..bb1f5d47a 100644 --- a/python/sglang/srt/managers/scheduler_components/load_inquirer.py +++ b/python/sglang/srt/managers/scheduler_components/load_inquirer.py @@ -173,6 +173,7 @@ class SchedulerLoadInquirer: prefill_bootstrap = prefill_inflight = 0 decode_prealloc = decode_transfer = decode_retracted = 0 decode_prealloc_ready = 0 + num_prealloc_ready_tokens = 0 if self.disaggregation_mode == DisaggregationMode.PREFILL: mode_str = "prefill" prefill_bootstrap = len(self.get_disagg_prefill_bootstrap_queue().queue) @@ -184,11 +185,13 @@ class SchedulerLoadInquirer: decode_retracted = len( self.get_disagg_decode_prealloc_queue().retracted_queue ) - decode_prealloc_ready = sum( - 1 + ready_reqs = [ + decode_req.req for decode_req in self.get_disagg_decode_prealloc_queue().queue if decode_req.waiting_for_input - ) + ] + decode_prealloc_ready = len(ready_reqs) + num_prealloc_ready_tokens = sum(req.seqlen for req in ready_reqs) disaggregation = DisaggregationMetrics( mode=mode_str, prefill_bootstrap_queue_reqs=prefill_bootstrap, @@ -220,6 +223,7 @@ class SchedulerLoadInquirer: num_used_tokens=num_used_tokens, num_total_tokens=num_total_tokens, num_active_tokens=num_active_tokens, + num_prealloc_ready_tokens=num_prealloc_ready_tokens, max_total_num_tokens=self.max_total_num_tokens, max_running_requests=self.max_running_requests, token_usage=round(kv_token_usage, 4),