Spade
Mini Shell
| Directory:~$ /proc/self/root/usr/lib/python2.7/site-packages/tuned/plugins/ |
| [Home] [System Details] [Kill Me] |
�
��*cc@s�ddlZddlmZddlTddlZddljZddlm Z ddl
Z
ddlZejj
�Zdejfd��YZdS(i����Ni(thotplug(t*(tcommandst
DiskPlugincBs9eZdZd�Zd�Zd�Zd�Zed��Zd�Z d�Z
d�Zd �Zd
�Z
ed��Zed��Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zdd�Zd�Zedde�d��Ze
d�e!d��Z"edde�d ��Z#e
d�e!d!��Z$ed"de�d#��Z%e
d"�e!d$��Z&d%�Z'd&�Z(ed'de�d(��Z)e
d'�e!d)��Z*e+d*de�d+��Z,d,�Z-ed-de�d.��Z.e
d-�e!d/��Z/RS(0s'
Plugin for tuning options of disks.
cOs�tt|�j||�ddddddddd d
ddg|_d
dddddddddd dg|_t|j�|_d|_d|_t �|_
dS(Ni�i�i�i�i�i}iiiUiFi7iiii�i�i�i�i�i�i�iniZi<ig{�G�z�?(tsuperRt__init__t
_power_levelst_spindown_levelstlent_levelst_level_stepst_load_smallestRt_cmd(tselftargstkwargs((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyRs-- cCs�tt|�j�t|_t|_t�|_t�|_xp|j j
d�D]\}|j|�rP|jj|j
�|jr�|j|j
�r�|jj|j
�q�qPqPWt�|_dS(Ntblock(RRt
_init_devicestTruet_devices_supportedt_use_hdparmtsett
_free_devicest_hdparm_apm_devicest_hardware_inventorytget_devicest_device_is_supportedtaddtsys_namet_is_hdparm_apm_supportedt_assigned_devices(R
tdevice((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyRs cCs&g|D]}|jjd|�^qS(NR(Rt
get_device(R
tdevicestx((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_get_device_objects)scCs�|jjddd|gdtjgdt�\}}}|tjkrdtjd�t|_tS|r�tj d|�tj
d||f�tSd |kr�tj d
|�tStS(Nthdparms-Cs/dev/%st no_errorst
return_errs4hdparm command not found, ignoring for other devicess#Device
'%s' not supported by hdparms(rc: %s, msg:
'%s')tunknowns3Driver for device '%s' does not support
apm
command(RtexecuteterrnotENOENTRtlogtwarntFalseRtinfotdebug(R
Rtrctoutterr_msg((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyR,s
cCsI|jdkoH|jjdd�dkoH|jdkpH|jjdkS( Ntdiskt removablet0tscsitvirtiotxentnvme(R6R7R8R9(tdevice_typet
attributestgettNonetparentt subsystem(tclsR((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyR<scCs|jj|d|j�dS(NR(Rt subscribet_hardware_events_callback(R
((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_hardware_events_initCscCs|jj|�dS(N(Rtunsubscribe(R
((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_hardware_events_cleanupFscCs;|j|�s|dkr7tt|�j||�ndS(Ntremove(RRRRB(R
teventR((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyRBIscCs?|jdk r"|jj|�ntt|�j||�dS(N(t
_load_monitorR=t
add_deviceRRt_added_device_apply_tuning(R
tinstancetdevice_name((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyRJMscCs?|jdk r"|jj|�ntt|�j||�dS(N(RHR=t
remove_deviceRRt_removed_device_unapply_tuning(R
RKRL((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyRNRscCs5itd6dd6dd6dd6dd6dd6dd6S(Ntdynamictelevatortapmtspindownt readaheadtreadahead_multiplytscheduler_quantum(RR=(R@((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_get_config_optionsWscCs
ddgS(NRQRR((R@((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt#_get_config_options_used_by_dynamiccscCs�t|_d|_d|_|j|jd�r|t|_|jjd|j �|_
i|_i|_i|_
i|_nt|_d|_
dS(NiROR3(Rt_has_static_tuningt_apm_errcntt_spindown_errcntt_option_booltoptionst_has_dynamic_tuningt_monitors_repositorytcreatetassigned_devicesRHt_device_idlet_statst_idlet_spindown_change_delayedR-R=(R
RK((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_instance_initjs cCs2|jdk r.|jj|j�d|_ndS(N(RHR=R^tdelete(R
RK((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_instance_cleanup}scCs�|rd}|j}nd}|j}|tjkr:dS|dkrOd}ne|tjkr�tjd|_|_tjd�dS|d7}|tjkr�tjd|�n|r�||_n ||_dS(NRRRQiisIhdparm
command not found, ignoring future set_apm / set_spindown
commandss5disabling set_%s command: too many consecutive
errors( RZRYtconststERROR_THRESHOLDR)R*R+R,R.(R
R0RRtstcnt((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_update_errcnt�s&
cCsgtjd|�|jjdd|d|gdtjg�\}}|j|t�t|j |<dS(Nschanging
spindown to %dR$s-S%ds/dev/%sR%(
R+R/RR(R)R*RlRR-Rd(R
RKRtnew_spindown_levelR0R1((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_change_spindown�s5cCsG|jjddd|gdtjg�\}}d|koFd|kS(NR$s-Cs/dev/%sR%tstandbytsleeping(RR(R)R*(R
RR0R1((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_drive_spinning�s1cCs�||jkrdS|jj|�}|dkr5dS||jkrW|j||�n|j|||�|j||�|j|}|j|}|dd|j kr�|d|j
kr�|d|j
kr�d}n?|ddkr|ddks
|ddkrd}nd}|dkr?|dc|7<|j|d}|j|d}t
jd|d�|jtjkr�|j|�r�|dkr�t
jd|�t|j|<q�|j|||�n|jtjkr�t
jd |�|jjd
d|d|gd
tjg�\} }
|j| t�q�nC|j|r�|j|�r�|j|d}|j|||�nt
jd||d|df�t
jd||d|d|df�dS(Ntlevelitreadtwriteii����stuning
level changed to %ds;delaying spindown change to %d, drive has already spun
downschanging APM_level to %dR$s-B%ds/dev/%sR%s %s load: read %0.2f,
write %0.2fs$%s idle: read %d, write %d, level
%d(RRHtget_device_loadR=Rbt_init_stats_and_idlet
_update_statst_update_idleRcR R
RRR+R/RZRhRiRqRRdRnRYRR(R)R*RlR-(R
RKRtloadtstatstidletlevel_changetnew_power_levelRmR0R1((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_instance_update_dynamic�sF
= 0 5"cCsjiddgd6ddgd6ddgd6|j|<idd6dd6dd 6|j|<t|j|<dS(
NiitnewtolditmaxRrRsRt(RbRcR-Rd(R
RKR((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyRv�s7"c
Cs|j|d|j|d<}||j|d<gt||�D]}|d|d^qA}||j|d<|j|d}gt||�D]}t|�^q�} | |j|d<t|d�t| d�|j|d<t|d�t| d�|j|d <dS(
NRR�iitdiffR�RsiRt(RbtzipR�tfloat(
R
RKRtnew_loadtold_loadtnew_oldR�told_max_loadtpairtmax_load((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyRw�s
.()cCs`xYddgD]K}|j|||jkrG|j||cd7<q
d|j||<q
WdS(NRsRtii(RbRRc(R
RKRt operation((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyRx�scCs@||jkr#tjd|�ntt|�jtt�dS(Ns<There
is no dynamic tuning available for device '%s' at
time(RR+R.RRt_instance_apply_dynamicRR(R
RKR((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyR��scCsdS(N((R
RKR((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_instance_unapply_dynamic�ss/sys/block/cCs_d|krItjj||jdd�|�}tjj|�rI|Sntjj|||�S(Nt/t!(tostpathtjointreplacetexists(R
Rtsuffixtprefixtdev((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_sysfs_paths
$cCs|j|d�S(Nsqueue/scheduler(R�(R
R((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_elevator_filesRPt
per_devicecCs/|j|�}|s+|jj||�n|S(N(R�Rt
write_to_file(R
tvalueRtsimtsys_file((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt
_set_elevator
scCs1|j|�}|jj|jj|d|��S(Ntno_error(R�Rtget_active_optiont read_file(R
Rtignore_missingR�((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt
_get_elevatorsRQcCs�||jkr7|s*tjd|�dSt|�Sn|jtjkr�|s�|jj ddt|�d|gdt
jg�\}}|j|t
�nt|�SdSdS(Ns+apm option is not supported
for device
'%s'R$s-Bs/dev/R%(RR+R.R=tstrRYRhRiRR(R)R*RlR-(R
R�RR�R0R1((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_set_apms
:
cCs||jkr-|s)tjd|�ndSd}t}|jjddd|gdtjg�\}}|tjkr~dS|dkr�t }nTt
jd|t
j�}|r�yt
|jd��}Wq�tk
r�t }q�Xn|rtjd |�n|S(
Ns+apm option is not supported for device
'%s'R$s-Bs/dev/R%is
.*=\s*(\d+).*is2could not get current APM
settings for device
'%s'(RR+R.R=R-RR(R)R*RtretmatchtStinttgroupt
ValueErrorterror(R
RR�R�terrR0R1tm((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_get_apm(s(1
RRcCs�||jkr7|s*tjd|�dSt|�Sn|jtjkr�|s�|jj ddt|�d|gdt
jg�\}}|j|t
�nt|�SdSdS(Ns0spindown option is not
supported for device
'%s'R$s-Ss/dev/R%(RR+R.R=R�RZRhRiRR(R)R*RlR(R
R�RR�R0R1((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt
_set_spindown@s
:
cCs1||jkr-|s)tjd|�ndSdS(Ns0spindown option is not
supported for device
'%s'i�(RR+R.R=(R
RR�((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt
_get_spindownPs
cCs|j|d�S(Nsqueue/read_ahead_kb(R�(R
R((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_readahead_fileYscCs_t|�jdd�}t|d�}t|�dkr[|dddkr[|d:}n|S(NiiRji(R�tsplitR=R�R(R
R�tvaltv((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt _parse_ra\s
&
RScCsB|j|�}|j|�}|s>|jj|d|�n|S(Ns%d(R�R�RR�(R
R�RR�R�R�((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_set_readaheadds
cCsM|j|�}|jj|d|�j�}t|�dkrCdSt|�S(NR�i(R�RR�tstripRR=R�(R
RR�R�R�((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_get_readaheadls
RTc Cs�|r
dS|jddd|�}|r�|j|�}|dkrGdStt|�|�}|jj||�|j||t�nE|jj |�}|dkr�dS|j||t�|jj
|�dS(Ntcommand_nameRTRL(R=t_storage_keyR�R�R�t_storageRR�R-R<tunset( R
tenablingt
multiplierRtverifyR�tstorage_keyt
old_readaheadt
new_readahead((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_multiply_readaheadts" cCs|j|d�S(Nsqueue/iosched/quantum(R�(R
R((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_scheduler_quantum_file�sRUcCs9|j|�}|s5|jj|dt|��n|S(Ns%d(R�RR�R�(R
R�RR�R�((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_set_scheduler_quantum�s
cCsg|j|�}|jj|d|�j�}t|�dkr]|sYtjd|�ndSt|�S(NR�is>disk_scheduler_quantum
option is not supported for device
'%s'( R�RR�R�RR+R.R=R�(R
RR�R�R�((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt_get_scheduler_quantum�s(0t__name__t
__module__t__doc__RRR#RtclassmethodRRCRERBRJRNRVRWReRgRlRnRqR~RvRwRxR�R�R�R�tcommand_setRR�tcommand_getR-R�R�R�R�R�R�R�R�R�tcommand_customR�R�R�R�(((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyRsZ
2 (R)tRt
decoratorst
tuned.logsttunedttuned.constsRhttuned.utils.commandsRR�R�tlogsR<R+tPluginR(((s=/usr/lib/python2.7/site-packages/tuned/plugins/plugin_disk.pyt<module>s