深入理解liunx平均负载

查找系统平均负载,可以通过top或者uptime命令查看

$ uptime
14:12:35 up 289 days, 18:50,  2 users,  load average: 0.12, 0.09, 0.07

最后的三个数字,一次是过去 1 分钟、5 分钟、15 分钟的平均负载(Load Average)。

我们经常会看,但你不一定正确的理解了平均负载的真正含义。

平均负载是单位时间内CPU的使用率吗?0.12代表CPU使用率为12%?有可能很多人是这么理解的,这么理解就错了。

如果你想看官方的解析,可以通过命令 man uptime 查看,

英文原文如下:

System load averages is the average number of processes that are either in a runnable or uninterruptable state. A process in a runnable state is either using the CPU or waiting to use the CPU. A process in uninterruptable state is waiting for some I/O access, eg waiting for disk. The averages are taken over the three time intervals. Load averages are not normalized for the number of CPUs in a system, so a load average of 1 means a single CPU system is loaded all the time while on a 4 CPU system it means it was idle 75% of the time.

下面详细的解析下什么是平均负载,平均负载是指系统处于可运行状态不可中断状态的平均进程数,也就是平均活跃进程数,它和CPU使用率没有什么必然关系的。

那什么是可运行状态进程和不可中断状态进程呢?可运行状态进程是指正在使用CPU或者正在你等待CPU的进程,我们在ps命令下看到的处于Running和Runnable的进程就是可运行状态进程。不可中断状态进程是指正处于内核态关键流程中的进程,并且这些流程是不可中断的,比如最常见的是等待硬件设备的I/O响应,我们在ps命令下看到的处于Uninterruptible Sleep的进程就是不可中断状态进程。

平均负载可以简单的理解为单位时间内系统给的活跃进程数

怎样的平均负载时合理的?

最理想的情况是平均负载等于CPU个数。平均负载高于CPU个数,说明系统已经过载。

查询系统CPU个数:

grep 'model name' /proc/cpuinfo | wc -l

当一段是时间内系统的平均负载高于CPU个数的70%时,就要开始注意排查系统负载高的问题了,系统负载高了,进程的响应速度就会变慢,可能影响到系统提供的服务的正常运行。

平均负载和CPU使用率的区别
很多人在现实工作中,经常把平均负载和CPU使用率混为一谈,平均负载高了,说明活跃进程数多,并不一定CPU使用率高,
下面给大家做下总结:
平均负载是指系统处于可运行状态和不可中断状态的平均进程数,包括正在使用CPU的进程和等待CPU和等待IO的进程。
CPU使用率是指在一段时间内使用CPU情况的统计,
当系统大部分是CPU密集型进程时,两者基本时一致的;
当系统大部分是IO密集型进程时,平均负载高,但CPU使用率不一定高;
当系统有很多等待CPU进度调度的进程时,平均负载高,CPU使用率也会高。

by kocor

    原文作者:码魇
    原文地址: https://segmentfault.com/a/1190000017118276
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