diff --git a/python/sglang/srt/managers/scheduler.py b/python/sglang/srt/managers/scheduler.py index cfcae1af6..060fdbe4b 100644 --- a/python/sglang/srt/managers/scheduler.py +++ b/python/sglang/srt/managers/scheduler.py @@ -3578,9 +3578,10 @@ def run_scheduler_process( set_gpu_proc_affinity( server_args.pp_size, server_args.tp_size, server_args.nnodes, gpu_id ) - numa_node = get_numa_node_if_available(server_args, gpu_id) - if numa_node is not None and not envs.SGLANG_NUMA_BIND_V2.get(): - numa_bind_to_node(numa_node) + if not envs.SGLANG_NUMA_BIND_V2.get(): + numa_node = get_numa_node_if_available(server_args, gpu_id) + if numa_node is not None: + numa_bind_to_node(numa_node) # Set up tracing if server_args.enable_trace: diff --git a/python/sglang/srt/utils/numa_utils.py b/python/sglang/srt/utils/numa_utils.py index cabba3bc4..40e69aa9f 100644 --- a/python/sglang/srt/utils/numa_utils.py +++ b/python/sglang/srt/utils/numa_utils.py @@ -24,14 +24,17 @@ logger = logging.getLogger(__name__) @contextmanager def configure_subprocess(server_args: ServerArgs, gpu_id: int): - numa_node = get_numa_node_if_available(server_args, gpu_id) - if numa_node is not None and envs.SGLANG_NUMA_BIND_V2.get(): - numactl_args = f"--cpunodebind={numa_node} --membind={numa_node}" - executable, debug_str = _create_numactl_executable(numactl_args=numactl_args) - with _mp_set_executable(executable=executable, debug_str=debug_str): - yield - else: - yield + if envs.SGLANG_NUMA_BIND_V2.get(): + numa_node = get_numa_node_if_available(server_args, gpu_id) + if numa_node is not None: + numactl_args = f"--cpunodebind={numa_node} --membind={numa_node}" + executable, debug_str = _create_numactl_executable( + numactl_args=numactl_args + ) + with _mp_set_executable(executable=executable, debug_str=debug_str): + yield + return + yield def _create_numactl_executable(numactl_args: str):