0
点赞
收藏
分享

微信扫一扫

嵌入式软件开发杂谈(6):CPU load average简介

生态人 2022-03-11 阅读 69

参考链接:

文章目录


在嵌入式开发中,我是一般关注CPU使用率这个参数。但是有次被人问到Load average怎么这么高,当时一脸懵,根本不知道这个参数说的是什么。随后查了些资料,记录下简单的说明,防止遗忘。需要详细了解的参考上面的链接,里面说的更新详细。

1 定义

在一定的时间间隔内,在运行队列中(即在CPU上正在运行或者等待运行的进程)和处于不可中断状态的平均进程数。

2查看

使用top可以看到

或者使用

# cat /proc/loadavg                                          
2.53 2.44 2.23 1/133 2042

前三个数字是1,5,15分钟内的平均负载;第四个数字的分子表示正在运行的进程数,分母表示进程总数;最后一个数字是最近运行的进程PID。

3 值的解释

上面三个数代表的是不同时间段内的系统平均负载,数值越小越好。 1.0表示系统没有剩余资源,因此理想情况下最大负荷要小于等于1.0,这样最好。

在实际中,一般都将其划在0.7:

上面的0.7 1.00 5.00是表示单个CPU的负载,而我们使用top或者查看/proc/loadavg下的负载表示的全部的负责,因此如果是多核的话,就要将上面的数字除以核心数就是单个CPU的负载了。

PS: 关于核心数和CPU负载,具体设备具体分析,比如海思3556V200,虽然是双核,但是一个CPU跑linux,一个CPU跑liteos,那么他在linux下的负载就是单核的负载。

4 负载和CPU使用率之间的关系?

有时候查看,CPU负载都已经超过1.0了,但是CPU使用率却很小,有点疑惑。
参考上面链接的解释:

CPU使用率和CPU 的Load average 是两个不同维度的概念。CPU使用率就是对一个时间段内CPU使用状况统计,而Load average则是对一个时间段内CPU正在或者将要处理的进程数之和的统计信息。

举个不恰当的例子,假如CPU Load average一直是1.0,但是每个进程都是一些比较复杂的运算,那么CPU使用率就会很高;反之,如果是一些简单的运算,那么在这个进程被CPU运行时候,CPU的使用率就会很低。
所以就可能会出现负载很高,但是CPU使用率却很低的情况。

举报

相关推荐

0 条评论