进程CPU使用率实时统计

手头有这么个需求,需要绘制出我们项目现网运行每个进程的CPU消耗的动态曲线。公司内部有一个机器运行状态监控平台,提供了强大的定制功能,只要把每分钟的的CPU占用率数据提交上去就可以自动绘制出图表展示出来,那么,现在的问题就是如何取得每分钟的CPU占用率数据了。

第一版我采用了这样的方法,每分钟运行一次ps aux|grep xxx 然后取得这个结果中的CPU占用率,然而得到的结果是这样的

第一版的CPU占用率曲线

可以看到,得到的曲线是平的,这显然不合理,试了一下ps aux|grep xxx发现确实每次取CPU占用率都是一样的,应该是ps aux这个指令取出的CPU占用率是一个平均值,于是网上搜索了下进程CPU占用率统计,发现已经有成熟的统计方法的,思路是通过cat /proc/stat获取系统运行至今消耗的总CPU时间片,通过cat /proc/xxx/stat 获取进程消耗的CPU时间片,然后没15s取一次值,做差值计算百分率,1分钟取4次取最大值作为这一分钟的CPU占用率,得到的CPU占用率曲线如下

第二版的CPU占用率曲线

这个结果显然靠谱了很多

Loading Disqus comments...
Table of Contents