HEX
Server: nginx/1.24.0
System: Linux prod-btpayments-io 6.14.0-1018-aws #18~24.04.1-Ubuntu SMP Mon Nov 24 19:46:27 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.3.19
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/iotop/__pycache__/data.cpython-312.pyc
�

w�&b&>���ddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z		e
e	d�s
ddlmZee	_ejjd�Z	ddlmZe�ZdZeres6ed	�ed
�esed�esed�ej.d
�ddlmZmZddlmZmZmZmZddl m!Z!m"Z"Gd�de#�Z$Gd�de$�Z%d
Z&d
Z'dZ(d
Z)dZ*Gd�de#�Z+d�Z,d�Z-d�Z.Gd�de$�Z/Gd�de$�Z0Gd �d!e$�Z1d"�Z2y#ee
f$re	je	_Y��wxYw#e$rdZY��wxYw)#�)�print_functionN�	monotonic)rz
/proc/self/io)�VmStatTFz<Could not run iotop as some of the requirements are not met:z- Linux >= 2.6.20 withz~  - I/O accounting support (CONFIG_TASKSTATS, CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING, kernel.task_delayacct sysctl)z0  - VM event counters (CONFIG_VM_EVENT_COUNTERS)�)�ioprio�vmstat)�
Connection�NETLINK_GENERIC�U32Attr�
NLM_F_REQUEST)�
Controller�GeNlMessagec��eZdZdZd�Zy)�DumpableObjectzBBase class for objects that allows easy introspection when printedc�v�tt|��dd�dtj|j��d�S)N���z: �>)�str�type�pprint�pformat�__dict__��selfs �,/usr/lib/python3/dist-packages/iotop/data.py�__repr__zDumpableObject.__repr__Ks.����T�
�O�C�R�0�"�N�N�4�=�=�9�;�	;�N)�__name__�
__module__�__qualname__�__doc__r�rrrrIs
��L�;rrc�B�eZdZgd�ZdZd�Zd	d�Zd�Zd�Ze	d��Z
y)
�Stats))�blkio_delay_total�()�swapin_delay_total�8)�
read_bytes�)�write_bytes�)�cancelled_write_bytesiFc���|j}tjD])\}}|||dz}tjd|�d||<�+tj
s|jdk7t_yy)N��Qr)rr$�members_offsets�struct�unpack�has_blkio_delay_totalr%)r�task_stats_buffer�sd�name�offset�datas      r�__init__zStats.__init___sp��
�]�]��!�1�1�	3�L�D�&�$�V�F�Q�J�7�D��}�}�S�$�/��2�B�t�H�	3��*�*�*.�*@�*@�A�*E�E�'�+rc��|j}|j}|j}tjD]\}}|||||zz||<�y)z3Update destination from operator(self, other_stats)N�rr$r1)	r�other_stats�destination�coeff�ddr6�od�memberr8s	         r�
accumulatezStats.accumulatejsU��
�
!�
!��
�]�]��
�
!�
!��#�3�3�	9�N�F�F��F��e�b��j�&8�8�B�v�J�	9rc�*�|j||d��S)z*Update destination with self - other_statsr)r?)rC)rr=r>s   r�deltazStats.deltars�����{�K�r��B�Brc�`�|j}tjD]\}}||dk7s�yy)NrFTr<)rr6r7r8s    r�is_all_zerozStats.is_all_zerovs7��
�]�]��!�1�1�	�L�D�&��$�x�1�}��	�rc��tjt�}|j}tjD]
\}}d||<�|S)Nr)r$�__new__rr1)�stats�stdr7r8s    r�build_all_zerozStats.build_all_zero}s@���
�
�e�$���n�n��!�1�1�	�L�D�&��C��I�	��rN)r)rrr r1r4r:rCrErG�staticmethodrLr"rrr$r$Ts;���O�"��	F�9�C�����rr$��c��eZdZd�Zd�Zd�Zy)�TaskStatsNetlinkc��||_tt�|_t	|j�}|jd�|_y)N�	TASKSTATS)�optionsr	r
�
connectionr
�
get_family_id�	family_id)rrT�
controllers   rr:zTaskStatsNetlink.__init__�s5�����$�_�5�������0�
�#�1�1�+�>��rc�b�t|jttt|�gt
��S)N)�cmd�attrs�flags)rrW�TASKSTATS_CMD_GETr�TASKSTATS_CMD_ATTR_PIDr)r�tids  r�
build_requestzTaskStatsNetlink.build_request�s)���4�>�>�/@�")�*@�#�"F�!G�!.�0�	0rc��|jj|j�	tj|j�}|jj�D] \}}|tk(s�|j�}ny|tj}t|�dkrytj d|dd�d}|dk\sJ�t#|�S#t
$r(}|jtjk(rYd}~y�d}~wwxYw)Ni�H�rrN)�task_stats_request�sendrUr�recv�OSError�errno�ESRCHr[�items�TASKSTATS_TYPE_AGGR_PID�nested�TASKSTATS_TYPE_STATSr9�lenr2r3r$)r�thread�reply�e�	attr_type�
attr_value�taskstats_data�taskstats_versions        r�get_single_task_statsz&TaskStatsNetlink.get_single_task_stats�s����!�!�&�&�t���7�	��$�$�T�_�_�5�E�&+�[�[�%6�%6�%8�	�!�I�z��3�3�"�)�)�+���	�

��3�4�9�9���~���$��"�M�M�#�~�b�q�/A�B�1�E�� �A�%�%�%��^�$�$��#�	��w�w�%�+�+�%����		�s�C�	D�D�?D�DN)rrr r:r`rvr"rrrQrQ�s��?�0�
%rrQc��g|_d}|jxsgD],}	t|�}|r�|jj��.|rtjd�yy#t$rS	t	j
|�}|j}n-#t$r!td|tj��d}YnwxYwY��wxYw)zDBuild options.uids from options.users by resolving usernames to UIDsFz
Unknown user:)�fileTrN)
�uids�users�int�
ValueError�pwd�getpwnam�pw_uid�KeyError�print�sys�stderr�append�exit)rT�error�u�uid�passwds     r�	find_uidsr��s����G�L��E�
�]�]�
 �b�%��		$��a�&�C���L�L����$�%�
