Load Average 定义

linux系统中的Load对当前CPU工作量的度量(简单的说是进程队列的长度)。Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 Load 。linux系统是5秒钟进行一次Load采样!

linux-top

load average: 0.02, 0.02, 0.05

  • 0.02 表示最近 1min 平均负载
  • 0.02 表示最近 5min 平均负载
  • 0.05 表示最近 15min 平均负载

load average 值的含义

单核处理器 : 假设系统是单CPU单内核的,把它比喻成是一条单向马路,把CPU任务比作汽车。

  • 当车不多的时候,load <1;
  • 当车占满整个马路的时候 load=1;
  • 当马路都站满了,而且马路外还堆满了汽车的时候,load>1

多核处理器 : 如果服务器Load > 1,但是运行仍然不错,那是因为服务器是多核处理器(Multi-core)。假设服务器CPU是2核,那么将意味有2条马路,我们的Load = 2 时,所有马路都跑满车辆。

Load average 值应该怎么看

  • 通常先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。
  • 1分钟负载值 > 1,那么不用担心,但是如果1分钟、5分钟、15分钟负载都超过1,需要赶紧看看发生了什么事情。

需要根据实际情况查看这三个值!

Load average 值什么时候要提高警惕

  • 0.7 < load < 1: 此时的状态不错,如果有更多的任务,系统仍然可以应付。
  • load = 1: 你的马路即将拥堵,而且没有更多的资源运行额外的任务,需要赶紧查看。
  • load > 5: 拥堵非常严重,每个任务都无法很快的运行。

Load Average 和 CPU利用率的区别

  • Load Average 是指在运行队列里面的任务数
  • CPU使用率 是指CPU用于执行任务占用的时间与总的时间的比率

为什么有时候Load很高,CPU使用率却很低?
极有可能是D状态的进程非常多,可以使用命令查看处于R(运行)状态和D(磁盘休眠)状态的进程(或线程)个数,如果发现R状态的进程(或线程)只有几个,而D状态的进程(或线程)却有一大堆,由于linux计算load average的时候会把D状态的任务也计算进去,所以算出来的负载会很高;但实际上,CPU使用率并不高,因为真正占用CPU的任务没几个。