Chinaunix首页 | 论坛 | 博客
  • 博客访问: 82237
  • 博文数量: 18
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 85
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-18 09:53
文章分类
文章存档

2015年(18)

我的朋友

分类: LINUX

2015-05-25 16:40:37

写在前面:
    所谓cpu占用率需要定义一个时间段才有意义,因为如果细化到很小很小的时刻,cpu占用率要么0% 要么100%,就完全没有意义了,而这个时间是当前时刻前的1s、3s、5s、还是到刚开机这个看具体情况了。

在linux系统下,一般我们经常通过ps -aux以BSD风格显示进程的信息,同时可以通过其得到每个进程CPU占用率。
    方法1:ps -aux | awk '{sum+=$3} END{print sum}'    //既是将ps -aux的第三列(所有进程cpu利用率求和)。
    存在问题:1 ps -aux看的是所有用户状态的进程 init进程之后启动的进程,缺少系统自身占用cpu的数据。
                    2 ps 显示的cpu占用率为进程从创建起,到目前的平均cpu占用率,如果系统中的进程跑的时间都较长,则可能看的不是我们要看的信息。
    方法2:top -n 2  -d 1 | grep Cpu    //思路就是获取top第二次刷屏的数据
    通过这个命令,我们同样能获得cpu的信息,-n 2表示top的信息刷2次,因为top信息第一次显示的为系统开机到当前时刻的平均值,这个我觉得意义不大,-d 表示刷新时间,默认是3,我觉得慢,注意太快top会对目前数据有较大影响(1s的话cpu占用基本为0的),这个看我们想求cpu多久内的平均值了。(数据有了,sed awk 处理处理就可以了)。获取实时cpu利用率可行的方式。
    方法3:分析/proc/stat,从中获取cpu占用率等信息,该文件是从系统启动开始到当前的平均值,可以做系统分析等用处,用户进程用了多少cpu时间,系统用了多少等,并且此文件因各个内核版本很多都有改动,需要小心注意下。
    方法4:通过系统api自己计算(略)。

以上前3种方式均测试了下,如有不正或更好的方式希望告诉下O(∩_∩)O~

阅读(5428) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~