如何在C中获得CPU使用率?

我想用C获取应用程序的总CPU使用率,就像我们在TaskManager中得到的总CPU使用量…我想知道…对于windows和linux ::当前所有进程的总CPU利用率.. ……正如我们在任务管理器中看到的那样。

这是特定于平台的:

  • 在Windows中,您可以使用GetProcessTimes()函数。
  • 在Linux中,您实际上可以只使用clock()

这些可用于测量两个时间间隔之间的CPU时间量。

编辑:

要获得CPU消耗(以百分比表示),您需要将CPU总时间除以操作系统看到的逻辑核心数,然后除以总挂钟时间:

 % CPU usage = (CPU time) / (# of cores) / (wall time) 

获取逻辑核心数也是特定于平台的:

  • Windows: GetSystemInfo()
  • Linux: sysconf(_SC_NPROCESSORS_ONLN)

在POSIX下,你需要getrusage(2)的ru_utime字段。 仅对调用进程使用RUSAGE_SELF,对所有已终止和等待(2)编辑的子进程使用RUSAGE_CHILDEN。 Linux也仅为调用线程支持RUSAGE_THREAD。 如果你想要系统时间,可以使用ru_stime,可以用ru_utime求和主动运行的总时间(不是挂起时间)。

它通常是特定于操作系统的。

你可以使用clock函数,返回一个clock_t (一些整数类型,可能long )。 在Linux系统上,它以微秒为单位测量CPU时间。

这就是我想要的东西。 以我的方式操纵它,我成功地运行它。

获取总CPU使用率