我正在try 以%为单位计算cpu的总使用率.首先,我应该说"top"根本不行,因为cpu转储之间有延迟,它需要2次转储和几秒钟,这会挂起我的程序(我不想给它自己的线程)
接下来我try 的是"ps",它是即时的,但总是给出非常高的总数(20+),当我真正让我的cpu做某事时,它保持在20左右...
有没有其他方法可以让我得到总的cpu使用率?不管是超过一秒还是更长的时间...不过,时间越长越好.
我正在try 以%为单位计算cpu的总使用率.首先,我应该说"top"根本不行,因为cpu转储之间有延迟,它需要2次转储和几秒钟,这会挂起我的程序(我不想给它自己的线程)
接下来我try 的是"ps",它是即时的,但总是给出非常高的总数(20+),当我真正让我的cpu做某事时,它保持在20左右...
有没有其他方法可以让我得到总的cpu使用率?不管是超过一秒还是更长的时间...不过,时间越长越好.
cat/proc/stat
我同意上面的回答.该文件中的cpu行给出了系统进行不同类型处理所花费的"jiffies"总数.
你需要做的是读取这个文件的两个读数,按你需要的时间间隔分开.这些数字是递增的值(取决于整数滚动),因此要获得%的cpu,您需要计算在您的时间间隔内经过的jiffie数量,与花在工作上的jiffie数量相比.
例如
cpu 4698 591 262 8953 916 449 531
总计(所有值之和)=16400
work_jiffies_1=(用户、nice、系统的总和=前三个值)=5551
14:00:05你有
cpu 4739 591 289 9961 936 449 541
总数2=17506
工作时间2=5619
因此,这段时间的cpu使用率百分比为:
工作时间=工作时间2-工作时间1=68
期间内的总费用=总费用2-总费用1=1106
%cpu=工作周期/总工作周期*100=6.1%
希望这能有所帮助.