linux下如何获取cpu的利用率.docx

上传人:王** 文档编号:205263 上传时间:2023-04-15 格式:DOCX 页数:4 大小:36.52KB
下载 相关 举报
linux下如何获取cpu的利用率.docx_第1页
第1页 / 共4页
linux下如何获取cpu的利用率.docx_第2页
第2页 / 共4页
linux下如何获取cpu的利用率.docx_第3页
第3页 / 共4页
linux下如何获取cpu的利用率.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《linux下如何获取cpu的利用率.docx》由会员分享,可在线阅读,更多相关《linux下如何获取cpu的利用率.docx(4页珍藏版)》请在优知文库上搜索。

1、Iinux下如何获取cpu的利用率4Vproc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过ProC得到系统的信息,并可以改变内核的某些参数。”这里将介绍如何从/proc文件系统中获取与防火墙相关的一些性能参数,以及如何通过/proc文件系统修改内核的相关配置。1、从/proc文件系统获取相关的性能参数cpu使用率:/proc/stat内存使用情况:/proc/meminfo网络负载信息:procnetdev相应的计算方法:(摘自:什么是ProC文件系统,见参考资料)(1) 处理器使用率(2) 内存使用率

2、(3) 流入流出数据包(4) 整体网络负载这些数据分别要从procStat、/PrOC/net/dev、/proc/meminfo三个文件中提取。如里有问题或对要提取的数据不太清楚,可以使用manPrOC来查看proc文件系统的联机手册。(1)处理器使用率这里要从procstat中提取四个数据:用户模式(user)、低优先级的用户模式(nice)、内核模式(system)以及空闲的处理器时间(idle)。它们均位于procstat文件的第一行。CPU的利用率使用如下公式来计算。CPU利用率=100*(user+nice+system)/(user+nice+system+idle)(2)内存使

3、用率这里需要从/proc/meminfo文件中提取两个数据,当前内存的使用量(CnIenI)以及内存总量(amem)。内存使用百分比=100*(cmem/umem)(3)网络利用率为了得到网络利用率的相关数据,需要从procnetdev文件中获得两个数据:从本机输出的数据包数,流入本机的数据包数。它们都位于这个文件的第四行。性能收集程序开始记录下这两个数据的初始值,以后每次获得这个值后均减去这个初始值即为从集群启动开始从本节点通过的数据包。利用上述数据计算出网络的平均负载,方法如下:平均网络负载=(输出的数据包+流入的数据包)/22.通过/proc文件系统调整相关的内核配置允许ip转发/pro

4、c/sysnet/ipv4ip_forward禁止ping/proc/sysnet/ipv4icmp_echo_ignore_al1可以在命令行下直接往上述两个“文件”里工写/?来实现相关配置,如果写入0将取消相关配置。不过在系统重启以后,这些配置将恢复默认设置,所以,如果想让这些修改生效,可以把下面的配置直接写入etcprofile文件,或者其他随系统启动而执行的程序文件中。echo1/proc/sysnet/ipv4ip_forwardecho1/proc/sysnet/ipv4icmp_echo_ignore_al1这里计算CPU使用率是有问题的,需要使用上一状态的殖来计算正确的计算方法

5、是,等上一个时间:1、记录某个时刻CPU的使用情况2、等上一个时间段3、再记录此刻的CPU使用情况4、计算总的时间片把第一次的所有CPU使用情况求和,得到只把第二次的所有CPU使用情况求和,得到j2j2-jl得到这个时间段的所有时间片即total=j2-jl二第二次的所有列的和-第一次的所有列的和5、计算idle时间idle对应第五列的数据,用第二次的减去第一次的即可idle=第二次的第五列-第一次的第五列6、计算CPU使用率rate=(total-idle)/total在LinUX/Unix下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和

6、空闲系统进程执行的时间。平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间/CPU总的执行时问。IinuxC程序获取CPU使用率及内存使用情况想获取一下目标机运行时IinUX系统的硬件占用情况,写了这几个小程序,以后直接用了。方法就是读取PrOC下的文件来获取了。CPU使用率:procstat,内存使用情况procmeminfo看程序:*file:statusinfo,cbrief:从IinUX系统获取cpu及内存使用情况*version1.0*typedefstruct PACKED定义一个cpuoccupy的结构体charname20;定义一个char类型的数组名name有20个元

7、素unsignedintuser;定义一个无符号的int类型的USerunsignedintnice;定义一个无符号的int类型的niceunsignedintSySteni;定义一个无符号的int类型的systemunsignedintidle;定义一个无符号的int类型的idleCPU_OCCUPY;typedefstruct PACKED定义一个memoccupy的结构体charname20;定义一个char类型的数组名name有20个元素unsignedlongtotal;charname220;unsignedlongfree;mem_occupy;get_memoccupy(MEM

8、_OCCUPY*mem)对无类型get函数含有一个形参结构体类弄质指针0(FILE*fd;intn;charbuff256;MEM_OCCUPY*m;m=mem;fd=fopen(procmeminfo,r);fgets(buff, fgets (buff, fgets (buff, fgets (buff, sscanf (buff.sizeof(buff),sizeof(buff),sizeof(buff),sizeof(buff),“%s%u %s,;1717 l l d d d d / f f f f -&m-total,m-name2);fgets(buff,sizeof(buff)

9、,fd);从fd文件中读取长度为buff的字符串再存到起始地址为buff这个空间里sscanf(buff,%s,m-name2,m-free,m-name2);fclose(fd);关闭文件fdintcal_cpuoccupy(CPUJ)CCUPY*o,CPUJ)CCUPY*n)(unsignedlongod,nd;intcpu_use=0;od=(unsignedlong)(o-user+o-nice+o-system+o-idle);第一次(用户+优先级+系统+空闲)的时间再赋给Odnd=(unsignedlong)(-user+-nice+n-system+n-idle);/第二次(用户

10、+优先级+系统+空闲)的时间再赋给Odid=(unsignedlong)(-user-o-user);用户第一次和第二次的时间之差再赋给idsd=(unsignedlong)(-system-o-system);系统第一次和第二次的时间之差再赋给Sdif(nd-od)!=0)cpu_use=(int)(sd+id)*10000)/(nd-od);(用户+系统)乖IoO)除(第一次和好二次的时间差)再赋给g_cpu_usedelsecpuuse=0;/printf(,cpu:%unzz,cpu_use);returncpu_use;get_cpuoccupy(CPU_OCCUPY*cpust)对

11、无类型get函数含有一个形参结构体类弹的指针O(FILE*fd;intn;charbuff256;CPU_OCCUPY*cpu_occupy;cpu_occupy=cpust;fd=fopen(/PrOCstat”,r);fgets(buff,sizeof(buff),fd);ssscanf(buff,s%u%u%u%u,cpu_occupy-name,&cpu_occupy-user,&cpu_occupy-nice,&cpu_occupy-system,&cpu_occupy-idle);fclose(fd);intmain()(CPLOeCUPYcpu_statl;CPUJ)CCUPYcpu_stat2;MEM_OCCUPYmem_stat;intcpu;获取内存get_memoccupy(MEM_0CCUPY*)&mem_stat);第一次获取CPU使用情况get_cpuoccupy(CPU_OCCUPY*)&cpu_statl);sleep(10);第二次获取CPU使用情况get_cpuoccupy(CPU_OCCUPY*)&cpu_stat2);计算CPU使用率cpu=cal_cpuoccupy(CPU_OCCUPY*)&cpu_statl,(CPU_OCCUPY*)&cpu_stat2);return0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > linux/Unix相关

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!