o
    پiR                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ e eZededefdd	Zd
efddZededefddZdS )    N)contextmanager)Path)envs)
ServerArgsserver_argsgpu_idc                 c   s    | j  }d ur<tj r<|| }d| d| }t|d\}}t||d d V  W d    d S 1 s5w   Y  d S d V  d S )Nz--cpunodebind=z --membind=)numactl_args)
executable	debug_str)	numa_noder   SGLANG_NUMA_BIND_V2get_create_numactl_executable_mp_set_executable)r   r   
numa_nodesr   r   r	   r
    r   O/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/utils/numa_utils.pyconfigure_subprocess   s   "
r   r   c                 C   sj   t tj }d|  d| d}tdt  dtdd d}|	| |
d	 t|d
|fS )Nz#!/bin/sh
exec numactl  z "$@"z/tmp/sglang_temp_file__r   i z.shi  zscript=)osfsdecodemultiprocessingspawnget_executabler   timerandom	randrange
write_textchmodstr)r   old_executablescriptpathr   r   r   r      s   

r   r	   r
   c              
   c   s    t  }|dksJ d|tt j }t j|  td| d|  d| d z(d V  W tt j | ksFJ dt j t j| td|  d S tt j | ksjJ dt j t j| td|  w )	Nr   zstart_method=zmp.set_executable z -> z ()z'multiprocessing.spawn.get_executable()=zmp.set_executable revert to )	r   get_start_methodr   r   r   r   set_executableloggerinfo)r	   r
   start_methodr!   r   r   r   r   )   s$   r   )loggingr   r   r   r   
contextlibr   pathlibr   sglang.srt.environr   sglang.srt.server_argsr   	getLogger__name__r'   intr   r    r   r   r   r   r   r   <module>   s    
