Linux load average 详解


Linux load average:中文名:系统平均负载,

定义:在特定时间间隔内运行队列中的平均进程数

如果一个进程满 足以下条件则其就会位于运行队列中:


  1. 它没有在等待I/O操作的结果
  2. 它没有主动进入等待状态(也就是没有调用’wait’)
  3. 没有被停止(例如:等待终止)

由于linux采用多线程的执行模式,因此所有的执行任务都是通过竞争CPU时间片,获得执行。

CPU的时间片通常都是固定的(默认为1/100秒),这段时间内进程被分配到CPU,然后独占使用。

如果使用完,同时未到时间片的规定时间,那么就主动放弃CPU的占用.

如果到时间片尚未完成工作,那么CPU的使用权也会被收回,进程将会被中断挂起等待下一个时间片。


如何计算Load Average:

扫描二维码关注公众号,回复: 1274599 查看本文章

从定义来看,也就是统计在一段时间内,有多少任务在执行队列中,表面来看,应该是一个整数值,但通常显示的都是一个浮点数,而且很可能都小于1,有点迷糊?其实系统是采用如下方式进行计算的:

所有执行任务消费的时间总和/特定时间长度

单个执行任务消费的时间=占用CPU的时间+在执行队列中等待CPU的时间(如果执行任务很多,任务通常都需要等待一定时间才能获取到CPU时间片)


例如:load average: 0.09, 0.05, 0.01

一分钟前   :执行队列中的任务消费CPU的时间是:60*0.09=5.4s  大部分时间,CPU都是空闲的。

五分钟前   :执行队列中的任务消费CPU的时间是:60*0.05=3.0s  大部分时间,CPU都是空闲的。

十五分钟前:执行队列中的任务消费CPU的时间是:60*0.01=0.6s  大部分时间,CPU都是空闲的。


什么是满负荷的Load Average?

通常对于单核CPU,达到满负荷时,Load Average=1.0, 大于或等于1.0时,表示是满负荷状态。

对于多核CPU,需要考虑CPU实际的核数,

例如:4Core, 满负荷值:4*1.0=4.0,大于或等于4.0时,表示是满负荷状态。

从实际经验来看,如何系统的load average长期处于满负荷状态的70~80%之间时,就需要考虑降低load average,增加cpu的数量。

猜你喜欢

转载自perfect5085.iteye.com/blog/1612475
今日推荐