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

Posted Stoneshen1211

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式软件开发杂谈:CPU load average简介相关的知识,希望对你有一定的参考价值。

参考链接:

文章目录


在嵌入式开发中,我是一般关注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.70 上下,那么你需要在事情变得更糟糕之前,花些时间了解其原因。

“现在就要修复法则”:1.00 。 如果你的服务器系统负载长期徘徊于 1.00,那么就应该马上解决这个问题。否则,你将半夜接到你上司的电话,这可不是件令人愉快的事情。

“凌晨三点半锻炼身体法则”:5.00。 如果你的服务器负载超过了 5.00 这个数字,那么你将失去你的睡眠,还得在会议中说明这情况发生的原因,总之千万不要让它发生。

上面的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利用率在过去常常被我们这些外行认为是判断机器是否已经到了满负荷的一个标准,看到50%-60%的使用率就认为机器就已经压到了临界了。CPU利用率,顾名思义就是对于CPU的使用状况,这是对一个时间段内CPU使用状况的统计,通过这个指标可以看出在某一个时间段内CPU被占用的情况,如果被占用时间很高,那么就需要考虑CPU是否已经处于超负荷运作,长期超负荷运作对于机器本身来说是一种损害,因此必须将CPU的利用率控制在一定的比例下,以保证机器的正常运作。

Load Average是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。

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

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

以上是关于嵌入式软件开发杂谈:CPU load average简介的主要内容,如果未能解决你的问题,请参考以下文章

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

嵌入式软件开发杂谈:如何查找CPU使用率最高的函数---pref的使用

嵌入式软件开发杂谈:如何查找CPU使用率最高的函数---pref的使用

嵌入式软件开发杂谈(10):CPU的使用率是如何计算的

嵌入式软件开发杂谈(10):CPU的使用率是如何计算的

嵌入式软件开发杂谈(10):CPU的使用率是如何计算的