������
���	$�
$����a���
�m�m���	�
��o�q�s�z�z�:���
��	$�s5�A"�"	B>�,B�
B>�'B8�5B>�7B8�8B>�=B>c���i}	td|zd��D]+}	|jdd�\}}|j�||<�-	|S#t$rY�<wxYw#t$rY|SwxYw)Nz/proc/%d/status�replace)�errors�:r)�open�splitr|�strip�IOError)�pid�result_dict�line�key�values     r�parse_proc_pid_statusr��s����K�
��*�S�0��C�	-�D�
�!�Z�Z��Q�/�
��U� %�{�{�}�K���	-�����
��	
���
����
�s3�A�A�A�	A�A�A�A�	A!� A!c�~�	|jd�S#t$r|jd�cYSt$r|cYSwxYw)Nzutf-8�
string_escape)�decode�UnicodeDecodeError�encode�AttributeError)�ss r�safe_utf8_decoder��sA����x�x�� � ���)��x�x��(�(������s��<�
<�<c�(�eZdZdZd�Zd�Zd�Zd�Zy)�
ThreadInfozStats for a single threadc��||_d|_d|_tj	t�|_|j
|�|_y�NT)r_�mark�stats_totalr$rI�stats_deltar`rd)rr_�taskstats_connections   rr:zThreadInfo.__init__�s<�������	���� �=�=��/���"6�"D�"D�S�"I��rc�@�tj|j�S�N)r�getr_rs r�
get_iopriozThreadInfo.get_ioprio�s���z�z�$�(�(�#�#rc�b�tjtj|j||�Sr�)r�
set_ioprio�IOPRIO_WHO_PROCESSr_)r�ioprio_class�ioprio_datas   rr�zThreadInfo.set_ioprio�s(��� � ��!:�!:�D�H�H�!-�{�<�	<rc��|js||_|j|j|j�||_yr�)r�rEr�)rrJs  r�update_statszThreadInfo.update_stats�s5�����$�D��
���D�$�$�d�&6�&6�7� ��rN)rrr r!r:r�r�r�r"rrr�r��s��#�J�$�<�!rr�c�R�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zy
)�ProcessInfoz�Stats for a single process (a single line in the output): if
    options.processes is set, it is a collection of threads, otherwise a single
    thread.c���||_d|_d|_i|_tj�|_tj�|_tj�|_
yr�)r�r��user�threadsr$rLr��stats_accum�timer�stats_accum_timestamp)rr�s  rr:zProcessInfo.__init__sO����������	���� �/�/�1��� �/�/�1���%)�^�^�%5��"rc��|jr%|js|j|jvry|jr|j	�|jvryy�NFT)�pids�	processesr�ry�get_uid)rrTs  r�is_monitoredzProcessInfo.is_monitored
sB���L�L��!2�!2��H�H�G�L�L�(���<�<�D�L�L�N�'�,�,�>��rc��|jr|jS	tjd|jz�tj}||jk7rd|_||_|S#t
$rd}Y�,wxYw)Nz/proc/%d)r��os�statr��ST_UIDrgr��rr�s  rr�zProcessInfo.get_uidsm���8�8��8�8�O�	��'�'�*�t�x�x�/�0����=�C��$�(�(�?��D�I��D�H��
���	��C�	�s�3A,�,A:�9A:c��|j�}|�:|js.	ttj|�j
�|_|jxsdS#ttf$rt|�|_Y�1wxYw)Nz{none})	r�r�r�r}�getpwuid�pw_namer�r�rr�s  r�get_userzProcessInfo.get_user*sj���l�l�n���?�4�9�9�
%�,�S�\�\�#�->�-F�-F�G��	��y�y�$�H�$���n�-�
%���H��	�
%�s�-A�A?�>A?c��	td|jz�}|jd�}t	|j�}|s|jdd�}|rd|z}|Sd}|Sd}t
|jd|j��}||jk7r:t	|�jdd�}|jdd�}||k7r|d	|zz
}|jd
�}	|	djd�r"|	djd�d
z}
|	d|
d|	d<dj|	�j�}t||z�S#t$rYywxYw)Nz/proc/%d/cmdlineiz{no such process}�Name�z[%s]z	{no name}�Tgidz [%s]�r�/r� )
r�r��readr�r�r�r{r��
startswith�rfind�joinr�r�)r�proc_cmdline�cmdline�proc_status�proc_status_name�suffix�tgid�	tgid_name�thread_name�parts�first_command_chars           r�get_cmdlinezProcessInfo.get_cmdline3sd��	'�� 2�T�X�X� =�>�L�"�'�'��-�G�,�D�H�H�5���*���v�r�:���#)�,<�#<� �$�#�$/� �#�#����;�?�?�6�4�8�8�4�5���4�8�8��-�d�3�7�7���C�I�%�/�/�&�"�5�K��i�'��'�K�/�/���
�
�d�#����8���s�#�!&�q�����!4�q�!8���Q�x� 2� 3�4�E�!�H��(�(�5�/�'�'�)����&� 0�1�1��1�	'�&�	'�s�)E�	E�Ec��|r|jj�S|jj�D]}|jj�r�yy)NTF)r�rGr��valuesr�)r�accumulated�ts   r�did_some_iozProcessInfo.did_some_ioRsQ����'�'�3�3�5�5�5����$�$�&�	�A��=�=�,�,�.��	�rc��td�|jj�D��}t|�dk(r|j	�Sy)Nc3�<K�|]}|j����y�wr�)r�)�.0r�s  r�	<genexpr>z)ProcessInfo.get_ioprio.<locals>.<genexpr>[s����G�A�����G�s�rz?dif)�setr�r�rn�pop)r�
prioritiess  rr�zProcessInfo.get_ioprioZs;���G����1D�1D�1F�G�G�
��z�?�a���>�>�#�#�rc�f�|jj�D]}|j||��yr�)r�r�r�)rr�r�ros    rr�zProcessInfo.set_ioprio`s.���l�l�)�)�+�	9�F����l�K�8�	9rc�H�tj|j��Sr�)r�sort_keyr�rs r�ioprio_sort_keyzProcessInfo.ioprio_sort_keyds�����t���0�1�1rc�x�|jj|d�}|st||�}||j|<|Sr�)r�r�r�)rr_r�ros    r�
get_threadzProcessInfo.get_threadgs;�����!�!�#�t�,�����%9�:�F� &�D�L�L����
rc�R�tj�}|jj�D].\}}|jr�|j|j|��0t|jj�D��cgc]\}}|js||f��c}}�|_t|j�}|sy|xj|zc_	|xj|zc_
||_|jj|j|j�ycc}}wr�)r$rLr�rjr�rCr��dictrnr%r'r�)rr�r_ro�
nr_threadss     rr�zProcessInfo.update_statsns����*�*�,���<�<�-�-�/�	H�K�C���;�;��&�&�v�'9�'9�;�G�	H��!�\�\�/�/�1�F�{�s�F�9?���"�6�]�F�G�������&�
����%�%��3�%��&�&�*�4�&�&������#�#�D�$4�$4�d�6F�6F�G���Fs�D#
N)rrr r!r:r�r�r�r�r�r�r�r�r�r�r"rrr�r�s>���6�
��"%�2�>��9�2��rr�c�6�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�ProcessListc��i|_||_||_tj�|_t
j�|_|j�yr�)	r�r�rTr�r�	timestamprr�update_process_counts)rr�rTs   rr:zProcessList.__init__�sA�����$8��!�������)����m�m�o���	
�"�"�$rc��|jj|d�}|st|�}||j|<|j|j�r|Sy)zyEither get the specified PID from self.processes or build a new
        ProcessInfo if we see this PID for the first timeN)r�r�r�r�rT)rr��processs   r�get_processzProcessList.get_process�sQ���.�.�$�$�S�$�/���!�#�&�G�")�D�N�N�3��������-��N�.rc
