红联Linux门户
Linux帮助

ps命令中的%CPU字段和top命令中的%CPU字段

发布时间:2016-02-18 15:46:25来源:linux网站作者:AllInCode

一、ps命令中%CPU字段的含义
1、"man ps"中的解释
CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process.
This is not ideal,and it does not conform to the standards that ps otherwise conforms to.CPU usage is unlikely to add up to exactly 100%.

2、计算模型
%CPU=(进程的生命周期中占用CPU的时间)*100/(进程的生命周期代表的时间长度)
比如一个进程的生命周期的时间长度是1000s,然后在这1000s内占用CPU的时间是500s,那么
%CPU=500*100/1000=50
即最后的结果表示50%

3、具体计算过程
1)获取数据
主要是从/proc/uptime文件和/proc/[PID]/stat文件获取相关数据
2)计算
主要根据“2、计算模型”的思路利用获得的数据进行计算


二、top命令中%CPU字段的含义
根据"man top"中的解释:
"The task's share of the elapsed CPU time since the last screen update, expressed as a percentage of total CPU time."

top命令中的%CPU字段的含义跟ps命令中的%CPU字段的含义不一样
top命令中的%CPU字段表示:在一个固定的间隔时间内,某个进程使用的CPU时间占总CPU时间(即这段间隔时间)的比值。[在Window操作系统下的资源管理器中的CPU字段含义也是如此]


三、手动计算top命令中的%CPU字段
1、利用ps
确定一个间隔时间,在间隔时间的开始处,执行ps命令,获取某个进程在开始处已经使用的CPU时间;在间隔时间的结束处,执行ps命令,获取某个进程在结束处已经使用的CPU时间。
间隔时间内进程使用的CPU时间=结束处使用的CPU时间-开始处使用的CPU时间
%CPU=间隔时间内进程使用的CPU时间*100/CPU总时间(即间隔时间长度)

2、利用/proc下的数据
其实ps命令的数据来自于/proc目录下的文件,因而如果直接使用/proc下的数据也是可以实现“手动计算top命令中的%CPU字段”的目标的。


本文永久更新地址:http://www.linuxdiyf.com/linux/18184.html