我想以编程方式[在C中]为Linux中给定进程ID计算CPU使用率%。
如何获得给定进程的实时CPU使用率%?
为了进一步说明:
您需要从中解析出数据/proc/<PID>/stat
。这些是前几个字段(来自Documentation/filesystems/proc.txt
内核源代码):
Table 1-3: Contents of the stat files (as of 2.6.22-rc3)
..............................................................................
Field Content
pid process id
tcomm filename of the executable
state state (R is running, S is sleeping, D is sleeping in an
uninterruptible wait, Z is zombie, T is traced or stopped)
ppid process id of the parent process
pgrp pgrp of the process
sid session id
tty_nr tty the process uses
tty_pgrp pgrp of the tty
flags task flags
min_flt number of minor faults
cmin_flt number of minor faults with child's
maj_flt number of major faults
cmaj_flt number of major faults with child's
utime user mode jiffies
stime kernel mode jiffies
cutime user mode jiffies with child's
cstime kernel mode jiffies with child's
您可能在utime
和/或之后stime
。您还需要从中读取cpu
行/proc/stat
,如下所示:
cpu 192369 7119 480152 122044337 14142 9937 26747 0 0
这将告诉您已在各种类别中以累计量为单位使用的累计CPU时间。您需要对这条线上的值求和才能得到time_total
度量。
同时读取utime
并stime
进行过程中,你有兴趣,并阅读time_total
来自/proc/stat
。然后睡一秒钟左右,然后再次阅读它们。现在,您可以使用以下命令计算采样时间内该进程的CPU使用率:
user_util = 100 * (utime_after - utime_before) / (time_total_after - time_total_before);
sys_util = 100 * (stime_after - stime_before) / (time_total_after - time_total_before);
合理?
问题内容: 我想知道一个固定时间段内一个进程和所有子进程的CPU使用率。 更具体地说,这是我的用例: 有一个过程在等待用户执行程序的请求。为了执行程序,该进程调用子进程(一次最多5个),并且每个子进程执行这些已提交程序中的1个(假设用户一次提交了15个程序)。因此,如果用户提交15个程序,则将运行3批,每批5个子进程。子进程在完成程序执行后立即被杀死。 我想知道在执行这15个程序期间,父进程及其所
问题内容: 我正在尝试按以下方式计算Android中进程的CPU使用率,但是由于产生的输出,我不确定它是否正确。 要将吉菲转换为秒:吉菲/赫兹 第一步: 使用文件的第一个参数获取正常运行时间。 第二步: 从中获取每秒的时钟滴答数。 第三步: 从中获取过程参数花费的总时间 第四步: 从 Linux 2.6之后的时钟滴答声中除以sysconf(_SC_CLK_TCK)表示的值,获取进程的startti
我想知道cpu的uage,我试图通过'top'命令。 在此处输入图像描述 提前致谢
问题内容: 我正在尝试获取%的总CPU使用率。首先,我首先要说“ top”根本不会做,因为cpu转储之间会有延迟,它需要2个转储和几秒钟的时间,这使我的程序挂起(我不想给它自己的线程) 我尝试的下一件事情是“ ps”,它是即时的,但总的总数总是很高(超过20),当我实际上让我的cpu做某事时,它保持在20左右… 还有其他方法可以获取总的CPU使用率吗?超过一秒还是更长的时间都没有关系……但是更长的
问题内容: 关于如何使用/ proc / stat中的统计信息获取CPU利用率的文章和参考文献很多。但是,它们中的大多数仅使用7个以上的CPU统计信息中的四个(用户,nice,系统和空闲),而忽略了Linux2.6中存在的剩余jiffie CPU计数(iowait,irq,softirq)。 我的问题是:iowait / irq / softirq编号是否也计入前四个编号之一(用户/ nice /
问题内容: 有什么办法可以在Python中按进程名称获取PID? 例如,我需要获得通过。 问题答案: 你可以使用进程的名字来的PID 通过subprocess.check_output: 将运行命令为, 如果返回码非零,则会引发CalledProcessError。 要处理多个条目并转换为整数: 在[21]中:get_pid(“ chrome”) 或者通过标记获取单个pid: