据我了解,根据定义,un*x 负载是一个积分度量,在预定义的相当长的时间段内进行平均。另一方面,CPU 利用率可以被认为是一个临时度量:虽然从技术上讲,它仍然是在一段时间内测量和平均的,但这个时间段实际上非常短。最终的结果是,当CPU密集型进程终止时,CPU利用率立即下降,而负载值随着时间的推移逐渐下降。因此,您的计算机此时可能实际上什么都不做,而负载仍然很高,只是因为它没有足够的时间来减少。因此,该措施不太适合实际 CPU 负载急剧变化的情况。
现在:是否可以在几分之一秒的时间段内测量类似“负载”的值?我并不是说每秒打印十次,因为它很微不足道。我的意思是平均 1 毫秒或 100 毫秒期间而不是超过 15 分钟的运行排队进程数。
答案1
如何获取Linux上等待CPU的进程数?有答案;)
awk '/procs_running/ { print $2 }' /proc/stat
给出正在等待 CPU 资源的进程数。有了这个,您可以随时集成。
顺便说一句,平均负载是按 1/5/15 分钟测量的,因此如果 1 分钟足够短,您可以使用它。