• 全部
...

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

savagegan 2006-07-01 11:35:28
如题:想要知道当前cpu的负荷(利用率),请问调用什么函数可以得到??
好像/proc/loadavg的是一段时间的平均值,我想得到实时的,就像用top命令得到的那样
先谢了,本人菜,请高手说详细些:)
...全文
给本帖投票
4385 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
无知者无谓 2006-07-14
  • 打赏
  • 举报
回复
liumangxiong(陈世奎) ( ) 说得差不多了,
只是计算办法完全错了,文件里面是一个增量,每过一个时间间隔对应的项使用了CPU都会有增加,要算百分比,得用上上一次的状态值
wanglei051 2006-07-14
  • 打赏
  • 举报
回复
我只会用gtop
ultrahongchang 2006-07-13
  • 打赏
  • 举报
回复
看TOP的代码就知道该怎么做了
gunmanpan 2006-07-13
  • 打赏
  • 举报
回复
有没有代码参考?关注
  • 打赏
  • 举报
回复
(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

hundlom 2006-07-02
  • 打赏
  • 举报
回复
就读/proc目录下的文件,记得在那里看过说 top也是从那里读的。

23,215

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部