我正在尝试获取 CPU 总使用率(以百分比为单位)。首先我应该首先说“top”根本不行,因为CPU转储之间存在延迟,它需要2次转储和几秒钟,这会挂起我的程序(我不想给它自己的线程)
接下来我尝试的是“ps”,它是即时的,但总是给出非常高的总数(20+),当我真正让我的CPU做某事时,它保持在大约20...
还有其他方法可以获取 cpu 使用率吗?如果超过一秒或更长的时间段并不重要......不过,更长的时间段会更有用。
猫 /proc/stat
http://www.linuxhowtos.org/System/procstat.htm http://www.linuxhowtos.org/System/procstat.htm
我同意上面这个答案。该文件中的 cpu 行给出了系统执行不同类型处理所花费的“jiffies”总数。
您需要做的是对该文件进行两次读取,按照您需要的时间间隔进行间隔。这些数字是递增的值(受整数翻转影响),因此要获得 %cpu,您需要计算在您的时间间隔内经过了多少 jiffies,以及用于工作的 jiffies 数量。
例如
假设在 14:00:00 你有
中央处理器 4698 591 262 8953 916 449 531
Total_jiffies_1 =(所有值的总和)= 16400
work_jiffies_1 =(用户、nice、系统的总和 = 前 3 个值)= 5551
在 14:00:05 你有
中央处理器 4739 591 289 9961 936 449 541
总计_jiffies_2 = 17506
work_jiffies_2 = 5619
所以这段时间内的 %cpu 使用率是:
工作周期 = work_jiffies_2 - work_jiffies_1 = 68
期间总计 = 总计 jiffies_2 - 总计 jiffies_1 = 1106
%cpu = 周期内工作量 / 周期内总工作量 * 100 = 6.1%
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)