2012-03-13 455 views
0

我正在做一些CPU性能相关的任务。而我一直在知道CPU负载高度依赖于处理器队列(等待队列)。如何找到最大处理器队列长度?

有没有办法确定处理器队列的最大长度?我想知道一次可以有多少个进程处于等待状态。

我使用的是Intel i5处理器和Unix环境。

+1

'CPU负载高度依赖处理器队列',好吧。假设“处理器队列”是指未运行的就绪线程集,如果队列计数大于0,则整体CPU负载为100%。请注意,就绪线程通常不被描述为“等待”,尽管它们正在等待CPU。 “等待”通常被理解为“不可运行”,即。等待IO或非同步对象等非CPU资源。 – 2012-03-13 14:36:23

+0

哦!抱歉错字错误,然后。我其实想知道一次最大允许的'可运行'进程。有没有可能找到? – bobby 2012-03-14 13:18:20

+0

一个简单的方法就是尝试一下。以低优先级创建Loopy线程,直到出现问题,(保存你的工作:)。 – 2012-03-15 09:40:35

回答

0

nr_running()是返回所有在线CPU上的可运行进程的当前总和的函数。我不确定你的意思是最大允许的?如果一个进程在CPU上运行,理论上所有其他进程都可以处于runnable状态。这样就没有上限。 (尽管系统的最大进程数是有限制的,但在较早的linux内核中有512个,但最新的内核数量肯定多了)

如果您有兴趣了解CPU负载,建议你去通过this article并加载sched.c计算功能的内核中,如calc_load()和其他

处理器运行队列可以通过命令在这里

How to find the processor queue length in linux

也学会进行审查,作为更多关于runqueues这里

http://www.ibm.com/developerworks/linux/library/l-scheduler/

希望这给你一个良好的开端为CPU负荷估计。