a Á]›i,ã@sŒddlZddlZddlmZddlTddlZddlTddlm Z ddl m Z ddl Z ddl Z ej ¡ZddgZdd gZGd d „d ejƒZdS) éNé)Úbase)Ú*)ÚcommandsZbase_reachable_timeZ retrans_timez /run/sysctl.dz /etc/sysctl.dcsˆeZdZdZ‡fdd„Zdd„Zdd„Zdd „Zd d „Ze j fd d „Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zddd„Z‡ZS)Ú SysctlPlugina5 Sets various kernel parameters at runtime. This plug-in is used for applying custom `sysctl` settings and should only be used to change system settings that are not covered by other *TuneD* plug-ins. If the settings are covered by other *TuneD* plug-ins, use those plug-ins instead. The syntax for this plug-in is `_key_=_value_`, where `_key_` is the same as the key name provided by the `sysctl` utility. .Adjusting the kernel runtime kernel.sched_min_granularity_ns value ==== ---- [sysctl] kernel.sched_min_granularity_ns=3000000 ---- ==== cs(tt|ƒj|i|¤Žd|_tƒ|_dS)NT)ÚsuperrÚ__init__Z_has_dynamic_optionsrÚ_cmd)ÚselfÚargsÚkwargs©Ú __class__©ú?/usr/lib/python3.9/site-packages/tuned/plugins/plugin_sysctl.pyr)szSysctlPlugin.__init__cCshd|_d|_| |j¡}|j |i¡|_t|jƒdkr\t  d¡|  |¡i|_|j  |¡|j |_ dS)NFTrz0recovering old sysctl settings from previous run)Z_has_dynamic_tuningZ_has_static_tuningÚ _storage_keyÚnameÚ_storageÚgetÚ_sysctl_originalÚlenÚlogÚinfoÚ_instance_unapply_staticÚunsetÚoptionsÚ_sysctl©r ÚinstanceÚ storage_keyrrrÚ_instance_init.s    zSysctlPlugin._instance_initcCs| |j¡}|j |¡dS©N)rrrrrrrrÚ_instance_cleanup>s zSysctlPlugin._instance_cleanupcCsÀt|j ¡ƒD]h\}}| |¡}|dur8t d|¡q|j |j  |¡¡}|  ||¡}|dur||j |<|  ||¡q|  |j¡}|j ||j ¡|j tjtj¡r¼t d¡| |j¡dS)NzDsysctl option %s will not be set, failed to read the original value.zreapplying system sysctl)ÚlistrÚitemsÚ _read_sysctlrÚerrorÚ _variablesÚexpandr ÚunquoteÚ_process_assignment_modifiersrÚ _write_sysctlrrrÚsetÚ _global_cfgZget_boolÚconstsZCFG_REAPPLY_SYSCTLZCFG_DEF_REAPPLY_SYSCTLrÚ_apply_system_sysctl)r rÚoptionÚvalueÚoriginal_valueZ new_valuerrrrÚ_instance_apply_staticBs( ÿ ÿÿ   z#SysctlPlugin._instance_apply_staticcCsrd}d}t|j ¡ƒD]V\}}| |¡}| |j |¡|¡}|dur| ||j  |¡|j  |¡|¡dkrd}q|S)NTF) r#rr$r%r*r'r(Z _verify_valuer Z remove_ws)r rÚignore_missingZdevicesÚretr0r1Zcurr_valrrrÚ_instance_verify_staticXs $z$SysctlPlugin._instance_verify_staticcCs(t|j ¡ƒD]\}}| ||¡qdSr!)r#rr$r+)r rZrollbackr0r1rrrrdsz%SysctlPlugin._instance_unapply_staticcCs2|j tjtj¡}|D]}t ||¡rdSqdS)z7Check if a sysctl option matches any exclusion pattern.TF)r-Zget_listr.ZCFG_REAPPLY_SYSCTL_EXCLUDEZCFG_DEF_REAPPLY_SYSCTL_EXCLUDEÚfnmatch)r r0Z exclude_listÚpatternrrrÚ_is_sysctl_excludedhsþ z SysctlPlugin._is_sysctl_excludedc Csœi}tD]P}zt |¡}Wnty0YqYn0|D] }| d¡sFq6||vr6|||<q6qt| ¡ƒD]$}||}d||f}| ||¡qf| d|¡dS)Nz.confz%s/%sz/etc/sysctl.conf)ÚSYSCTL_CONFIG_DIRSÚosÚlistdirÚOSErrorÚendswithÚsortedÚkeysÚ_apply_sysctl_config_file)r Úinstance_sysctlÚfilesÚdÚflistÚfnameÚpathrrrr/ss      z!SysctlPlugin._apply_system_sysctlc Cs¾t d|¡z`t|dƒ4}t|dƒD]\}}| ||||¡q&Wdƒn1sT0Yt d|¡WnJttfy¸}z.|jtjkr¤t  d|t |ƒf¡WYd}~n d}~00dS)Nz%Applying sysctl settings from file %sÚrrz.Finished applying sysctl settings from file %sz.Error reading sysctl settings from file %s: %s) rÚdebugÚopenÚ enumerateÚ_apply_sysctl_config_liner=ÚIOErrorÚerrnoÚENOENTr&Ústr)r rGrBÚfÚlinenoÚlineÚerrrrA†s 0ÿ   ÿz&SysctlPlugin._apply_sysctl_config_filec Cs| ¡}t|ƒdks,|ddks,|ddkr0dS| dd¡}t|ƒdkr^t d||f¡dS|\}}| ¡}t|ƒdkrt d||f¡dS| ¡}| |¡r¸t d||f¡dS||vrì|j ||¡}||krìt  d |||f¡|j ||d d dS) Nrú#ú;ú=réz Syntax error in file %s, line %dz1Skipping excluded sysctl parameter '%s' from '%s'z2Overriding sysctl parameter '%s' from '%s' to '%s'T)r4) ÚstriprÚsplitrr&r9rIr'r(rr+) r rGrRrSrBÚtmpr0r1Zinstance_valuerrrrL“s:$  ÿ ÿ ÿÿz&SysctlPlugin._apply_sysctl_config_linecCsd|j |dd¡S)Nz /proc/sys/%sz./z/.)r Útr)r r0rrrÚ_get_sysctl_path¯szSysctlPlugin._get_sysctl_pathcCsV| |¡}|jj|dd}|dur&dS| ¡}t| d¡ƒdkrRt d|¡dS|S)N)Zerr_retÚ rzGFailed to read sysctl parameter '%s', multi-line values are unsupported)r]r Z read_filerYrrZrr&)r r0rGZcontentrrrr%¶s zSysctlPlugin._read_sysctlFcCsL| |¡}tj |¡tvr,t d|¡dS|jj|||rBt j gndddS)Nz+Refusing to set deprecated sysctl option %sFT)Zno_errorZ ignore_same) r]r;rGÚbasenameÚDEPRECATED_SYSCTL_OPTIONSrr&r Z write_to_filerNrO)r r0r1r4rGrrrr+Ás  zSysctlPlugin._write_sysctl)F)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr r"r3r6r.Z ROLLBACK_SOFTrr9r/rArLr]r%r+Ú __classcell__rrr rrs     r)r7ÚreÚrZ decoratorsZ tuned.logsZtunedÚ subprocessZtuned.utils.commandsrZ tuned.constsr.rNr;Zlogsrrr`r:ZPluginrrrrrÚs    ÿ