如果 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