procs_running 是否包括发出请求的进程?

procs_running 是否包括发出请求的进程?

Linux 上有一个 procs_running 值/proc/stat,它显示正在运行的进程(线程)数量。

问题是:这个值是否包括当前正在查询 procfs 的进程?

在绝对空闲的系统上,我们应该期望该值为 0 还是 1 ?

答案1

procs_runningin 中的字段是否/proc/stat包含正在查询 procfs 的当前进程?

是的,它确实。伪/proc/stat文件生成于fs/proc/stat.c在 Linux 内核中,通过调用nr_running().

nr_running()函数定义在kernel/sched/core.c,它只是对所有每个 cpu 进程计数器进行求和。当前进程在这里没有以任何特殊方式处理,因此它包含在计数中。

在绝对空闲的系统上,我们应该期望值是 0 还是 1 ?

既然一个过程必须读取伪文件以供内核生成内容,并且这样的过程总是由nr_running()内核函数计数,我们应该始终期望它至少为 1。

答案2

经过一些测试,看起来这包括执行请求的过程。因此,vmstat 可能会从活动进程数中减去 1 以显示真实的系统负载

相关内容