一、平均负载定义

   平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,和CPU使用率没有直接关系。简单理解就是平均负载其实就是平均活跃进程数。

二、平均负载多少合理

   平均负载最理想的情况是等于CPU个数。所以在评判平均负载时,首先你要知道系统有几个CPU,可以通过top命令或者从文件/proc/cpuinfo中读取。有了CPU个数,我们就可以判断出,当平均负载比CPU个数还大的时候,系统已经出现了过载。

  平均负载有三个数值,分析系统负载趋势的时候,三个都要看。

  (1)如果1分钟、5分钟、15分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。

  (2)如果1分钟的值远小于15分钟的值,就说明系统最近1分钟的负载在减少,而过去15分钟内有很大的负载。

  (3)如果1分钟的值远大于15分钟的值,就说明最近1分钟的负载在增加,这种增加可能是临时的,也可能还会持续增加下去,所以需要持续观察。一旦1分钟的平均负载超过CPU的个数,就意味着正在发生过载的问题,这时就需要调查哪里出了问题,并想办法优化。

  正常情况下,当平均负载高于CPU数量70%的时候,就要分析排查负载高的问题了。

三、平均负载与CPU使用率

   CPU使用率跟平均负载不一定完全对应。比如:

  (1)CPU密集型进程,使用大量CPU会导致平均负载升高,此时两者是一致的。

  (2)I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定很高。

  (3)大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高。

四、平均负载案例分析

  使用iostat、mpstat、pidstat等工具,找出平均负载升高的根源。

   (1)mpstat是一个常用的多核CPU性能分析工具,用来实时查看每个CPU的性能指标以及所有CPU的平均指标。

   (2)pidstat是一个常用的进程性能分析工具,用来实时查看进程的CPU、内存、I/O以及上下文切换等性能指标。

 可以用uptime命令查看平均负载情况:

      基础篇02:到底应该怎样理解“平均负载”-总结_top命令

可以用mpstat命令查看每个CPU的情况:

      基础篇02:到底应该怎样理解“平均负载”-总结_性能分析工具_02

可以用pidstat命令来查看进程情况:

      基础篇02:到底应该怎样理解“平均负载”-总结_top命令_03


小结

    平均负载提供了一个快速查看系统整体性能的手段,反映了整体的负载情况。但只看平均负载本身,不能直接发现瓶颈在哪里。所有理解平均负载时也要注意:

    (1)平均负载高有可能时CPU密集型进程导致的;

    (2)平均负载高不一定代表CPU使用率高,有可能时I/O更繁忙了;

    (3)当发现负载高的时候,可以使用mpstat、pidstat等工具,辅助分析负载的来源