grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a q©j¦Aã @szddlZddlZddlZddlZddlmZmZmZmZm Z m Z m Z m Z ddl mZe ejd¡ZdedkrrendZdZeeefZe e¡Zd"eee eee ed œd d „ZGd d „d e ƒZGdd„dƒZGdd„deƒZGdd„deƒZGdd„deƒZ Gdd„deƒZ!Gdd„deƒZ"Gdd„deƒZ#Gdd„deƒZ$Gdd„deƒZ%Gd d!„d!eƒZ&e&e"e#ee e!ee%e$g Z'dS)#éN)ÚAnyÚCallableÚ DefaultDictÚIterableÚListÚ NamedTupleÚOptionalÚTuple)ÚHandleÚ SC_CLK_TCKéèédz/sys/class/hwmonó)ÚrootfdÚstatfileÚdefaultÚkeyÚreturnc Csþztj|tj|d�}Wnty*YdS0zlzt |d¡}WnLtyŠ}z4|jtjkrht  d||¡WYd}~Wt  |¡dSd}~00Wt  |¡n t  |¡0|rÔ|  |¡t |ƒ}|  d|¡}|||…}zt |ƒpà|WSt�yøYdS0dS)N©Údir_fdézFailed to read %s: %só )ÚosÚopenÚO_RDONLYÚFileNotFoundErrorÚreadÚOSErrorÚerrnoZENODEVÚloggerZwarningÚcloseÚindexÚlenÚintÚ ValueError) rrrrÚfdÚdataÚeÚstartÚend©r*ú3/usr/lib/python3.9/site-packages/cockpit/samples.pyÚ read_int_files*    þ  r,c@s.eZdZUeed<eed<eed<eed<dS)ÚSampleDescriptionÚnameZunitsZ semanticsÚ instancedN)Ú__name__Ú __module__Ú __qualname__ÚstrÚ__annotations__Úboolr*r*r*r+r-7s r-c@s*eZdZUeeed<eddœdd„ZdS)ÚSamplerÚ descriptionsN©ÚsamplesrcCst‚dS)N)ÚNotImplementedError)Úselfr9r*r*r+ÚsampleAszSampler.sample)r0r1r2rr-r4ÚSamplesr<r*r*r*r+r6>s  r6c @s�eZdZeddddd�eddddd�eddddd�eddddd�ed ddd d�ed ddd d�ed ddd d�ed ddd d�gZeddœdd„ZdS)Ú CPUSamplerzcpu.basic.niceÚmillisecÚcounterF©r/zcpu.basic.userzcpu.basic.systemzcpu.basic.iowaitz cpu.core.niceTz cpu.core.userzcpu.core.systemzcpu.core.iowaitNr8c CsBtdƒ��"}|D�] }| d¡s"q| ¡dd…\}}}}}} |dd…pLd} | rÀd} t|ƒt|| ›d�| <t|ƒt|| ›d�| <t|ƒt|| ›d�| <t| ƒt|| ›d �| <qd } t|ƒt|| ›d�<t|ƒt|| ›d�<t|ƒt|| ›d�<t| ƒt|| ›d �<qWdƒn1�s40YdS) Nz /proc/statÚcpuéézcpu.corez.nicez.userz.systemz.iowaitz cpu.basic)rÚ startswithÚsplitr#Ú MS_PER_JIFFY) r;r9ÚstatÚlinerBÚuserÚniceÚsystemZ_idleZiowaitZcoreÚprefixr*r*r+r<Rs"   zCPUSampler.sample©r0r1r2r-r7r=r<r*r*r*r+r>Es÷ r>c @sXeZdZeddddd�eddddd�eddddd�eddddd�gZed d œd d „Zd S) Ú MemorySamplerú memory.freeÚbytesÚinstantFrAú memory.usedú memory.cachedúmemory.swap-usedNr8cCs’tdƒ�}dd„|Dƒ}Wdƒn1s,0Yd|d|d<d|d|d|d <d|d |d |d <d|d |d|d<dS)Nz /proc/meminfocSs,i|]$}| dd¡\}}|t| d¡ƒ“qS)ú:éz kB )rFr#Ústrip)Ú.0rIÚkÚvr*r*r+Ú qrz(MemorySampler.sample..rZMemFreerPZMemTotalZ MemAvailablerSZBuffersZCachedrTZ SwapTotalZSwapFreerU)r)r;r9ZmeminfoÚitemsr*r*r+r<os  ,zMemorySampler.samplerNr*r*r*r+rOgs ürOc@sreZdZUdZeeeed<eddddd�gZ e e e edœd d „ƒZ e e ed œd d „ƒZeddœdd„ZdS)ÚCPUTemperatureSamplerNÚsensorsúcpu.temperatureZcelsiusrRTrA)rrc csJzJtjdtj|d��$}t |d¡ ¡ ¡}Wdƒn1s>0YWnty^YdS0|dkrrdd„}n.|dkr€d}n |dkrŽd}n|d vrœd}ndSt |¡D]š}|  d ¡sºqª|�r>zX|  d d ¡}tj|tj|d��$}t |d¡ ¡ ¡}Wdƒn1�s 0YWnt�y0YqªYn0||ƒ�s>qª|VqªdS) Nr.rrZatk0110cSs|dkS)NzCPU Temperaturer*)Úlabelr*r*r+ÚŒrz:CPUTemperatureSampler.detect_cpu_sensors..Z cpu_thermalZcoretemp)Zk8tempZk10tempZ_inputZ_label) r rrrrÚdecoderXrÚlistdirÚendswithÚreplace)rr%r.Ú predicateZinput_filenameZlabel_filenamerar*r*r+Údetect_cpu_sensors�s66    8  z(CPUTemperatureSampler.detect_cpu_sensors)rc csÄzt ttjtjB¡}Wnty,YdS0|�~t |¡D]b}tj|tjtjB|d��6}t  |¡D]}t›d|›d|›�VqfWdƒq>1s–0Yq>Wdƒn1s¶0YdS)Nrú/) r rÚ HWMON_PATHrrÚ O_DIRECTORYrrdr^rh)Ztop_fdZ hwmon_nameZ subdir_fdÚsensorr*r*r+Ú scan_sensors¬s z"CPUTemperatureSampler.scan_sensorsr8c CsŠ|jdurtt ¡ƒ|_|jD]f}t|ƒ�:}t| ¡ ¡ƒ}|dkrVWdƒdSWdƒn1sj0Y|d|d|<qdS)Nrr r`)r_Úlistr^rmrr#rrX)r;r9Z sensor_pathrlZ temperaturer*r*r+r<¹s   0zCPUTemperatureSampler.sample)r0r1r2r_rrr3r4r-r7Ú staticmethodr#rrhrmr=r<r*r*r*r+r^ys ÿ* r^c @sXeZdZeddddd�eddddd�eddddd�ed dddd�gZed d œd d „Zd S)Ú DiskSamplerú disk.all.readrQr@FrAúdisk.all.writtenú disk.dev.readTúdisk.dev.writtenNr8c Cstdƒ�æ}d}d}|D]¸}| ¡ ¡}|d}|d}|d} |d} |dkrPq| d¡r\q|dd…dvrz|d  ¡rzq| d ¡rŽd |vrŽqt| ƒd } t| ƒd } || 7}|| 7}| |d |<| |d|<q||d<||d<Wdƒn1sô0YdS)Nú/proc/diskstatsrééé Ú9zdm-)ÚsdZhdZvdéÿÿÿÿZnvmeÚpérsrtrqrr)rrXrFrEÚisdigitr#) r;r9Ú diskstatsZall_read_bytesZall_written_bytesrIÚfieldsZ dev_majorÚdev_nameZnum_sectors_readZnum_sectors_writtenÚ read_bytesZ written_bytesr*r*r+r<Îs2      zDiskSampler.samplerNr*r*r*r+rpÆs ürpc @s†eZdZUeddddd�eddddd�eddddd�eddddd�ed d d dd�ed d ddd�gZdZeeed<e ddœdd„Z dS)Ú CGroupSamplerúcgroup.memory.usagerQrRTrAúcgroup.memory.limitúcgroup.memory.sw-usageúcgroup.memory.sw-limitúcgroup.cpu.usager?r@úcgroup.cpu.sharesÚcountNÚ cgroups_v2r8c Cs´|jdurtj d¡|_|jrÐd}t |¡D] \}}}}| |d¡}|sJq,t|ddƒ|d|<t|dƒ|d|<t|d dƒ|d |<t|d ƒ|d |<t|d ƒ|d|<t|dddd�}|r,|d|d|<q,nàd}t |¡D]j\}}}}| |d¡}|süqÞt|ddƒ|d|<t|dƒ|d|<t|ddƒ|d |<t|dƒ|d |<qÞd} t | ¡D]V\}}}}| | d¡}|�sz�qXt|dƒ|d|<t|dƒ} | �rX| d|d|<�qXdS)Nz!/sys/fs/cgroup/cgroup.controllersz/sys/fs/cgroup/Úzmemory.currentrr„z memory.maxr…zmemory.swap.currentr†zmemory.swap.maxr‡z cpu.weightr‰zcpu.stats usage_usec)rr rˆz/sys/fs/cgroup/memory/zmemory.usage_in_byteszmemory.limit_in_byteszmemory.memsw.usage_in_byteszmemory.memsw.limit_in_bytesz/sys/fs/cgroup/cpu/z cpu.sharesz cpuacct.usagei@B)r‹rÚpathÚexistsÚfwalkrfr,) r;r9Zcgroups_v2_pathr�Ú_rÚcgroupZ usage_usecZ memory_pathZcpu_pathZ usage_nsecr*r*r+r<sD     zCGroupSampler.sample) r0r1r2r-r7r‹rr5r4r=r<r*r*r*r+rƒøs ú rƒc@s|eZdZejdejd�Zeddddd�eddddd�gZe e e d œd d „ƒZ e e e e e fd œd d „ƒZeddœdd„ZdS)Ú CGroupDiskIOs:\bread_bytes: (?P\d+).*\nwrite_bytes: (?P\d+))Úflagsúdisk.cgroup.readrQr@TrAúdisk.cgroup.written)r%rcCsVtjdtj|d��0}t |d¡ ¡ ¡}|dd…WdƒS1sH0YdS)Nr‘rié)r rrrrrcrX)r%Z cgroup_fdÚ cgroup_namer*r*r+Úget_cgroup_name9szCGroupDiskIO.get_cgroup_namecCsˆtjdtj|d��b}t |d¡}t tj|¡}|rdt |  d¡ƒ}t |  d¡ƒ}||fWdƒSWdƒdS1sz0YdS)NÚiorirÚwrite)rr) r rrrrÚreÚsearchr’ÚIO_REr#Úgroup)r%Zio_fdr&ÚmatchÚ proc_readÚ proc_writer*r*r+Ú get_proc_ioAs zCGroupDiskIO.get_proc_ioNr8c Cst dtjtjB¡�Þ}|d}|d}t |¡D]²}|ddks0|ddkrNq0zNtj|tj|d��(}| |¡}| |¡\}} Wdƒn1s�0YWnt t t fy¸Yq0Yn0|  |d¡|||<|  |d¡| ||<q0Wdƒn1sø0YdS)Nz/procr”r•rÚ0ryr) r rrrrkrdÚO_PATHr˜r¢rÚPermissionErrorÚProcessLookupErrorÚget) r;r9Zproc_fdZreadsZwritesr�Zpid_fdr—r r¡r*r*r+r<Os 0 zCGroupDiskIO.sample)r0r1r2r›ÚcompileÚSr�r-r7ror#r3r˜r r¢r=r<r*r*r*r+r’2sþ r’c@s<eZdZeddddd�eddddd�gZeddœd d „ZdS) ÚNetworkSamplerúnetwork.interface.txrQr@TrAúnetwork.interface.rxNr8cCsˆtdƒ�l}|D]V}| ¡}|dddkr,q|ddd…}t|dƒ|d|<t|dƒ|d|<qWdƒn1sz0YdS) Nz /proc/net/devrr{rVrWr¬rxr«)rrFr#)r;r9Znetwork_samplesrIr€Zifacer*r*r+r<js zNetworkSampler.samplerNr*r*r*r+rªdsþrªc@s<eZdZeddddd�eddddd�gZeddœd d „ZdS) Ú MountSamplerú mount.totalrQrRTrAú mount.usedNr8c CsØtdƒ�¼}|D]¦}|ddkr q| ¡^}}}}}d|vrJd| d¡vrJqd|vr\d|vr\qzt |¡} Wnty€YqYn0| j} | | j} | |d |<| | | j|d |<qWdƒn1sÊ0YdS) Nz /proc/mountsrriz/loopÚroú,z revokefs-fuseZflatpakr®r¯)rrFrÚstatvfsrÚf_frsizeÚf_blocksÚf_bfree) r;r9ZmountsrIZfs_specZfs_fileZ _fs_vfstypeZ fs_mntoptsZ_restÚresZfrsizeÚtotalr*r*r+r<~s"      zMountSampler.samplerNr*r*r*r+r­xsþr­c@s<eZdZeddddd�eddddd�gZeddœd d „ZdS) Ú BlockSamplerúblock.device.readrQr@TrAúblock.device.writtenNr8c Cs€tdƒ�d}|D]N}| ¡ ¡^ }}}}}}}}}}}t|ƒd|d|<t|ƒd|d|<qWdƒn1sr0YdS)Nrur}r¹rº)rrXrFr#)r;r9rrIr�r�Z sectors_readZsectors_writtenr*r*r+r<žs  "zBlockSampler.samplerNr*r*r*r+r¸˜sþr¸)Nr)(rZloggingrr›Útypingrrrrrrrr Zcockpit._vendor.systemd_ctypesr ÚsysconfÚ sysconf_namesZUSER_HZrGrjr3r=Z getLoggerr0rr#rQr,r-r6r>rOr^rprƒr’rªr­r¸ZSAMPLERSr*r*r*r+Ús@(    "M2:2 ÷