如何从/ proc / pid / stat获取应用程序的总CPU使用率?
我想知道如何计算一个进程的总CPU使用率。
如果我这样做,我认为相关字段是(取自lindevdoc.org):cat
/proc/ _pid_
/stat
- 用户代码中花费的CPU时间(以吉比特为单位)
- 花费在内核代码中的CPU时间(以吉比特为单位)
- 用户代码中花费的CPU时间,包括来自子代的时间
- 花费在内核代码上的CPU时间,包括来自子代的时间
那么总花费时间是14到17字段的总和?
回答:
制备
要计算特定进程的CPU使用率,您需要执行以下操作:
/proc/uptime
#1
系统正常运行时间(秒)
/proc/[PID]/stat
#14
utime
-用户代码中花费的CPU时间,以 时钟滴答数为单位#15
stime
-花费在内核代码中的CPU时间,以 时钟周期为单位#16
cutime
- 花费在用户代码中 CPU时间(以 时钟滴答为单位 )#17
cstime
- CPU时间花费在内核代码中(以 时钟滴答为单位 )#22
starttime
-进程开始的时间,以 时钟滴答为单位
- 系统的赫兹(每秒的时钟滴答数)。
- 在大多数情况下,
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