正常运行时间与最高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

在阅读了一些文章之后,我最好相信uptime命令。但为什么会有这种差异呢?我的CPU真的空闲吗??!

Load不仅衡量有多少进程处于R状态(可运行,可能占用CPU时间),而且还衡量有多少进程处于D状态(不可中断睡眠,通常等待IO)。您可能有一个进程处于D状态,它对负载有贡献,但不使用cpu。下面的命令将显示所有对load有贡献的当前进程:

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

查看输出,看看是否有处于D状态的命令(在第8列中)

你最好了解一下load average是什么意思

简而言之,它是一些进程,等待一些资源,而资源可能是CPU, HDD,串口,…

平均负载似乎有点高,这可能意味着cpu忙于I/O(磁盘/网络)或线程管理(您可能有太多的线程在运行)。

最新更新