JezK
Edit File: resource_limits.cpython-311.opt-1.pyc
� 1������ � � d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm Z d dl mZmZm Z d dlmZ ej e� � ZdZ e d � � Z e d � � Z e d� � Z e d� � Zd Z G d� de� � Zdefd�Zdee dededede j j f d�Zdededee fd�Z dedee fd�Z!dedee fd�Z"dedee fd�Z#de dee fd�Z$dedee eef fd�Z%de&fd �Z'de&fd!�Z(dS )"� N)�suppress)�Enum)�fsdecode)�Path)�List�Optional�Tuple)� OsReleaseInfoz/usr/libexec/run-with-intensityz/usr/sbin/lvectlz/proc/lve/listz/procz/sys/fs/cgroupl c � � e Zd ZdZdZdZdS )�LimitsMethod�nice�lve�cgroupsN)�__name__� __module__�__qualname__�NICE�LVE�CGROUPS� � �Z/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/utils/resource_limits.pyr r s � � � � � ��D� �C��G�G�Gr r �returnc � �� K � t j t dt j j t j j �� � � d{V ��} | � � � � d{V ��\ }}t |� � � � � }|dk rt j S |dk rt j S |dk rt j S t d� |t |� � � � � � � � � �)z6Returns limit method, used in run-with-intensity tool.�show)�stdout�stderrNr r r z>Parsing of used limitation method failed stdout: {} stderr: {})�asyncio�create_subprocess_exec�RUN_WITH_INTENSITY� subprocess�PIPE�communicater �stripr r r r �LookupError�format)�procr r s r �get_current_methodr( s � � � ��/����!�&��!�&� � � � � � � � � �D� �+�+�-�-�-�-�-�-�-�-�N�F�F� �f� � � #� #� %� %�F� ����� � � ������� �����#�#� �J� �����(�(�.�.�0�0� 1� 1�� � r �cmd�key� intensity_cpu�intensity_ioc � � K � t ddt |� � dt |� � g}|� d|g� � t j || z i |��� d{V ��S )aS Creates asyncio.Process with limited resources (cpu & io), using run-with-intensity tool. :param cmd: command to execute :param intensity_cpu: cpu intensity limit :param intensity_io: io intensity limit :param subprocess_kwargs: keyword arguments for create_subprocess_exec func :return: executed Process �runz--intensity-cpuz--intensity-ioz--keyN)r �str�extendr r )r) r* r+ r, �subprocess_kwargs� limits_cmds r �create_subprocessr3 8 s� � � � �$ � ���M�����L��� �J� ���w��n�%�%�%��/� �s� ��0�� � � � � � � � r �pid�fieldc � � t t | � � z dz � � � }n# t $ r Y d S w xY w|� � � D ]|}|� d� � \ }}}||k r[t t t � � 5 t |� � � d � � cd d d � � c S # 1 swxY w Y �}d S )N�status�:r )� PROC_PATHr/ � read_text�OSError� splitlines� partitionr � IndexError� ValueError�int�split)r4 r5 r7 �line�name�_�values r �_status_field_kbrF X s � ���c�#�h�h�&��1�<�<�>�>����� � � ��t�t������!�!�#�#� -� -������,�,���a���5�=�=��*�j�1�1� -� -��5�;�;�=�=��+�,�,� -� -� -� -� -� -� -� -� -� -� -� -� -� -���� -� -� -� -���4s �,/ � =�=�'C�C �C c � � g } t t t | � � z dz � � � � � }n# t $ r |cY S w xY w|D ]�} |dz � � � }n# t $ r Y �'w xY wt t � � 5 |� d� |� � � D � � � � d d d � � n# 1 swxY w Y ��|S )N�task�childrenc 3 �4 K � | ]}t |� � V � �d S �N)r@ )�.0�childs r � <genexpr>z_child_pids.<locals>.<genexpr>q s( � � � �C�C�5�C��J�J�C�C�C�C�C�Cr ) �sortedr9 r/ �iterdirr; r: r r? r0 rA )r4 rI �threads�thread�listeds r �_child_pidsrT e sL � ��H���)�c�#�h�h�.��7�@�@�B�B�C�C����� � � ���������� D� D�� ��z�)�4�4�6�6�F�F��� � � ��H� ���� �j� !� !� D� D��O�O�C�C�F�L�L�N�N�C�C�C�C�C�C� D� D� D� D� D� D� D� D� D� D� D���� D� D� D� D���Os3 �9>