如何从/ proc / pid / stat获取应用程序的总CPU使用率?

我想知道如何计算一个进程的总CPU使用率。

如果我这样做,我认为相关字段是(取自lindevdoc.org):cat

/proc/ _pid_

/stat

  1. 用户代码中花费的CPU时间(以吉比特为单位)
  2. 花费在内核代码中的CPU时间(以吉比特为单位)
  3. 用户代码中花费的CPU时间,包括来自子代的时间
  4. 花费在内核代码上的CPU时间,包括来自子代的时间

那么总花费时间是14到17字段的总和?

回答:

制备

要计算特定进程的CPU使用率,您需要执行以下操作:

  1. /proc/uptime

    • #1 系统正常运行时间(秒)

  2. /proc/[PID]/stat

    • #14utime-用户代码中花费的CPU时间,以 时钟滴答数为单位
    • #15stime-花费在内核代码中的CPU时间,以 时钟周期为单位
    • #16cutime- 花费在用户代码中 CPU时间(以 时钟滴答为单位
    • #17cstime- CPU时间花费在内核代码中(以 时钟滴答为单位
    • #22starttime-进程开始的时间,以 时钟滴答为单位

  3. 系统的赫兹(每秒的时钟滴答数)。

    • 在大多数情况下,getconf CLK_TCK可用于返回时钟滴答数。
    • sysconf(_SC_CLK_TCK)C函数调用也可以用来返回赫兹值。


计算方式

首先,我们确定该过程花费的总时间:

total_time = utime + stime

我们还必须决定是否要包括子进程中的时间。如果这样做,则将这些值添加到total_time

total_time = total_time + cutime + cstime

接下来,我们获取自该过程开始以来经过的总时间(以 秒为单位)

seconds = uptime - (starttime / Hertz)

最后,我们计算CPU使用率百分比:

cpu_usage = 100 * ((total_time / Hertz) / seconds)

以上是 如何从/ proc / pid / stat获取应用程序的总CPU使用率? 的全部内容, 来源链接: utcz.com/qa/430907.html

回到顶部