linux - cutime 和 cstime jiffies 是否也包括子进程?

标签 linux proc stat

在文件 /proc/[PID]/stat 中,值 cutimecstime(该文件的 14 和 15 个元素) jiffies 带有子进程,这是否意味着进程的子进程?

int     cutime;                   /** user mode jiffies with childs **/
int     cstime;                   /** kernel mode jiffies with childs **/

这是否意味着 jiffies 也包括该进程的子进程?

最佳答案

cuttime 和 cstime 的含义记录在 man 5 proc

cutime

Amount of time that this process’s waited-for children have been scheduled in user mode, measured in clock ticks...

cstime

Amount of time that this process’s waited-for children have been scheduled in kernel mode, measured in clock ticks...

utimestime 测量没有子进程创建的进程的 CPU 时间。

cutimecstime 是该进程创建的所有子进程(及其子进程...)的 CPU 时间总和。它不包括此进程的 utimestime,仅包括子进程的时间。

请注意,当进程使用 CPU 时,utimectime 会在线更新,但 cutimecstime 会更新当子进程退出并且进程为该子进程调用 wait 时。

编辑 - @txs 的实验,因为 @txs 不相信:

用于显示进程统计信息的简单脚本:

$ cat ./procstat.sh 6668
while sleep 1
do
   cat /proc/$1/stat | awk '{ print "utime:", $14, "stime:", $15, "cutime:" $16, "cstime:", $17 }'
done

两个终端,一个正在运行脚本,另一个执行耗时的处理。我测量了 bash 进程。我在测量的 bash 中开始了无限循环。 utime不断增加。然后我中断循环并启动子 bash 进程并在子进程中运行无限循环。什么都没有改变,但是当我中断进程并退出子bash时,可爱的时间立即改变了。

 $ ps                           +
   PID TTY          TIME CMD    |
 10178 pts/2    00:00:00 bash   |
 10197 pts/2    00:00:00 ps     |
                                |  $ ./procstat.sh 10178
                                |  utime: 2 stime: 1 cutime:1 cstime: 3
                                |  utime: 2 stime: 1 cutime:1 cstime: 3
                                |  utime: 2 stime: 1 cutime:1 cstime: 3
                                |  utime: 3 stime: 1 cutime:1 cstime: 3
                                |  utime: 3 stime: 1 cutime:1 cstime: 3
                                |  utime: 3 stime: 1 cutime:1 cstime: 3
 $ while true; do true; done    |  utime: 49 stime: 1 cutime:1 cstime: 3
                                |  utime: 137 stime: 1 cutime:1 cstime: 3
                                |  utime: 209 stime: 1 cutime:1 cstime: 3
                                |  utime: 296 stime: 1 cutime:1 cstime: 3
                                |  utime: 391 stime: 1 cutime:1 cstime: 3
 ^C                             |  utime: 477 stime: 1 cutime:1 cstime: 3
                                |  utime: 521 stime: 1 cutime:1 cstime: 3
                                |  utime: 521 stime: 1 cutime:1 cstime: 3
                                |  utime: 521 stime: 1 cutime:1 cstime: 3
 $ bash                         |  utime: 522 stime: 1 cutime:1 cstime: 3
                                |  utime: 522 stime: 1 cutime:1 cstime: 3
                                |  utime: 522 stime: 1 cutime:1 cstime: 3
                                |  utime: 522 stime: 1 cutime:1 cstime: 3
 $ while true; do true; done    |  utime: 522 stime: 1 cutime:1 cstime: 3
                                |  utime: 522 stime: 1 cutime:1 cstime: 3
                                |  utime: 522 stime: 1 cutime:1 cstime: 3
                                |  utime: 522 stime: 1 cutime:1 cstime: 3
                                |  utime: 522 stime: 1 cutime:1 cstime: 3
 ^C                             |  utime: 522 stime: 1 cutime:1 cstime: 3
                                |  utime: 522 stime: 1 cutime:1 cstime: 3
                                |  utime: 522 stime: 1 cutime:1 cstime: 3
 $ exit                         |  utime: 522 stime: 1 cutime:623 cstime: 6
                                |  utime: 522 stime: 1 cutime:623 cstime: 6
                                |  utime: 522 stime: 1 cutime:623 cstime: 6
                                |  utime: 522 stime: 1 cutime:623 cstime: 6
                                +  utime: 522 stime: 1 cutime:623 cstime: 6

关于linux - cutime 和 cstime jiffies 是否也包括子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46317296/

相关文章:

python - 有什么方法可以确定 Python 中的 cgi 请求来自哪个以太网端口?

linux - 在 modprobe.conf 中订购相同类型、相同产品 ID 和相同供应商 ID 的多张卡

sas - SAS中PROC SURVEYSELECT后如何获取未采样的样本?

assembly - 使用 stat 系统调用获取文件大小

windows - C stat() 函数报告 Windows 桌面文件夹是只读的

linux - 在 Debian 中使用文件夹解压缩存档?

node.js - npm install 好像不对

linux - 如何在没有 sysfs 的 linux 中查看时钟源?

ruby - 是否可以在 proc 中查看 ruby​​ 代码?

C 统计问题