Sindbad~EG File Manager
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��Zed
�dd��Z
ed
�dd��Ze d�dd��Zed�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].
cCsdddd�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_path4szVMPlugin._thp_pathrcCs�|dkr"|stjdt|��dStjddd�}|jd�d krP|sLtjd
�dStjj |j
�d�}tjj|�r�|s�tj|||r�t
jgndd�|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_hugepagesYsz#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_defragssz)VMPlugin._get_transparent_hugepage_defragN)�__name__�
__module__�__qualname__�__doc__�classmethodrrrrZcommand_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
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists