관리-도구
편집 파일: plugin_irqbalance.cpython-39.pyc
a ����,�g.����������������������@���sd���d�dl�mZ�d�dlmZ�ddlmZ�ddlZddlZddlZddl Z ej ���ZG�dd��dej �ZdS�)����)�base)�command_custom�����)�constsNc�����������������������s����e�Zd�ZdZ��fdd�Zdd��Zdd��Zedd ���Zd d��Z dd ��Z dd��Zdd��Zdd��Z dd��Zdd��Zeddd�dd���Z���ZS�)�IrqbalancePlugina��� Plug-in for irqbalance settings management. The plug-in configures CPUs which should be skipped when rebalancing IRQs in `/etc/sysconfig/irqbalance`. It then restarts irqbalance if and only if it was previously running. The banned/skipped CPUs are specified as a CPU list via the [option]`banned_cpus` option. .Skip CPUs 2,4 and 9-13 when rebalancing IRQs ==== ---- [irqbalance] banned_cpus=2,4,9-13 ---- ==== c��������������������s$���t�t|��j|i�|���t���|�_d�S��N)�superr����__init__�perfZcpu_map�_cpus)�self�args�kwargs�� __class__���C/usr/lib/python3.9/site-packages/tuned/plugins/plugin_irqbalance.pyr ������s����zIrqbalancePlugin.__init__c�����������������C���s���d|_�d|_d�S�)NFT)Z_has_dynamic_tuningZ_has_static_tuning�r����instancer���r���r����_instance_init"���s����zIrqbalancePlugin._instance_initc�����������������C���s���d�S�r���r���r���r���r���r����_instance_cleanup&���s����z"IrqbalancePlugin._instance_cleanupc�����������������C���s���dd�iS�)N�banned_cpusr���)�clsr���r���r����_get_config_options)���s�����z$IrqbalancePlugin._get_config_optionsc�������������� ���C���s����z:t�tjd��}|���W��d�����W�S�1�s.0����Y��W�nL�ty��}�z4|jtjkrbt�d��nt� d|���W�Y�d�}~d�S�d�}~0�0�d�S�)N�rz>irqbalance sysconfig file is missing. Is irqbalance installed?z,Failed to read irqbalance sysconfig file: %s) �openr����IRQBALANCE_SYSCONFIG_FILE�read�IOError�errno�ENOENT�log�warning�error)r����f�er���r���r����_read_irqbalance_sysconfig/���s����,z+IrqbalancePlugin._read_irqbalance_sysconfigc�������������� ���C���sv���z<t�tjd��}|�|��W�d�����n1�s.0����Y��W�dS��typ�}�zt�d|���W�Y�d�}~dS�d�}~0�0�d�S�)N�wTz-Failed to write irqbalance sysconfig file: %sF)r���r���r����writer���r!���r#���)r����contentr$���r%���r���r���r����_write_irqbalance_sysconfig:���s����(z,IrqbalancePlugin._write_irqbalance_sysconfigc�����������������C���s���|d|��S�)NzIRQBALANCE_BANNED_CPULIST=%s r���)r���� sysconfig�banned_cpulist_stringr���r���r����_write_banned_cpusC���s����z#IrqbalancePlugin._write_banned_cpusc�����������������C���s4���g�}|��d�D�]}t�d|�s|�|��qd�|�S�)N� z\s*IRQBALANCE_BANNED_CPULIST=)�split�re�match�append�join)r���r+����lines�liner���r���r����_clear_banned_cpusF���s ����z#IrqbalancePlugin._clear_banned_cpusc�����������������C���s0���|�j�jg�d�dgd�\}}|dkr,t�d��d�S�)N)Z systemctlztry-restartZ irqbalance����)Z no_errorsr���z.Failed to restart irqbalance. Is it installed?)�_cmdZexecuter!���r"���)r���Zretcode�outr���r���r����_restart_irqbalanceM���s����� z$IrqbalancePlugin._restart_irqbalancec�����������������C���s@���|�����}|d�u�rd�S�|��|�}|��||�}|��|�r<|�����d�S�r���)r&���r6���r-���r*���r:���)r���r,���r)���r���r���r����_set_banned_cpusV���s���� z!IrqbalancePlugin._set_banned_cpusc�����������������C���s4���|�����}|d�u�rd�S�|��|�}|��|�r0|�����d�S�r���)r&���r6���r*���r:���)r���r)���r���r���r����_restore_banned_cpus_���s���� z%IrqbalancePlugin._restore_banned_cpusr���F)Z per_devicec����������� ������C���s����d�}|d�urnt�|�j�|��}t�|�j�}|�|�rF|�j�|�j�|��}n(d�dd��|�jD���} t� d|| f���|sv|r�|d�u�r�d�S�|r�d�S�|r�|�� |��n|�����d�S�)N�,c�����������������S���s���g�|�]}t�|��qS�r���)�str)�.0�xr���r���r���� <listcomp>p��������z1IrqbalancePlugin._banned_cpus.<locals>.<listcomp>zGInvalid banned_cpus specified, '%s' does not match available cores '%s')�setr8���Zcpulist_unpackr����issubsetZcpulist2stringZcpulist_packr3���r!���r#���r;���r<���) r���Zenabling�valueZverifyZignore_missingr���r,���ZbannedZpresentZstr_cpusr���r���r����_banned_cpusg���s"���� �zIrqbalancePlugin._banned_cpus)�__name__� __module__�__qualname__�__doc__r ���r���r����classmethodr���r&���r*���r-���r6���r:���r;���r<���r���rF���� __classcell__r���r���r���r���r������s��� r���)��r���Z decoratorsr���Ztunedr���Z tuned.logsr���r ���r0���Zlogs�getr!���ZPluginr���r���r���r���r����<module>���s���