CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

linux下如何获取cpu的利用率??或用什么系统调用?

楼主savagegan(shusheng gan)2006-07-01 23:35:28 在 Linux/Unix社区 / 程序开发区 提问

如题:想要知道当前cpu的负荷(利用率),请问调用什么函数可以得到??  
  好像/proc/loadavg的是一段时间的平均值,我想得到实时的,就像用top命令得到的那样  
  先谢了,本人菜,请高手说详细些:) 问题点数:20、回复次数:6Top

1 楼hundlom(托克维尔)回复于 2006-07-02 05:14:12 得分 0

就读/proc目录下的文件,记得在那里看过说   top也是从那里读的。Top

2 楼liumangxiong(陈世奎)回复于 2006-07-02 11:30:52 得分 20

(1)   处理器使用率    
  (2)   内存使用率    
  (3)   流入流出数据包    
  (4)   整体网络负载    
  这些数据分别要从/proc/stat、/proc/net/dev、/proc/meminfo三个文件中提取。如里有问题或对要提取的数据不太清楚,可以使用man   proc来查看proc文件系统的联机手册。    
  (1)   处理器使用率    
  这里要从/proc/stat中提取四个数据:用户模式(user)、低优先级的用户模式(nice)、内核模式(system)以及空闲的处理器时间(idle)。它们均位于/proc/stat文件的第一行。CPU的利用率使用如下公式来计算。    
  CPU利用率   =   100   *(user   +   nice   +   system)/(user   +   nice   +   system   +   idle)    
  (2)   内存使用率    
  这里需要从/proc/meminfo文件中提取两个数据,当前内存的使用量(cmem)以及内存总量(amem)。    
  内存使用百分比   =   100   *   (cmem   /   umem)    
  (3)网络利用率    
  为了得到网络利用率的相关数据,需要从/proc/net/dev文件中获得两个数据:从本机输出的数据包数,流入本机的数据包数。它们都位于这个文件的第四行。    
  性能收集程序开始记录下这两个数据的初始值,以后每次获得这个值后均减去这个初始值即为从集群启动开始从本节点通过的数据包。    
  利用上述数据计算出网络的平均负载,方法如下:    
  平均网络负载   =   (输出的数据包+流入的数据包)   /   2    
   
  Top

3 楼gunmanpan(mu)回复于 2006-07-13 14:10:44 得分 0

有没有代码参考?关注Top

4 楼ultrahongchang(红龙)回复于 2006-07-13 16:15:41 得分 0

看TOP的代码就知道该怎么做了Top

5 楼wzzww(无知者无畏)(此人已死)回复于 2006-07-14 12:03:18 得分 0

liumangxiong(陈世奎)   (   )   说得差不多了,  
  只是计算办法完全错了,文件里面是一个增量,每过一个时间间隔对应的项使用了CPU都会有增加,要算百分比,得用上上一次的状态值Top

6 楼wanglei051(淡蓝的云)回复于 2006-07-14 17:43:30 得分 0

我只会用gtopTop

相关问题

关键词

得分解答快速导航

  • 帖主:savagegan
  • liumangxiong

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo