????

Your IP : 3.19.208.67


Current Path : /proc/self/root/lib/python3.6/site-packages/glances/plugins/__pycache__/
Upload File :
Current File : //proc/self/root/lib/python3.6/site-packages/glances/plugins/__pycache__/glances_gpu.cpython-36.pyc

3

Eo�c[,�@s�dZddlmZmZddlmZddlmZyddlj	Z
Wn6ek
rpZzdZ
ejdje��WYddZ[XnXdZ
d	d
dd�d
ddd�gZGdd�de�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)z(GPU plugin (limited to NVIDIA chipsets).�)�	nativestr�
to_fahrenheit)�logger)�
GlancesPluginNTz6Missing Python Lib ({}), Nvidia GPU plugin is disabledF�procz
GPU processor�%)�name�descriptionZy_unit�memzMemory consumptioncspeZdZdZd�fdd�	Zdd�Zdd�Zejej	d	d
���Z
�fdd�Zdd
d�Zdd�Z
�fdd�Z�ZS)�PluginzqGlances GPU plugin (limited to NVIDIA chipsets).

    stats is a list of dictionaries with one entry per GPU
    Ncs(tt|�j||gd�|j�d|_dS)zInit the plugin.)�args�configZstats_init_valueTN)�superr�__init__�init_nvidiaZ
display_curse)�selfrr
)�	__class__��!/usr/lib/python3.6/glances_gpu.pyr(szPlugin.__init__cCsPtr
d|_ytj�t�|_d|_Wn$tk
rHtjd�d|_YnX|jS)zInit the NVIDIA API.FTz pynvml could not be initialized.)	�import_error_tag�
nvml_ready�pynvmlZnvmlInit�get_device_handles�device_handles�	Exceptionr�debug)rrrrr2s

zPlugin.init_nvidiacCsdS)zReturn the key of the list.�gpu_idr)rrrr�get_keyAszPlugin.get_keycCs>|j�}|js|jS|jdkr(|j�}n
|jdkr2||_|jS)zUpdate the GPU stats.ZlocalZsnmp)Zget_init_valuer�statsZinput_method�get_device_stats)rrrrr�updateEs!


z
Plugin.updatecs�tt|�j�x�|jD]�}iiid�|j||j�<d|krh|j|ddd�}||j||j�dd<d|kr�|j|ddd�}||j||j�dd<d|kr|j|ddd�}||j||j�dd<qWdS)zUpdate stats views.)rr
�temperaturer)�header�
decorationr
r!T)rr�update_viewsrZviewsrZ	get_alert)r�iZalert)rrrr$zszPlugin.update_viewsc s�g}�js�jgks�j�r"|St�fdd��jD��}�jd}d}t�j�dkrj|djt�j��7}|r�|djd|d	�7}n|d
jd�7}|dd�}|j�j|d
��t�j�dks�|j�r
|j�j��y"t	dd��jD��t�j�}Wn t
k
�rdjd�}	YnXdj|�}	t�j�dk�r>djd�}n
djd�}|j�j|��|j�j|	�j|�j�ddd���|j�j��y"t	dd��jD��t�j�}
Wn t
k
�r�djd�}YnXdj|
�}t�j�dk�r�djd�}n
djd�}|j�j|��|j�j|�j|�j�ddd���|j�j��y"t	dd��jD��t�j�}Wn t
k
�r�djd�}
Yn&Xd}|j
�r�t|�}d}dj||�}
t�j�dk�r�djd �}n
djd!�}|j�j|��|j�j|
�j|�j�d"dd���n�x��jD]�}|j�j��d
j|d#�}ydj|d�}Wn$tt
fk
�rhdjd�}YnXydj|d�}Wn$tt
fk
�r�djd�}YnXd$j|||�}|j�j|���qW|S)%z2Return the dict to display in the curse interface.c3s$|]}|d�jddkVqdS)rrN)r)�.0�s)rrr�	<genexpr>�sz#Plugin.msg_curse.<locals>.<genexpr>r��z{} z{} {}ZGPUrz{}N�ZTITLEcss|]}|dk	r|dVqdS)Nrr)r&r'rrrr(�sz{:>4}zN/Az	{:>3.0f}%z{:13}z
proc mean:zproc:rr#)�item�keyZoptioncss|]}|dk	r|dVqdS)Nr
r)r&r'rrrr(�sz	mem mean:zmem:r
css|]}|dk	r|dVqdS)Nr!r)r&r'rrrr(�s�C�Fz
{:>3.0f}{}z
temp mean:ztemperature:r!rz{}: {} mem: {})rZis_disabled�all�len�format�appendZcurse_add_lineZmeangpuZcurse_new_line�sum�	TypeErrorZ	get_viewsrZ
fahrenheitr�
ValueError)rrZ	max_width�retZ	same_nameZ	gpu_statsr"�msgZ	mean_procZ
mean_proc_msgZmean_memZmean_mem_msgZmean_temperatureZmean_temperature_msgZunitZid_msgZproc_msgZmem_msgr)rr�	msg_curse�s�
"

"

"
zPlugin.msg_cursecCstg}xjt|j�D]\\}}t�}|j�|d<||d<t|�|d<t|�|d<t|�|d<t|�|d<|j|�qW|S)zGet GPU stats.r-rrr
rr!)	�	enumerater�dictr�get_device_name�get_mem�get_proc�get_temperaturer3)rr�index�
device_handleZdevice_statsrrrrszPlugin.get_device_statscsX|jrFytj�Wn2tk
rD}ztjdj|��WYdd}~XnXtt|�j	�dS)z/Overwrite the exit method to close the GPU API.z(pynvml failed to shutdown correctly ({})N)
rrZnvmlShutdownrrrr2rr�exit)r�e)rrrrBs"zPlugin.exit)NN)NN)�__name__�
__module__�__qualname__�__doc__rrrrZ_check_decoratorZ_log_result_decoratorr r$r9rrB�
__classcell__rr)rrr"s
4
prcCsdd�ttj��D�S)zQGet a list of NVML device handles, one per device.

    Can throw NVMLError.
    cSsg|]}tj|��qSr)rZnvmlDeviceGetHandleByIndex)r&r%rrr�
<listcomp>*sz&get_device_handles.<locals>.<listcomp>)�rangerZnvmlDeviceGetCountrrrrr%srcCs*yttj|��Stjk
r$dSXdS)zGet GPU device name.ZNVIDIAN)rrZnvmlDeviceGetNameZ	NVMlError)rArrrr<-sr<cCs6ytj|�}|jd|jStjk
r0dSXdS)z-Get GPU device memory consumption in percent.gY@N)rZnvmlDeviceGetMemoryInfoZusedZtotal�	NVMLError)rAZmemory_inforrrr=5s

r=cCs(ytj|�jStjk
r"dSXdS)z*Get GPU device CPU consumption in percent.N)rZnvmlDeviceGetUtilizationRatesZgpurK)rArrrr>>sr>cCs*ytj|tj�Stjk
r$dSXdS)z*Get GPU device CPU consumption in percent.N)rZnvmlDeviceGetTemperatureZNVML_TEMPERATURE_GPUrK)rArrrr?Fsr?)rGZglances.compatrrZglances.loggerrZglances.plugins.glances_pluginrZpy3nvml.py3nvmlZpy3nvmlrrrCrZwarningr2Zitems_history_listrrr<r=r>r?rrrr�<module>
s&"