Your IP : 18.117.231.160


Current Path : /usr/lib/python3.6/site-packages/tuned/plugins/__pycache__/
Upload File :
Current File : //usr/lib/python3.6/site-packages/tuned/plugins/__pycache__/plugin_vm.cpython-36.pyc

3

�<�e�
�@snddlmZddlTddlZddlZddlZddlZddlZddl	m
Z
ejj�Z
e
�ZGdd�dej�ZdS)�)�base)�*�N)�commandsc@s�eZdZdZedd��Zdd�Zdd�Zedd	��Ze	d
�dd��Z
e	d
�dd��Zed
�dd��Z
ed
�dd��Ze	d�dd��Zed�dd��ZdS)�VMPlugina|
	`vm`::
	
	Enables or disables transparent huge pages depending on value of the
	[option]`transparent_hugepages` option. The option can have one of three
	possible values `always`, `madvise` and `never`.
	+
	.Disable transparent hugepages
	====
	----
	[vm]
	transparent_hugepages=never
	----
	====
	+
	The [option]`transparent_hugepage.defrag` option specifies the
	defragmentation policy. Possible values for this option are `always`,
	`defer`, `defer+madvise`, `madvise` and `never`. For a detailed
	explanation of these values refer to
	link:https://www.kernel.org/doc/Documentation/vm/transhuge.txt[Transparent Hugepage Support].
	cCsdddd�S)N)�transparent_hugepages�transparent_hugepageztransparent_hugepage.defrag�)�selfr	r	�/usr/lib/python3.6/plugin_vm.py�_get_config_options%szVMPlugin._get_config_optionscCsd|_d|_dS)NTF)Z_has_static_tuningZ_has_dynamic_tuning)r
�instancer	r	r�_instance_init-szVMPlugin._instance_initcCsdS)Nr	)r
r
r	r	r�_instance_cleanup1szVMPlugin._instance_cleanupcCsd}tjj|�sd}|S)Nz#/sys/kernel/mm/transparent_hugepagez*/sys/kernel/mm/redhat_transparent_hugepage)�os�path�exists)r
rr	r	r�	_thp_path4szVMPlugin._thp_pathrcCs�|dkr"|stjdt|��dStjddd�}|jd�d	krP|sLtjd
�dStjj	|j
�d�}tjj|�r�|s�tj|||r�t
jgndd�|S|s�tjd
�dSdS)N�always�never�madvisez-Incorrect 'transparent_hugepages' value '%s'.z
/proc/cmdlineT)�no_errorztransparent_hugepage=rzWtransparent_hugepage is already set in kernel boot cmdline, ignoring value from profile�enabledFzDOption 'transparent_hugepages' is not supported on current hardware.)rrr)�log�warn�str�cmd�	read_file�find�inforr�joinrr�
write_to_file�errno�ENOENT)r
�value�sim�removeZcmdline�sys_filer	r	r�_set_transparent_hugepages<s$

z#VMPlugin._set_transparent_hugepagesrcCs|j|||�dS)N)r()r
r$r%r&r	r	r�_set_transparent_hugepageUsz"VMPlugin._set_transparent_hugepagecCs6tjj|j�d�}tjj|�r.tjtj|��SdSdS)Nr)rrr rrr�get_active_optionr)r
r'r	r	r�_get_transparent_hugepagesYsz#VMPlugin._get_transparent_hugepagescCs|j�S)N)r+)r
r	r	r�_get_transparent_hugepagebsz"VMPlugin._get_transparent_hugepageztransparent_hugepage.defragcCsXtjj|j�d�}tjj|�rB|s>tj|||r6tjgndd�|S|sPt	j
d�dSdS)N�defragF)rzJOption 'transparent_hugepage.defrag' is not supported on current hardware.)rrr rrrr!r"r#rr)r
r$r%r&r'r	r	r� _set_transparent_hugepage_defragfs
z)VMPlugin._set_transparent_hugepage_defragcCs6tjj|j�d�}tjj|�r.tjtj|��SdSdS)Nr-)rrr rrrr*r)r
r'r	r	r� _get_transparent_hugepage_defragssz)VMPlugin._get_transparent_hugepage_defragN)�__name__�
__module__�__qualname__�__doc__�classmethodrrrrZcommand_setr(r)Zcommand_getr+r,r.r/r	r	r	rrs	
r)�rZ
decoratorsZ
tuned.logsZtunedrr"�structZglobZtuned.utils.commandsrZlogs�getrrZPluginrr	r	r	r�<module>s


?>