BYPASS SHELL BY ./RAZORGANZ
Server: nginx/1.20.1
System: Linux iZdzfnv9mwfppeZ 5.10.134-19.2.al8.x86_64 #1 SMP Wed Oct 29 22:47:09 CST 2025 x86_64
User: apache (48)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/agent/common/__pycache__/netinfo.cpython-36.pyc
3

�*�gZ�@sFddlZddlZddlZddlmZmZejd�ZGdd�de�Z	dS)�N)�
shell_command�sys_commandZkeentunec@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�NetInfocCs�|j�xV|jD]L\}}y$|j|�|j|�|j||�Wntk
rRwYqX||_PqW|jsjt�tt	ddd��|_
tt	ddd��|_|j�|j|j
d|j
ddkr�tjd|j�d|j
d|j
dd�d	��dS)
Nz8cat /proc/cpuinfo| grep 'physical id'| sort| uniq| wc -lF)�logz*cat /proc/cpuinfo| grep 'processor'| wc -l�rzcpu number(z ) unmatch with numa node number(z)!)�
_load_pci_dev�pci_dev_list�_load_pci_id�_load_queue_list�_load_interrupts�	Exception�dev_name�AssertionError�intrZcpu_num�	processor�_load_numa_node_core_range�numa_node_core_range�loggerZwarning)�self�
virtio_devr
�r�/usr/lib/python3.6/netinfo.py�__init__s"


zNetInfo.__init__cCs�g|_x�tddd�jd�D]�}tjjd|�}tjj|�s:qyVtj|�}tj	d|�r�tj	d|�r~|jj
tj	d|�jd�|f�n|jj
||f�Wqtk
r�wYqXqWdS)	Nzls /sys/class/netF)r�
z/sys/class/netzpci\d+zvirtio\dr)
rr�split�os�path�join�isdir�readlink�re�search�append�group�OSError)rZdev�_pathZ
_link_pathrrrr)s
 zNetInfo._load_pci_devcCs8tdd|gdd�}tjd|�jd�|_|jdks4t�dS)NZethtoolz-iF)rzbus-info: (.*)\nr�)rr r!r#�pci_idr)rr
Zpci_inforrrr	;szNetInfo._load_pci_idcCs�tdd|�d�gdd�}tjd�tjd�}}tj||�sJtj||�rXtdj|���ttj||�d	d
�d�|_ttj||�dd
�d�|_	dS)
NZlsz/sys/class/net/z/queues/F)rztx-\d+zrx-\d+z5can not find tx/rx queue in /sys/class/net/{}/queues/cSsttjd|�jd��S)Nz(\d+)r)rr r!r#)�xrrr�<lambda>Fsz*NetInfo._load_queue_list.<locals>.<lambda>)�keycSsttjd|�jd��S)Nz(\d+)r)rr r!r#)r(rrrr)Gs)
rr �compiler!r�format�sorted�findallZtx_queueZrx_queue)rr
Z
queue_infoZ
tx_patternZ
rx_patternrrrr
@szNetInfo._load_queue_listcCs2g}x(|D] }tjd|�jd�}|j|�q
W|S)Nz^(\d+):r)r r!r#r")r�
interrupts�result�iZ
interrupts_idrrrZ__parse_interrupts_codeIs

zNetInfo.__parse_interrupts_codecs�dd�tddd�jd�D�}�fdd�|D�}|j�dkrL�fd	d�|D�}|j�dkrj�fd
d�|D�}|j�dkszt�|j|�|_|jj�dks�t�|jddd�|_|jddd�|_dS)
NcSsg|]}|j��qSr)�strip)�.0r1rrr�
<listcomp>Qsz,NetInfo._load_interrupts.<locals>.<listcomp>zcat /proc/interruptsF)rrcs(g|] }tj��d��d�|�r|�qS)z-input|z-output)r r!)r3r1)r
rrr4Ssrcs(g|] }tj��d��d�|�r|�qS)z-input|z-output)r r!)r3r1)rrrr4Vscsg|]}tj�|�r|�qSr)r r!)r3r1)r
rrr4Ys�r)rr�__len__r�_NetInfo__parse_interrupts_coder/Zinput_interrupts_listZoutput_interrupts_list)rrr
ZcontentZinterrupts_listr)r
rrrPszNetInfo._load_interruptscCstdd|jgdd�}tjd|�r4tjd|�jd�}nd}tddd�}|jdkr�tjd	j|��}tjd
j|��}tj||�r�tj||�jd�gd}n8tj||�r�tj||�jd�gd}nt	j
d�td���n"|jdk�r`tjd
j|��}tjdj|��}tj||��r$tj||�jd�jd�}n:tj||��rLtj||�jd�jd�}nt	j
d�td��n�tjdj|��}tjdj|��}tj||��r�tj||�jd�jd�}nJtj||��r�tj||�jd�jd�}n"t	j
d|j���tdj|j���dd�|D�|_
dS)NZlspciz-vvvsF)rzNUMA node: (\d)\nrrZlscpuuNUMA 节点{} CPU:\s*(\d+)zNUMA node{} CPU\(s\):\s*(\d+)r5z0can not find numa_node_core_range in process = 1u NUMA 节点{} CPU:\s*(\d+,\d+)z!NUMA node{} CPU\(s\):\s*(\d+,\d+)�,z0can not find numa_node_core_range in process = 2u NUMA 节点{} CPU:\s*(\d+-\d+)z!NUMA node{} CPU\(s\):\s*(\d+-\d+)�-z/can not find numa_node_core_range in process = z1can not find numa_node_core_range in process = {}cSsg|]}t|��qSr)r)r3r1rrrr4�sz6NetInfo._load_numa_node_core_range.<locals>.<listcomp>)rr'r r!r#rrr+r,r�errorrrr)rZnuma_messageZ
numa_node_numZcpu_messageZ
pattern_en�patternrrrrrcsD



z"NetInfo._load_numa_node_core_rangeN)
�__name__�
__module__�__qualname__rrr	r
r7rrrrrrr
s	r)
Zloggingrr Zagent.common.systemrrZ	getLoggerr�objectrrrrr�<module>s