H:jC-ddlZddlmZddlmZdZdZdZdZdezezezZ d Z ej d Z Gd d eZ Gd d eZdS)N)LVEStat)LveStatsPlugini) cpu_fault memphy_fault mem_faultio_fault iops_fault mep_fault nproc_fault)lcpulmemphylmemioliopsleplnproc) cpu_usagememphy mem_usageio_usageiopsmepnproc) lve_versiontimehas_changed_limitshas_changed_nprociseletskLVEUsageceZdZdZdZdZdS)LVEUsageAnalyzerzO Calculates lve usage and updates it in lve_data, in field 'lve_usage' c||_dSN)config)selfr$s /builddir/build/BUILDROOT/lve-stats-5.0.4-1.el8.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/lvestats/plugins/generic/analyzers.py set_configzLVEUsageAnalyzer.set_configs  c|d}|d}|d=|dd}|j|d<|d}|d}i}|D]\}} t|d} ||d} | | | ||r |j|z nd||d ks.| jd ks#| jd ks| | | | r| ||<|d g} | ||g|d <t| |d <| |d <dS) z' :param dict lve_data: stats old_statsold_nowNtotalHzprocs LVE_VERSION)rr lve_usages lve_usages_5slve_active_ids) getnowitemsrcalcrris_lve_data_changedappendlistkeys) r%lve_data new_statsr+r,total_hzr.result_idlve_statu lve_stat_oldr0s r&executezLVEUsageAnalyzer.execute ss W% [) [ !,,y$//"hI&!&__.. MCXm%<===A$==d33L FF<875\TX5G5GX\^c d d dq>A%%z$LVEUsage.__repr__..}s3@@all3.?.?@!@@@@@@r(:z, >)dirgetattr isinstancestrintfloatbooltype)r%representationrYvs r&__repr__zLVEUsage.__repr__{s@@SYY@@@ / /Aa  A!c3tT$ZZ@AA /Q,,,,,.#r(ctjjjjfrdStfdt DrdSdS)NTc38K|]}t|VdSr#r^)rXrYr%s r&rZz2LVEUsage.has_interesting_values..s-11Qa  111111r(F)anyrrrrFAULTSr%s`r&has_interesting_valueszLVEUsage.has_interesting_valuessX  DM49E F F 4 1111&111 2 2 4ur(chtD])}t||dt||dkrdS*dS)O :type old: lvestat.LVEStat :type new: lvestat.LVEStat NTF)LIMITSr^)r%newoldattrs r&_has_changed_limitszLVEUsage._has_changed_limitssH   DsD$''73d+C+CCCttDur(c"|j|jkS)rp)r)r%rrrss r&_has_changed_nproczLVEUsage._has_changed_nprocs yCI%%r(c"|dkr|S||zdzS)z` New kernel format lcpu is 100 times bigger than previous. So that it's 0-10000 rNdrH)r%r lve_verr.s r&rOz*LVEUsage.convert_lcpu_to_new_kernel_formats# a<<K%<#% %r(c|j|jksp|j|jks`|j|jksP|j|jks@|j|jks0|j|jks |j|jks|j|jkrdS|j|jks0|j |j ks |j |j ks|j |j krdS|j dkr|j |j krdSdS)z Check if LVE data is changed :param old: Previous data :param new: Current data :return: True - changes, false - not TrNF)rrrr rrrrrrrr rr)r%rsrrs r&r7zLVEUsage.is_lve_data_changeds MS] * *w#'!!} --} --} --w#'!!v|s|++4 J#* $ $3#333yCI%%#/114  q SX%9%94ur(c ||_||j|j||_t |r||||_||||_ | Jd|dks Jd|j |j kr:ttd|j |j z z|z||zz |_ |j |j kr|j |j z |_ |j|jkr|j|jz |_|j|jkr|j|jz |_|j|jkr|j|jz |_|j|jkr9ttt$|j|jz z|z |_|jdkrA|j|jkr1tt|j|jz |z |_|j dkrd|_ n-|j |jcxkrdkrnn|j|_ d|_|j|_|j dks|j|jcxkrdkr8nn5|j|_|j s!|j|jcxkrdkr nnd|_ nd|_ |j|_|j|_|jdks|j|jcxkrdkr8nn5|j|_|js!|j|jcxkrdkr nnd|_nd|_|j|_|jdkr9|j|_|j|jcxkrdkrnn|j|_d|_t$|jz|_|jdkrd|_n-|j|jcxkrdkrnn|j|_d|_|j|_|j|_|jdks|j|jcxkrdkr8nn5|j|_|js!|j|jcxkrdkr nnd|_nd|_|j|_|jdks|j |jcxkrdkr>nn;|j|_ |js$|j |jcxkrdkrndSd|_dSdSdSd|_|j |_ dS)Nz)oldstats is not None, but time is unknownrz#oldstats is not None, but time is 0i'rN)!rrOrPrr rcrurrwrrraroundrr rr rrQrrrrrrrr rrr rrr)r%rsrrhzrr.s r&r6z LVEUsage.calcs! ::37DDTV[\\ 99 I&*&>&>sC&H&HD #%)%<%}s},,!$!>#"222$'$4s7G$G!00#&?S_#D |cl** #E" s|0K*Lt*S$T$T U U 1$$8ch&& #E38ch+>$*F$G$G H HDI >A  DNN ^ty , , , ,1 , , , , ,!YDNDNH >A  #(!>!>!>!>Q!>!>!>!>!> XDN> #cmsx&C&C&C&C!&C&C&C&C&C!"DN ]DN7 >A  CG!7!7!7!7a!7!7!7!7!7wDH> #cg&<&<&<&<1&<&<&<&<&#>#>#>Q#>#>#>#>#>DJ# % SZ(C(C(C(C!(C(C(C(C(C(C#$    % %(C(C !D DJJJr(cfdt|jzdzt|jzdzS)Nz (cpu_usage=z, mep=))r`rrrms r&__str__zLVEUsage.__str__<s/s4>222X=DH MPSSSr(c"t||Sr#rj)r%keys r& __getitem__zLVEUsage.__getitem__?stS!!!r(N)rDrErF LVEUSAGESLOTS __slots__rKrrRrgrnrurwrOr7r6rrrHr(r&rrEsIB$&&&&&&!!!Fq#q#q#fTTT"""""r()loggingrLrlvestats.core.pluginrrQrlrqSTATSr __author__ getLoggerlogr!objectrrHr(r&rs//////  i DPRUZZ]ccfll  g ##*,*,*,*,*,~*,*,*,Z{"{"{"{"{"v{"{"{"{"{"r(