小编典典

如何使用C ++在Linux中获得CPU总使用率

linux

我正在尝试获取%的总CPU使用率。首先,我首先要说“
top”根本不会做,因为cpu转储之间会有延迟,它需要2个转储和几秒钟的时间,这使我的程序挂起(我不想给它自己的线程)

我尝试的下一件事情是“ ps”,它是即时的,但总的总数总是很高(超过20),当我实际上让我的cpu做某事时,它保持在20左右…

还有其他方法可以获取总的CPU使用率吗?超过一秒还是更长的时间都没有关系……但是更长的时间会更有用。


阅读 320

收藏
2020-06-02

共1个答案

小编典典

cat / proc / stat

http://www.linuxhowtos.org/System/procstat.htm

我同意以上答案。该文件中的cpu行提供了系统在执行不同类型的处理时所花费的“ jiffies”总数。

您需要做的是读取此文件的2个读数,并按需要的时间间隔分隔。数字是递增的值(取决于整数翻转),因此要获取%cpu,您需要计算在您的时间间隔内经过了多少次抖动,而花了多少次进行工作。

例如,假设您在14:00:00

cpu 4698 591 262 8953 916 449 531

total_jiffies_1 =(所有值的总和)= 16400

work_jiffies_1 =(用户,nice,系统之和=前3个值)= 5551

在14:00:05

cpu 4739 591 289 9961 936 449 541

total_jiffies_2 = 17506

work_jiffies_2 = 5619

因此,此期间的%cpu用法为:

work_over_period = work_jiffies_2-work_jiffies_1 = 68

total_over_period = total_jiffies_2-total_jiffies_1 = 1106

%cpu = work_over_period / total_over_period * 100 = 6.1%

希望那些对你有帮助。

2020-06-02