如何获取Linux上等待CPU的进程数?

如何获取Linux上等待CPU的进程数?

如果 CPU 正在运行 100% 使用率,则其他进程应放入运行队列中。我可以使用哪个命令来获取运行队列的大小?vmstat似乎返回 CPU 的相关值,如下所示:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 875128 576328 2147136    0    0     1     4    3   11  0  0 99  0  0

根据手册,“ r:可运行进程的数量(正在运行或等待运行时)。”,该列r表示进程的数量,包括正在运行和等待的进程。我怎样才能得到等待进程的数量?

答案1

的数量可运行procs_running过程由下式给出/proc/stat

awk '/procs_running/ { print $2 }' /proc/stat

减去可用的 CPU 线程数(止于 0),您将得到等待调度的调度单元(进程或线程)的数量。您/proc/stat也可以使用这些行来确定可用的 CPU 线程数cpu?。全面的:

awk '/cpu[^ ]/ { nb = substr($1, 4); if (nb > nbcpus) nbcpus = nb };
/procs_running/ { runqueue = $2 - nbcpus; if (runqueue < 0) runqueue = 0; print runqueue }' /proc/stat

相关内容