LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2134|回复: 10

cpu利用率是怎么算出来的?

[复制链接]
发表于 2005-5-16 21:47:50 | 显示全部楼层 |阅读模式
打开系统监视器的时候,有一项是%cpu,这一项是怎么算出来的?
读取/proc/pid/stat里可以得到对应的pid的用户态执行时间和核心态执行时间,根据这两个jiffies值,
怎么算%CPU?
另外,内存呢?RSS和VSZ之间有没有什么关系?
我看系统中有一项是这样表示的:
内存使用:
总数:6.8MB
RSS:4.4MB
共享:3.8MB

那这个总数是怎么算出来的?

哪位高手给讲讲吧,谢谢啦
发表于 2005-5-16 22:02:53 | 显示全部楼层
每记下某一时刻CPU的运行时间,过了一段时间再记一些,然后相减再除以经过的时间。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-16 22:16:51 | 显示全部楼层
这样对于自己写的程序运行时,确实可以,
不过,对于象init一样的系统进程,想要知道他们的%cpu情况,怎么办?
回复 支持 反对

使用道具 举报

发表于 2005-5-16 22:26:17 | 显示全部楼层
CPU利用率只能这么算了,因为CPU没有瞬时利用率一说吧?要么是运行中要么是空闲。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-16 22:34:36 | 显示全部楼层
也是啊,所以我就感觉很奇怪噢

8过,用ps -aux命令,出来的结果里,就有每一个进程对应的%cpu

不知道ps中是怎么算的?
回复 支持 反对

使用道具 举报

发表于 2005-5-16 22:37:00 | 显示全部楼层
这个很正常啊,读的proc文件系统,每个进程的运行时间什么的都有。
回复 支持 反对

使用道具 举报

发表于 2005-5-17 12:39:47 | 显示全部楼层
我在论坛上帖过cpu利用率的程序的
你搜一下
是gtk界面的
回复 支持 反对

使用道具 举报

发表于 2005-5-17 13:04:50 | 显示全部楼层
/proc/stat中不是每个CPU都有四个值吗?man proc看看各自代表什么意思
回复 支持 反对

使用道具 举报

发表于 2005-5-17 15:24:58 | 显示全部楼层
有一个优先级最低的进程,用它运行的ticks除以系统总共的ticks,是一个一段时间的统计值。
//我们自己的东西是这么做的,linux怎么做的不知道。
回复 支持 反对

使用道具 举报

发表于 2005-5-17 20:05:43 | 显示全部楼层
看top的源码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表