From 07b4f262b7a7d486fe8e5f462a27c7a19ebfef89 Mon Sep 17 00:00:00 2001 From: fzyzcjy <5236035+fzyzcjy@users.noreply.github.com> Date: Tue, 19 May 2026 09:18:36 +0800 Subject: [PATCH] Set up the idle sleeper outside of the IPC channel initialization (#25713) --- python/sglang/srt/managers/scheduler.py | 26 ++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/python/sglang/srt/managers/scheduler.py b/python/sglang/srt/managers/scheduler.py index 72b574cfb..58670f279 100644 --- a/python/sglang/srt/managers/scheduler.py +++ b/python/sglang/srt/managers/scheduler.py @@ -384,6 +384,7 @@ class Scheduler( # Init inter-process communication self.init_ipc_channels(port_args) + self.init_idle_sleeper() self.mm_receiver = None self.disagg_prefill_bootstrap_queue = None @@ -726,7 +727,6 @@ class Scheduler( def init_ipc_channels(self, port_args: PortArgs): context = zmq.Context(2) - self.idle_sleeper = None self.send_metrics_from_scheduler = None if ( @@ -757,14 +757,6 @@ class Scheduler( self.send_to_tokenizer = SenderWrapper(send_to_tokenizer) self.send_to_detokenizer = SenderWrapper(send_to_detokenizer) - - if self.server_args.sleep_on_idle: - self.idle_sleeper = IdleSleeper( - [ - self.recv_from_tokenizer, - self.recv_from_rpc, - ] - ) else: self.recv_from_tokenizer = None self.recv_from_rpc = None @@ -779,6 +771,22 @@ class Scheduler( context, zmq.PUSH, port_args.metrics_ipc_name, False ) + def init_idle_sleeper(self) -> None: + if ( + self.ps.pp_rank == 0 + and self.ps.attn_tp_rank == 0 + and self.ps.attn_cp_rank == 0 + and self.server_args.sleep_on_idle + ): + self.idle_sleeper = IdleSleeper( + sockets=[ + self.recv_from_tokenizer, + self.recv_from_rpc, + ], + ) + else: + self.idle_sleeper = None + def init_tokenizer(self): server_args = self.server_args self.is_generation = self.model_config.is_generation