PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 131
a hVz@sddlmZddlTddlZddlmZddlmZddl Z ddl Z ddl Z ddl Z ddl Z ddl Z ejZdZGdddejZdS) )hotplug)*N)commandsz$/sys/devices/system/cpu/cpu0/cpuidlecs^eZdZdZfddZddZddZedd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZfddZd d!Zd"d#Zd$d%Zfd&d'Zejffd(d) Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zdvd5d6Z dwd7d8Z!dxd9d:Z"d;d<Z#d=d>Z$e%d?d@dAdBdCZ&e'd?dydDdEZ(dzdGdHZ)e%dId@dJdKdLdMZ*e'dId{dNdOZ+dPdQZ,dRdSZ-d|dTdUZ.dVdWZ/e%dXd@dAdYdZZ0d[d\Z1d]d^Z2d_d`Z3e'dXd}dadbZ4dcddZ5dedfZ6e%dgd@dAdhdiZ7e'dgd~djdkZ8e%dld@dAdmdnZ9e'dlddodpZ:e%dqd@dAdrdsZ;e'dqddtduZ<Z=S)CPULatencyPlugina Sets the CPU governor to the value specified by the [option]`governor` option and dynamically changes the Power Management Quality of Service (PM QoS) CPU Direct Memory Access (DMA) latency according to the CPU load. `governor`::: The [option]`governor` option of the 'cpu' plug-in supports specifying CPU governors. Multiple governors are separated using '|'. The '|' character is meant to represent a logical 'or' operator. Note that the same syntax is used for the [option]`energy_perf_bias` option. *TuneD* will set the first governor that is available on the system. + .Specifying a CPU governor ==== ---- [cpu] governor=ondemand|powersave ---- *TuneD* will set the 'ondemand' governor, if it is available. If it is not available, but the 'powersave' governor is available, 'powersave' will be set. If neither of them are available, the governor will not be changed. ==== `sampling_down_factor`::: The sampling rate determines how frequently the governor checks to tune the CPU. The [option]`sampling_down_factor` is a tunable that multiplies the sampling rate when the CPU is at its highest clock frequency thereby delaying load evaluation and improving performance. Allowed values for sampling_down_factor are 1 to 100000. + .The recommended setting for jitter reduction ==== ---- [cpu] sampling_down_factor = 100 ---- ==== `energy_perf_bias`::: [option]`energy_perf_bias` supports managing energy vs. performance policy via x86 Model Specific Registers using the `x86_energy_perf_policy` tool. Multiple alternative Energy Performance Bias (EPB) values are supported. The alternative values are separated using the '|' character. The following EPB values are supported starting with kernel 4.13: "performance", "balance-performance", "normal", "balance-power" and "power". On newer processors is value writen straight to file (see rhbz#2095829) + .Specifying alternative Energy Performance Bias values ==== ---- [cpu] energy_perf_bias=powersave|power ---- *TuneD* will try to set EPB to 'powersave'. If that fails, it will try to set it to 'power'. ==== `energy_performance_preference`::: [option]`energy_performance_preference` supports managing energy vs. performance hints on newer Intel and AMD processors with active P-State CPU scaling drivers (intel_pstate or amd-pstate). Multiple alternative Energy Performance Preferences (EPP) values are supported. The alternative values are separated using the '|' character. Available values can be found in `energy_performance_available_preferences` file in `CPUFreq` policy directory in `sysfs`. in + .Specifying alternative Energy Performance Hints values ==== ---- [cpu] energy_performance_preference=balance_power|power ---- *TuneD* will try to set EPP to 'balance_power'. If that fails, it will try to set it to 'power'. ==== `latency_low, latency_high, load_threshold`::: + If the CPU load is lower than the value specified by the [option]`load_threshold` option, the latency is set to the value specified either by the [option]`latency_high` option or by the [option]`latency_low` option. `force_latency`::: You can also force the latency to a specific value and prevent it from dynamically changing further. To do so, set the [option]`force_latency` option to the required latency value. + The maximum latency value can be specified in several ways: + -- * by a numerical value in microseconds (for example, `force_latency=10`) * as the kernel CPU idle level ID of the maximum C-state allowed (for example, force_latency = cstate.id:1) * as a case sensitive name of the maximum C-state allowed (for example, force_latency = cstate.name:C1) * by using 'None' as a fallback value to prevent errors when alternative C-state IDs/names do not exist. When 'None' is used in the alternatives pipeline, all the alternatives that follow 'None' are ignored. -- + It is also possible to specify multiple fallback values separated by '|' as the C-state names and/or IDs may not be available on some systems. + .Specifying fallback C-state values ==== ---- [cpu] force_latency=cstate.name:C6|cstate.id:4|10 ---- This configuration tries to obtain and set the latency of C-state named C6. If the C-state C6 does not exist, kernel CPU idle level ID 4 (state4) latency is searched for in sysfs. Finally, if the state4 directory in sysfs is not found, the last latency fallback value is `10` us. The value is encoded and written into the kernel's PM QoS file `/dev/cpu_dma_latency`. ==== + .Specifying fallback C-state values using 'None'. ==== ---- [cpu] force_latency=cstate.name:XYZ|None ---- In this case, if C-state with the name `XYZ` does not exist, no latency value will be written into the kernel's PM QoS file, and no errors will be reported due to the presence of 'None'. ==== `min_perf_pct, max_perf_pct, no_turbo`::: These options set the internals of the Intel P-State driver exposed via the kernel's `sysfs` interface. + .Adjusting the configuration of the Intel P-State driver ==== ---- [cpu] min_perf_pct=100 ---- Limit the minimum P-State that will be requested by the driver. It states it as a percentage of the max (non-turbo) performance level. ==== `pm_qos_resume_latency_us`::: This option allow to set specific latency for all cpus or specific ones. + .Configuring resume latency ==== ---- [cpu] pm_qos_resume_latency_us=n/a ---- Special value that disables C-states completely. ---- [cpu] pm_qos_resume_latency_us=0 ---- Allows all C-states. ---- [cpu] pm_qos_resume_latency_us=100 ---- Allows any C-state with a resume latency less than 100. ==== `boost`::: The [option]`boost` option allows the CPU to boost above nominal frequencies for shorts periods of time. On Intel systems with the intel_pstate driver, setting boost=0 will automatically set no_turbo=1 to ensure boost is properly disabled. + .Allowing CPU boost ==== ---- [cpu] boost=1 ---- ==== cs|tt|j|i|d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_i|_t|_d|_dS)NTx86_64F)superr__init__ _has_pm_qos_archZ_is_x86 _is_intel_is_amd _has_hwp_epp _has_energy_perf_policy_and_bias_has_intel_pstate_has_amd_pstate_has_pm_qos_resume_latency_us_min_perf_pct_save_max_perf_pct_save_no_turbo_save_governors_mapr_cmd_flags)selfargskwargs __class__z8CPULatencyPlugin._get_device_objects..r)rZdevicesrr)r_get_device_objectssz$CPULatencyPlugin._get_device_objectscCs dddddddddddddd S)Ng?di) load_threshold latency_low latency_high force_latencygovernorsampling_down_factorenergy_perf_bias min_perf_pct max_perf_pctno_turbopm_qos_resume_latency_usenergy_performance_preferenceboostrr)rrr_get_config_optionssz$CPULatencyPlugin._get_config_optionscCsgd}t|_|j|vrnt}|jd}|dkr@d|_n|dksP|dkrXd|_nd|_t d|nt d|jt j | v|_|jr|js|||jr|dS) N)rZi686Zi585Zi486Zi386Z vendor_idZ GenuineIntelTZ AuthenticAMDZ HygonGenuinez$We are running on an x86 %s platformzWe are running on %s (non x86))platformmachiner procfscpuinfotagsgetr r loginfoconstsZCFG_CPU_EPP_FLAG_get_cpuinfo_flagsr"_check_energy_perf_policy_and_bias_check_intel_pstate_check_amd_pstate)rZ intel_archsr Zvendorrrr _check_archs&   zCPULatencyPlugin._check_archcCs\d}|jjddgtj|gd\}}|dkr:|dkr:d|_n|dkrNtdn td d S) z_Check for EPB via x86_energy_perf_policy, warn if the tool is not available or EPB unsupported.rx86_energy_perf_policy-r)Z no_errorsrTzgunable to run x86_energy_perf_policy tool, ignoring CPU energy performance bias, is the tool installed?zXyour CPU doesn't support MSR_IA32_ENERGY_PERF_BIAS, ignoring CPU energy performance biasN)rexecuteerrnoENOENTrrBwarning)rZretcode_unsupportedretcodeoutrrrrF%s z3CPULatencyPlugin._check_energy_perf_policy_and_biascCs"tjd|_|jrtddS)Nz$/sys/devices/system/cpu/intel_pstatezintel_pstate detected)ospathexistsrrBrCr)rrrrG3sz$CPULatencyPlugin._check_intel_pstatecCs"tjd|_|jrtddS)Nz"/sys/devices/system/cpu/amd_pstatezamd-pstate detected)rSrTrUrrBrCr)rrrrH8sz"CPULatencyPlugin._check_amd_pstatecCs$|jdurtjdg|_|jS)Nflags)rr>r?r@rAr)rrrrE=s z#CPULatencyPlugin._get_cpuinfo_flagscCs t|}|jt|ddS)Nr rL)strrZ is_cpu_onlinereplace)rr%sdrrr_is_cpu_onlineBszCPULatencyPlugin._is_cpu_onlinecCstjd|S)N3/sys/devices/system/cpu/%s/cpufreq/scaling_governor)rSrTrUr$rrr_cpu_has_scaling_governorFsz*CPULatencyPlugin._cpu_has_scaling_governorcCs<||std|dS||s8td|dSdS)Nz'%s' is not online, skippingFz.there is no scaling governor fo '%s', skippingT)rZrBdebugr\r$rrr_check_cpu_can_change_governorIs  z/CPULatencyPlugin._check_cpu_can_change_governorcCsd|_d|_d|_t|jd|krd|_ztt j tj |_ Wn(t yltdt j d|_Yn0d|_|jddur|jddurd|_|nd|_td|jzt|jd|_Wntyd|_Yn0dS)NTFrz-Unable to open '%s', disabling PM_QoS controlr1r8zILatency settings from non-first CPU plugin instance '%s' will be ignored.)Z_has_static_tuningZ_has_dynamic_tuning _load_monitorlistZ _instancesvalues_first_instancerSopenrDZPATH_CPU_DMA_LATENCYO_WRONLY_cpu_latency_fdOSErrorrBrCr _latencyoptionsrInameZassigned_devices _first_device IndexErrorrinstancerrr_instance_initRs(    zCPULatencyPlugin._instance_initcCs4|jr0|jrt|j|jdur0|j|jdSN)rbr rScloserer__monitors_repositorydeleterlrrr_instance_cleanupns   z"CPULatencyPlugin._instance_cleanupcs*tt|||jr&|jdd|_dS)Nload)rr_instance_init_dynamicrbrqZcreater_rlrrrruusz'CPULatencyPlugin._instance_init_dynamiccCs|jd|dS)N'/sys/devices/system/cpu/intel_pstate/%s)r read_filestrip)rattrrrr_get_intel_pstate_attrzsz'CPULatencyPlugin._get_intel_pstate_attrcCs"|dur|jjd||dddS)NrvT) ignore_same)r write_to_file)rryvalrrr_set_intel_pstate_attr}sz'CPULatencyPlugin._set_intel_pstate_attrcCs&|dur dS||}||||Sro)rzr~)rryvaluevrrr_getset_intel_pstate_attrs   z*CPULatencyPlugin._getset_intel_pstate_attrcstt|||jsdS|j|jd}|dur>|||jr|j|jd}| d||_ |j|jd}| d||_ |j |j|jd}| d||_dS)Nr1r5r6r7)rr_instance_apply_staticrbZ _variablesexpandrh _set_latencyrrrrrZget_boolr)rrmZforce_latency_valueZ new_valuerrrrs6  z'CPULatencyPlugin._instance_apply_staticcsLtt||||jrH|jrH|d|j|d|j|d|jdS)Nr5r6r7) rr_instance_unapply_staticrbrr~rrr)rrmZrollbackrrrrs  z)CPULatencyPlugin._instance_unapply_staticcCs|||dSro)_instance_update_dynamicrrmr%rrr_instance_apply_dynamicsz(CPULatencyPlugin._instance_apply_dynamiccCsP||jkrdS|jd}||jdkr<||jdn||jddS)Nsystemr.r0r/)rjr_Zget_loadrhr)rrmr%rtrrrrs  z)CPULatencyPlugin._instance_update_dynamiccCsdSrorrrrr_instance_unapply_dynamicsz*CPULatencyPlugin._instance_unapply_dynamicc Cs(z t|WSttfy"YdS0dSro)int ValueError TypeErrorrsrrr_str2ints zCPULatencyPlugin._str2intcCsi|_ttD]l}td|}|jj|dddd}|jj|dddd}|dur|dur||}|dur||j|<qdS)Nz/%s/riTZerr_retno_errorlatency)cstates_latencyrSlistdircpuidle_states_pathrrwrrx)rdZ cstate_pathrirrrr_read_cstates_latencys  z&CPULatencyPlugin._read_cstates_latencyFcCshtd||jdur*td||j|d}|rR|dkrRtddStdt||S)Nz)getting latency for cstate with name '%s'zreading cstates latency tabler"skipping latency 0 as set by paramz!cstate name mapped to latency: %s)rBr]rrrArW)rrino_zerorrrr_get_latency_by_cstate_names    z,CPULatencyPlugin._get_latency_by_cstate_namecCstdt|||}|dur2tddStdd|}||jj|ddd}|rt|dkrttddStd t||S) Nz'getting latency for cstate with ID '%s'zcstate ID is invalidz /%s/latencyzstate%dTrrrzcstate ID mapped to latency: %s)rBr]rWrrrrw)rZlidrZ latency_pathrrrr_get_latency_by_cstate_ids    z*CPULatencyPlugin._get_latency_by_cstate_idc Cs^d|_t|d}td||f|D](}zt|}td|WntyD|dddkr|j|dddd}n|dd d kr||d d}n|dd d kr|j|d ddd}nr|dd dkr||d d}nN|dvrtdYdS|r*|dkr*tdntdt|d}Yn0|dur*qVq*|dfS)N|z#parsing latency '%s', allow_na '%s'z+parsed directly specified latency value: %drzcstate.id_no_zero:T)r z cstate.id:zcstate.name_no_zero: z cstate.name:)ZnoneNonezlatency 'none' specified)NTn/azlatency 'n/a' specifiedzinvalid latency specified: '%s'F) rrWsplitrBr]rrrr)rrallow_naZ latenciesrrr_parse_latencys6     zCPULatencyPlugin._parse_latencycCsn||\}}|sj|jrj|dur2tdd|_n8|j|krjtd|td|}t |j |||_dS)Nztunable to evaluate latency value (probably wrong settings in the 'cpu' section of current profile), disabling PM QoSFzsetting new cpu latency %di) rr rBerrorrgrCstructpackrSwritere)rrskipZ latency_binrrrrs    zCPULatencyPlugin._set_latencycCs|jd|S)Nz>/sys/devices/system/cpu/%s/cpufreq/scaling_available_governors)rrwrxrr$rrr_get_available_governorssz)CPULatencyPlugin._get_available_governorsr2T) per_devicecCs||sdSt|}|d}dd|D}|D] }t|dkr2tddSq2||}|D]b}||vr|std||f|jj d|||rt j gndd d qqb|sbt d ||fqbt d d |d}|S)NrcSsg|] }|qSr)rx)r'r2rrrr*r+z2CPULatencyPlugin._set_governor..rz.The 'governor' option contains an empty value.z!setting governor '%s' on cpu '%s'r[FTrr{z7Ignoring governor '%s' on cpu '%s', it is not supportedz.None of the scaling governors is supported: %sz, )r^rWrlenrBrrrCrr|rNrOr]rPjoin)rZ governorsr%rmsimremover2Zavailable_governorsrrr _set_governors>     zCPULatencyPlugin._set_governorcCsTd}||sdS|jjd||d}t|dkr:|}|durPtd||S)Nr[rrz*could not get current governor on cpu '%s')r^rrwrxrrBr)rr%rmignore_missingr2datarrr _get_governor/s  zCPULatencyPlugin._get_governorondemandcCsd|S)Nz7/sys/devices/system/cpu/cpufreq/%s/sampling_down_factorr)rr2rrr_sampling_down_factor_path=sz+CPULatencyPlugin._sampling_down_factor_pathr3r)rpriorityc Csd}||jvr|jd|j|<|||}|durHtd|dS|t|jvr||j|<||}tj |std||fdSt |}|st d||f|j j|||rtjgndd|S)NzIignoring sampling_down_factor setting for CPU '%s', cannot match governorzTignoring sampling_down_factor setting for CPU '%s', governor '%s' doesn't support itz6setting sampling_down_factor to '%s' for governor '%s'Fr)rclearrrBr]r`rarrSrTrUrWrCrr|rNrO) rr3r%rmrrr}r2rTrrr_set_sampling_down_factor@s&       z*CPULatencyPlugin._set_sampling_down_factorcCsF|j|||d}|durdS||}tj|s6dS|j|S)N)r)rrrSrTrUrrwrx)rr%rmrr2rTrrr_get_sampling_down_factor[s  z*CPULatencyPlugin._get_sampling_down_factorcCs*|jjdd|t|gdd\}}}||fS)NrJ-cT)Z return_err)rrMrW)rcpu_idrrQrRerr_msgrrr_try_set_energy_perf_biases z*CPULatencyPlugin._try_set_energy_perf_biascCsd|S)Nz./sys/devices/system/cpu/cpufreq/policy%s/boostrrrrrr_pstate_boost_pathnsz#CPULatencyPlugin._pstate_boost_pathcCsd||r dndfS)Nz>/sys/devices/system/cpu/cpufreq/policy%s/energy_performance_%sZavailable_preferencesZ preferencer)rrZ availablerrr_pstate_preference_pathqsz(CPULatencyPlugin._pstate_preference_pathcCsd|S)Nz4/sys/devices/system/cpu/cpu%s/power/energy_perf_biasrrrrr_energy_perf_bias_pathtsz'CPULatencyPlugin._energy_perf_bias_pathr4c Csx||std|dS|d}|d}|jr||}tj |r|s|D]B} | } |j j || |rvt jgndddrTtd| |fqqTtd|t|Std |dSn|jrp|sh|D]} | } td | |f||| \} } | d kr&td| |fqhq| d krFtd | qhqtd | |fqtd|t|SdSdS)N%s is not online, skippingr rFTrz5energy_perf_bias successfully set to '%s' on cpu '%s'zPFailed to set energy_perf_bias on cpu '%s'. Is the value in the profile correct?zXFailed to set energy_perf_bias on cpu '%s' because energy_perf_bias file does not exist.z2Trying to set energy_perf_bias to '%s' on cpu '%s'rz"Failed to set energy_perf_bias: %szHCould not set energy_perf_bias to '%s' on cpu '%s', trying another value)rZrBr]lstriprrrrSrTrUrxrr|rNrOrCrrWrr) rr4r%rmrrrvalsenergy_perf_bias_pathr}rQrrrr_set_energy_perf_biaswsl        z&CPULatencyPlugin._set_energy_perf_biasc Csnz t|}Wn\tyh}zDzt|d}Wn(tyR}z|}WYd}~n d}~00WYd}~n d}~00|S)N)rr)rrrerrr_try_parse_nums 0zCPULatencyPlugin._try_parse_numcCsdddd|||S)N performancenormalZ powersave)rrArrrrr_energy_perf_policy_to_humansz-CPULatencyPlugin._energy_perf_policy_to_humancCsdddddd|||S)Nrzbalance-performancerz balance-powerZpower)rrrrrrrr_energy_perf_policy_to_human_v2s z0CPULatencyPlugin._energy_perf_policy_to_human_v2c Csd}||s td|dS|d}|jrZ||}tj|r| |j |}nz|j r|j dd|dg\}}|dkr|D]J} | } t| dkr|| d}qqt| d kr| | d}qq|S) Nrr rJrrKrr)rZrBr]rrrrSrTrUrrrwrrM splitlinesrrr) rr%rmrr4rrrQlineslinelrrr_get_energy_perf_biass*       z&CPULatencyPlugin._get_energy_perf_biascCsd|S)Nz9/sys/devices/system/cpu/%s/power/pm_qos_resume_latency_usrr$rrr_pm_qos_resume_latency_us_pathsz/CPULatencyPlugin._pm_qos_resume_latency_us_pathcCs4|jdur.tj|||_|js.td|jS)NzGOption 'pm_qos_resume_latency_us' is not supported on current hardware.)rrSrTrUrrBrCr$rrr_check_pm_qos_resume_latency_uss   z0CPULatencyPlugin._check_pm_qos_resume_latency_usr8cCs||std|dS|j|dd\}}|s<||s@dS|dusX|dkrn|dkrntd||fdS|s|jj||||rt j gndd|S) NrT)rrrz__name__ __module__ __qualname____doc__r r&r, classmethodr;rIrFrGrHrErZr\r^rnrsrurzr~rrrDZ ROLLBACK_SOFTrrrrrrrrrrrZ command_setrZ command_getrrrrrrrrrrrrrrrrrrrrr __classcell__rrrrrs<   #                 7       '  r)rLrZ decoratorsZ tuned.logsZtunedZtuned.utils.commandsrZ tuned.constsrDrSrNrr<r>ZlogsrArBrZPluginrrrrrs