���|jjr|jjStjd�}|jjr+|D�cgc]}d|dcxkrdks�nnt|���!c}Sg}|D]M}d|dcxkrdks�n�	|j
tt
tjd|zdz����O|Scc}w#t$rY�bwxYw)Nz/proc�0r�9z/proc/z/task)	rTr�r��listdirr�r{�extend�maprg)r�tgidsr��tidss    r�
list_tgidszProcessList.list_tgids�s����<�<����<�<�$�$�$��
�
�7�#���<�<�!�!�*/�I�$�3�$�q�'�3H�S�3H�C��I�I�I����	�D��d�1�g�$��$���K�K��C�$&�J�J�x�$���/H�$I�!K�L�	����J������s�C�0C�8C�	C*�)C*c	�f�|jjs|gS	ttttjd|z���}|jjr@tt|jj�jt|���}|S#t$rgcYSwxYw)Nz
/proc/%d/task)rTr��listrr{r�rrgr�r��intersection)rr�rs   r�	list_tidszProcessList.list_tids�s����|�|�%�%��6�M�	���C����O�d�,B�!C�D�E�D��<�<�����D�L�L�-�-�.�;�;�C��I�F�G�D����
�	��I�	�s�/B"�"B0�/B0c��tj�}||jz
|_||_dx}}|j	�D]�}|j|�}|s�|j
|�D]~}|j||j�}|jj|�}|s�=|j|�|j}	||	jz
}||	jz
}d|_����||f|jj!�fS)NrF)r�rr��durationrr�r
r�r�rvr�r�r)r+r�rrE)
r�
new_timestamp�
total_read�total_writer�r�r_rorJrEs
          rr�z!ProcessList.update_process_counts�s�����(�
�%����6��
�&���#$�$�
�[��O�O�%�	(�D��&�&�t�,�G����~�~�d�+�
(�� �+�+�C��1J�1J�K���1�1�G�G��O����'�'��.�"�.�.�E��%�"2�"2�2�J��5�#4�#4�4�K�"'�F�K�
(�		(��K�(�$�+�+�*;�*;�*=�=�=rc�V�|jj�D](}|jj�D]	}d|_��*|j	�}t|jj
�D��cgc]\}}|j�r||f��c}}�|_|Scc}}wr�)r�r�r�r�r�r�rjr�)rr�ro�total_read_and_writer�s     r�refresh_processeszProcessList.refresh_processes�s����~�~�,�,�.�	#�G�!�/�/�0�0�2�
#��"���
#�	#� $�9�9�;���#�~�~�3�3�5�7�,�#�w�&�3�3�5�!$�W�~�7�8���$�#��	7s�8B%
c��i|_yr�)r�rs r�clearzProcessList.clear�s	����rN)
rrr r:r�rr
r�rrr"rrr�r��s%��	%�	��&�>�,$�rr�c���	td�5}tt|j�j	���cddd�S#1swYyxYw#t
$rYywxYw)Nz/proc/sys/kernel/task_delayacct)r��boolr{r�r��FileNotFoundError)�fs r�sysctl_task_delayacctr�sR���
�3�
4�	/����A�F�F�H�N�N�,�-�.�	/�	/�	/������s-�A�0A�	A�A�A�A�	A�A)3�
__future__rrhr�rr}r�r2r�r��hasattrr�ImportError�RuntimeError�path�exists�ioaccounting�iotop.vmstatr�vmstat_f�vm_event_countersr�r�r��iotoprr�
iotop.netlinkr	r
rr�iotop.genetlinkr
r�objectrr$r]r^rk�TASKSTATS_TYPE_PIDrmrQr�r�r�r�r�r�rr"rr�<module>r)ss��(&��	�
�
��
�
����4��%�'�"����w�w�~�~�o�.���#��x�H����,�	�
H�I�	�
"�#��
�E�	F��
�@�A��C�H�H�Q�K� �M�M�3�;�V�;�/�N�/�j����������#%�v�#%�T�*�"�!��!�.@�.�@�F\�.�\�~��w
	�\�"���Y�Y�D�N��������s#�D�
D6�D3�2D3�6E�?E