当前位置: 首页 > 面试题库 >

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

柳胜
2023-03-14
问题内容

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

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

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


问题答案:

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%

希望那些对你有帮助。



 类似资料:
  • 问题内容: 我的Go程序需要知道所有系统和用户进程的当前cpu使用率。 我如何获得? 问题答案: 我遇到了类似的问题,但从未找到轻量级的实现。这是我的解决方案的精简版,可以回答您的特定问题。我按照tylerl的建议对文件进行采样。您会注意到,我在两次采样之间等待3秒以匹配top的输出,但是在1或2秒的情况下我也取得了不错的结果。我在go例程中的循环中运行类似的代码,然后在需要其他go例程时访问cp

  • 问题内容: 是否有API可以获取Linux中可用的CPU数量?我的意思是,不使用/ proc / cpuinfo或任何其他sys-node文件… 我发现使用sched.h实现: 但是,使用通用库是否还没有更高的层次? 问题答案: https://linux.die.net/man/3/get_nprocs

  • 问题内容: 在Python中获取当前系统状态(当前CPU,RAM,可用磁盘空间等)的首选方式是什么?* nix和Windows平台的奖励积分。 似乎有几种方法可以从我的搜索中提取出来: 使用PSI之类的库(目前似乎尚未积极开发并且在多个平台上不受支持)或pystatgrab之类的库(自2007年以来一直没有活动,它似乎也不支持Windows)。 使用特定于平台的代码,例如对于* nix系统使用a

  • 问题内容: 如何在Linux系统中获取机器序列号和CPU ID? 示例代码受到高度赞赏。 问题答案: 这是Linux内核似乎使用的内容: 然后可以将其用作例如: 这篇Wikipedia文章中有关如何使用该指令的很好参考。 编辑 Wikipedia文章说,序列号是随Pentium III一起引入的,但是由于隐私问题,以后的型号中不再使用该序列号。在Linux系统上,您可以通过执行以下操作检查此功能(

  • 本文向大家介绍Linux下使用python调用top命令获得CPU利用率,包括了Linux下使用python调用top命令获得CPU利用率的使用技巧和注意事项,需要的朋友参考一下 本文定位:想通过python调用top命令获取cpu使用率但暂时没有思路的情况。 如果单纯为了获得cpu的利用率,通过top命令重定向可以轻松实现,命令如下: 或 这个就不解释了,不懂的朋友查询下top的帮助文档。这里要

  • 问题内容: 我想以编程方式[在C中]为Linux中给定进程ID计算CPU使用率%。 如何获得给定进程的实时CPU使用率%? 为了进一步说明: 我应该能够确定所提供的processid或进程的CPU使用率。 该进程不必是子进程。 我想要“ C”语言的解决方案。 问题答案: 您需要从中解析出数据。这些是前几个字段(来自内核源代码): 您可能在和/或之后。您还需要从中读取行,如下所示: 这将告诉您已在各