2011-12-13 73 views
2

我在我的嵌入式设备上的一些性能问题:正常运行时间。最高CPU使用率:我应该相信什么,为什么这种差异?

# uptime 
14:59:39 up 5:37, load average: 1.60, 1.50, 1.53 

非常坏的单芯系统... :-P!但是,如果我检查顶级实用程序,我总是有80%左右的空闲时间!

Mem: 49020K used, 75960K free, 0K shrd, 0K buff, 21476K cached 
CPU: 12.5% usr 4.8% sys 0.0% nic 81.7% idle 0.0% io 0.9% irq 0.0% sirq 
Load average: 1.30 1.42 1.51 1/80 18696 

在阅读了一些文章后,我最好相信正常运行时间命令。但为什么这种差异?我的CPU真的空了吗?!

回答

5

加载不仅仅是R状态(可运行,可以使用CPU时间)中多少个进程的度量,还包括处于D状态(不间断睡眠,通常等待IO)的进程。你可能有一个D状态的进程,这有助于加载,但不使用cpu。此命令会告诉你所有这些都有助于负载的电流的过程:

ps aux | awk '$8~/[RD]/' 

看一看该输出,看看你是否有在d状态的命令(第8列)

+0

所以,如果我理解得很好,僵尸和睡眠过程是以平均负载计算的,也是最高闲置时间?我认为“闲置”是CPU在执行某些“nop”操作时实际上没有任何问题,但当进程正在等待某个资源时,CPU也可以处于空闲状态?所以我对“闲置”的理解是有缺陷的...感谢您指出这一点! – morandg

+1

并非所有的睡眠进程,S状态的进程都不计算在内,因为我无事可做“睡觉”。但在D状态的进程“我会做的东西,但我必须等待IO”确实有助于加载。是。空闲意味着“CPU正在做一个noop”如果一个进程不能做任何事情,直到IO完成它不使用CPU,但它正在加载到负载。 – stew

+1

据我所知,Z procs不计入loadavg。如果您不相信,请引用源代码。 –

0

你最好去了解'平均负荷'是什么意思。

总之

,它是一个数字的过程,等待某些资源,而资源可以是CPU,硬盘,串口,...

0

平均负载似乎有点高,可能meen的CPU忙于I/O(磁盘/网络)或线程管理等事情(您可能运行得太多)。

相关问题