HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/iotop/__pycache__/data.cpython-311.pyc
�

w�&b&>����ddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z		e
e	d��s
ddlmZee	_n#ee
f$re	j	e	_YnwxYwej�d��Z	ddlmZe��ZdZn
#e$rdZYnwxYweres@ed	��ed
��esed��esed��ejd
��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"�Z2dS)#�)�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�ZdS)�DumpableObjectzBBase class for objects that allows easy introspection when printedc��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�O�C�R�C�0�0�0�"�N�4�=�9�9�9�9�;�	;�N)�__name__�
__module__�__qualname__�__doc__r�rrrrIs)������L�L�;�;�;�;�;rrc�J�eZdZgd�ZdZd�Zd
d�Zd�Zd�Ze	d���Z
d	S)�Stats))�blkio_delay_total�()�swapin_delay_total�8)�
read_bytes�)�write_bytes�)�cancelled_write_bytesiFc���|j}tjD]0\}}|||dz�}tjd|��d||<�1tjs|jdkt_dSdS)N��Qr)rr$�members_offsets�struct�unpack�has_blkio_delay_totalr%)r�task_stats_buffer�sd�name�offset�datas      r�__init__zStats.__init___s~��
�]��!�1�	3�	3�L�D�&�$�V�F�Q�J�%6�7�D��}�S�$�/�/��2�B�t�H�H��*�	F�*.�*@�A�*E�E�'�'�'�	F�	Frrc��|j}|j}|j}tjD]\}}|||||zz||<�dS)z3Update destination from operator(self, other_stats)N�rr$r1)	r�other_stats�destination�coeff�ddr6�od�memberr8s	         r�
accumulatezStats.accumulatejsV��
�
!��
�]��
�
!��#�3�	9�	9�N�F�F��F��e�b��j�&8�8�B�v�J�J�	9�	9rc�2�|�||d���S)z*Update destination with self - other_statsr)r?)rC)rr=r>s   r�deltazStats.deltars�����{�K�r��B�B�Brc�V�|j}tjD]\}}||dkrdS�dS)NrFTr<)rr6r7r8s    r�is_all_zerozStats.is_all_zerovs=��
�]��!�1�	�	�L�D�&��$�x�1�}�}��u�u���trc��t�t��}|j}tjD]
\}}d||<�|S)Nr)r$�__new__rr1)�stats�stdr7r8s    r�build_all_zerozStats.build_all_zero}s@���
�
�e�$�$���n��!�1�	�	�L�D�&��C��I�I��rN)r)rrr r1r4r:rCrErG�staticmethodrLr"rrr$r$Ts����������O�"��	F�	F�	F�9�9�9�9�C�C�C��������\���rr$��c� �eZdZd�Zd�Zd�ZdS)�TaskStatsNetlinkc��||_tt��|_t	|j��}|�d��|_dS)N�	TASKSTATS)�optionsr	r
�
connectionr
�
get_family_id�	family_id)rrT�
controllers   rr:zTaskStatsNetlink.__init__�s@�����$�_�5�5������0�0�
�#�1�1�+�>�>����rc�n�t|jttt|��gt
���S)N)�cmd�attrs�flags)rrW�TASKSTATS_CMD_GETr�TASKSTATS_CMD_ATTR_PIDr)r�tids  r�
build_requestzTaskStatsNetlink.build_request�s4���4�>�/@�")�*@�#�"F�"F�!G�!.�0�0�0�	0rc��|j�|j��	tj|j��}n.#t
$r!}|jtjkrYd}~dS�d}~wwxYw|j�	��D]&\}}|tkr|���}n�'dS|tj
}t|��dkrdStjd|dd���d}|dksJ�t#|��S)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�7�7�	��$�T�_�5�5�E�E���	�	�	��w�%�+�%�%������������		����
&+�[�%6�%6�%8�%8�	�	�!�I�z��3�3�3�"�)�)�+�+����4�
�F��3�4�9���~����$�$��F�"�M�#�~�b�q�b�/A�B�B�1�E�� �A�%�%�%�%��^�$�$�$s�;�
A&�A!� A!�!A&N)rrr r:r`rvr"rrrQrQ�sA������?�?�?�0�0�0�
%�%�%�%�%rrQc�p�g|_d}|jpgD]�}	t|��}n[#t$rN	t	j|��}|j}n.#t$r!td|tj
���d}YnwxYwYnwxYw|s|j�|����|rtjd��dSdS)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�C���	$�	$�	$�
$���a����
�m����	�
�
�
��o�q�s�z�:�:�:�:�����
������	$�����	%��L����$�$�$�������������s2�&�
A>�A
�A>�
(A8�5A>�7A8�8A>�=A>c���i}	td|zd���D]D}	|�dd��\}}n#t$rY�)wxYw|���||<�En#t$rYnwxYw|S)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�C�C�	-�	-�D�
�!�Z�Z��Q�/�/�
��U�U���
�
�
���	
����
 %�{�{�}�}�K����	-���
�
�
���
�����s0�A�5�A�
A�A�A�A�
A+�*A+c��	|�d��S#t$r|�d��cYSt$r|cYSwxYw)Nzutf-8�
string_escape)�decode�UnicodeDecodeError�encode�AttributeError)�ss r�safe_utf8_decoder��sg����x�x�� � � ���)�)�)��x�x��(�(�(�(�(������������s��A�A�Ac�*�eZdZdZd�Zd�Zd�Zd�ZdS)�
ThreadInfozStats for a single threadc��||_d|_d|_t�t��|_|�|��|_dS)NT)r_�mark�stats_totalr$rI�stats_deltar`rd)rr_�taskstats_connections   rr:zThreadInfo.__init__�sH�������	���� �=�=��/�/���"6�"D�"D�S�"I�"I����rc�4�tj|j��S�N)r�getr_rs r�
get_iopriozThreadInfo.get_ioprio�s���z�$�(�#�#�#rc�N�tjtj|j||��Sr�)r�
set_ioprio�IOPRIO_WHO_PROCESSr_)r�ioprio_class�ioprio_datas   rr�zThreadInfo.set_ioprio�s%��� ��!:�D�H�!-�{�<�<�	<rc�p�|js||_|�|j|j��||_dSr�)r�rEr�)rrJs  r�update_statszThreadInfo.update_stats�s=����	%�$�D��
���D�$�d�&6�7�7�7� ����rN)rrr r!r:r�r�r�r"rrr�r��sY������#�#�J�J�J�$�$�$�<�<�<�!�!�!�!�!rr�c�T�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
S)�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|_t���|_t���|_tj	��|_
dSr�)r�r��user�threadsr$rLr��stats_accum�timer�stats_accum_timestamp)rr�s  rr:zProcessInfo.__init__s\����������	���� �/�/�1�1��� �/�/�1�1���%)�^�%5�%5��"�"�"rc��|jr|js|j|jvrdS|jr|���|jvrdSdS)NFT)�pids�	processesr�ry�get_uid)rrTs  r�is_monitoredzProcessInfo.is_monitored
sR���L�	��!2�	��H�G�L�(�(��5��<�	�D�L�L�N�N�'�,�>�>��5��trc���|jr|jS	tjd|jz��tj}n#t
$rd}YnwxYw||jkrd|_||_|S)Nz/proc/%d)r��os�statr��ST_UIDrgr��rr�s  rr�zProcessInfo.get_uids{���8�	��8�O�	��'�*�t�x�/�0�0���=�C�C���	�	�	��C�C�C�	�����$�(�?�?��D�I��D�H��
s�,=�A�Ac��|���}|�_|jsX	ttj|��j��|_n+#ttf$rt|��|_YnwxYw|jpdS)Nz{none})	r�r�r�r}�getpwuid�pw_namer�r�rr�s  r�get_userzProcessInfo.get_user*s{���l�l�n�n���?�4�9�?�
%�,�S�\�#�->�->�-F�G�G��	�	���n�-�
%�
%�
%���H�H��	�	�	�
%�����y�$�H�$s�+A�%A3�2A3c��	td|jz��}|�d��}n#t$rYdSwxYwt	|j��}|s"|�dd��}|rd|z}nd}|Sd}t
|�d|j����}||jkrGt	|���dd��}|�dd��}||kr|d	|zz
}|�d
��}	|	d�d��r1|	d�	d��d
z}
|	d|
d�|	d<d�
|	�����}t||z��S)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_cmdline3s���	'�� 2�T�X� =�>�>�L�"�'�'��-�-�G�G���	'�	'�	'�&�&�&�	'����+�D�H�5�5���	$�*���v�r�:�:���
/�#)�,<�#<� � �#.� �#�#����;�?�?�6�4�8�4�4�5�5���4�8���-�d�3�3�7�7���C�C�I�%�/�/�&�"�5�5�K��i�'�'��'�K�/�/���
�
�d�#�#����8���s�#�#�	5�!&�q�����!4�!4�q�!8���Q�x� 2� 3� 3�4�E�!�H��(�(�5�/�/�'�'�)�)����&� 0�1�1�1s�,/�
=�=c��|r|j���S|j���D]}|j���sdS�dS)NTF)r�rGr��valuesr�)r�accumulated�ts   r�did_some_iozProcessInfo.did_some_ioRsf���	6��'�3�3�5�5�5�5���$�$�&�&�	�	�A��=�,�,�.�.�
��t�t�
��urc��td�|j���D����}t|��dkr|���SdS)Nc3�>K�|]}|���V��dSr�)r�)�.0r�s  r�	<genexpr>z)ProcessInfo.get_ioprio.<locals>.<genexpr>[s*����G�G�A������G�G�G�G�G�Grrz?dif)�setr�r�rn�pop)r�
prioritiess  rr�zProcessInfo.get_ioprioZsR���G�G���1D�1D�1F�1F�G�G�G�G�G�
��z�?�?�a����>�>�#�#�#��vrc�j�|j���D]}|�||���dSr�)r�r�r�)rr�r�ros    rr�zProcessInfo.set_ioprio`sB���l�)�)�+�+�	9�	9�F����l�K�8�8�8�8�	9�	9rc�N�tj|�����Sr�)r�sort_keyr�rs r�ioprio_sort_keyzProcessInfo.ioprio_sort_keyds����t���0�0�1�1�1rc�t�|j�|d��}|st||��}||j|<|Sr�)r�r�r�)rr_r�ros    r�
get_threadzProcessInfo.get_threadgsB����!�!�#�t�,�,���	'���%9�:�:�F� &�D�L����
rc���t���}|j���D]'\}}|js|�|j|���(td�|j���D����|_t|j��}|sdS|xj	|zc_	|xj
|zc_
||_|j�|j|j��dS)Nc�*�g|]\}}|j�||f��Sr")r�)r�r_ros   r�
<listcomp>z,ProcessInfo.update_stats.<locals>.<listcomp>ss=��F�F�F�{�s�F�9?��F�c�6�]�F�F�FrFT)r$rLr�rjr�rCr��dictrnr%r'r�)rr�r_ro�
nr_threadss     rr�zProcessInfo.update_statsns���*�*�,�,���<�-�-�/�/�	H�	H�K�C���;�
H��&�&�v�'9�;�G�G�G���F�F�!�\�/�/�1�1�F�F�F�G�G������&�&�
��	��5��%�%��3�%�%��&�&�*�4�&�&�&�����#�#�D�$4�d�6F�G�G�G��trN)rrr r!r:r�r�r�r�r�r�r�r�r�r�r"rrr�r�s���������6�6�6�
�
�
����"%�%�%�2�2�2�>������9�9�9�2�2�2��������rr�c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�ProcessListc��i|_||_||_tj��|_t
j��|_|���dSr�)	r�r�rTr�r�	timestamprr�update_process_counts)rr�rTs   rr:zProcessList.__init__�sN�����$8��!������)�)����m�o�o���	
�"�"�$�$�$�$�$rc��|j�|d��}|st|��}||j|<|�|j��r|SdS)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�sc���.�$�$�S�$�/�/���	*�!�#�&�&�G�")�D�N�3�������-�-�	��N�	�	rc
�l�|jjr|jjStjd��}|jjrd�|D��Sg}|D]j}d|dcxkrdkrUn�	|�t
ttjd|zdz�������Z#t$rY�fwxYw�k|S)Nz/procc�X�g|]'}d|dcxkrdk�nnt|����(S)�0r�9)r{)r�r�s  rr�z*ProcessList.list_tgids.<locals>.<listcomp>�sC��I�I�I�$�3�$�q�'�3H�3H�3H�3H�S�3H�3H�3H�3H�3H�C��I�I�3H�3H�3Hrrrrz/proc/z/task)	rTr�r��listdirr��extend�mapr{rg)r�tgids�tidsr�s    r�
list_tgidszProcessList.list_tgids�s����<��	%��<�$�$��
�7�#�#���<�!�	J�I�I�%�I�I�I�I����	�	�D��d�1�g�$�$�$�$��$�$�$�$�$���K�K��C�$&�J�x�$���/H�$I�$I�!K�!K�L�L�L�L�������D�����	%��s�"AB#�#
B0�/B0c	�^�|jjs|gS	ttttjd|z������}n#t$rgcYSwxYw|jjrFtt|jj���
t|������}|S)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�!C�D�D�E�E�D�D���	�	�	��I�I�I�	�����<��	H���D�L�-�.�.�;�;�C��I�I�F�F�G�G�D��s�7A	�	A�Ac��tj��}||jz
|_||_dx}}|���D]�}|�|��}|s�|�|��D]p}|�||j��}|j�	|��}|r7|�
|��|j}	||	jz
}||	j
z
}d|_�q��||f|j���fS)NrF)r�rr��durationrr�rr�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�K�K���1�G�G��O�O���(��'�'��.�.�.�"�.�E��%�"2�2�J��5�#4�4�K�"'�F�K��
(��K�(�$�+�*;�*;�*=�*=�=�=rc��|j���D]%}|j���D]	}d|_�
�&|���}td�|j���D����|_|S)NTc�D�g|]\}}|����||f��Sr")r�)r�r�r�s   rr�z1ProcessList.refresh_processes.<locals>.<listcomp>�s@��7�7�7�,�#�w�&�3�3�5�5�7��W�~�7�7�7r)r�r�r�r�r�r�rj)rr�ro�total_read_and_writes    r�refresh_processeszProcessList.refresh_processes�s����~�,�,�.�.�	#�	#�G�!�/�0�0�2�2�
#�
#��"����
#� $�9�9�;�;���7�7�#�~�3�3�5�5�7�7�7�8�8���$�#rc��i|_dSr�)r�rs r�clearzProcessList.clear�s
������rN)
rrr r:r�rrr�rrr"rrr�r��s}������	%�	%�	%�	�	�	����&���>�>�>�,$�$�$�����rr�c��	td��5}tt|����������cddd��S#1swxYwYdS#t
$rYdSwxYw)Nz/proc/sys/kernel/task_delayacct)r��boolr{r�r��FileNotFoundError)�fs r�sysctl_task_delayacctr�s����
�3�
4�
4�	/����A�F�F�H�H�N�N�,�,�-�-�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/�������t�t����s5�A+�AA�A+�A"�"A+�%A"�&A+�+
A9�8A9)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+s{��(&�%�%�%�%�%�����	�	�	�	�
�
�
�
�
�
�
�
�����
�
�
�
�
�
�
�
�������7�4��%�%�#�'�'�'�'�'�'�"������\�"�����Y�D�N�N�N������w�~�~�o�.�.���#�#�#�#�#�#��v�x�x�H�����������������
�	�,�	�	�E�
H�I�I�I�	�E�
"�#�#�#��F�
��E�	F�	F�	F��B�
��@�A�A�A��C�H�Q�K�K�K� � � � � � � � �M�M�M�M�M�M�M�M�M�M�M�M�3�3�3�3�3�3�3�3�;�;�;�;�;�V�;�;�;�/�/�/�/�/�N�/�/�/�j����������#%�#%�#%�#%�#%�v�#%�#%�#%�T���*���"���!�!�!�!�!��!�!�!�.@�@�@�@�@�.�@�@�@�F\�\�\�\�\�.�\�\�\�~����s#�A�A�A�6B	�	B�B