平均负载

Posted leisurelylicht

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平均负载相关的知识,希望对你有一定的参考价值。

什么是平均负载

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

可运行状态的进程

指正在使用 CPU 或者正在等待 CPU 的进程数。也就是说我们常用 ps aux 命令看到的,处于 R 状态 (Running 或 Runnable)的进程。

不可中断状态的进程

指正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应,也就是我们再 ps aux 命令中看到的 D 状态(Uninterruptible Sleep, 也称为 Disk Sleep)的进程。

平均负载为多少时合理

平均负载最理想的情况是等于 CPU 个数,所以在评价平均负载时,首先需要知道系统有几个CPU。有了 CPU 个数,我们就可以判断出,当平均负载比 CPU 个数还大的时候,系统已经出现了过载。

实际环境中,当平均负载高于 CPU 数量 70% 的时候,就应该分析排查负载高的问题了。一旦负载过高,就可能导致进程响应变慢,进而影响服务的正常功能。

平均负载与 CPU 使用率

平均负载时指单位时间内,处于可运行状态和不可中断状态的进程数。所以,它不仅包括了‘正在使用 CPU的进程,还包括等待 CPU等待 I/O的进程。

而 CPU 使用率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不一定完全对应。

例如:

  • CPU密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的。
  • I/O密集型进程,等待 I/O 也会导致平均负载升高,但是 CPU 使用率不一定很高。
  • 大量等待 CPU 的进程也会导致平均负载升高,此时的 CPU 使用率也会比较高

分析平均负载使用的命令

1. uptime

当发现系统变慢时可以通过uptime命令来了解系统的负载情况。

$ uptime
02:34:03 up 2 days, 20:14, 1 user, load average: 0.63, 0.83, 0.88

uptime 命令每列含义

02:34:03    // 当前时间
up 2 days, 20:14    // 系统运行时间
1 user  // 正在登陆用户数
0.63    // 1分钟平均负载
0.83    // 5分钟平均负载
0.88    // 5分钟平均负载
  • 如果1分钟,5分钟,15分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。
  • 如果1分钟的值远大于15分钟的值,就说明最近1分钟的负载在增加,这种增加可能是临时性的,也有可能是持续性的,需要持续观察。一旦1分钟的平均负载接近或超过了CPU的个数,就意味着系统正在发生过载的问题。

2. mpstat

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

技术图片?

  • 当遇到 CPU 密集型进程的时候,%usr 的数值会逐渐升高,而 %iowait 的数值不会增加。
  • 而遇到 I/O 密集型进程的时候, %iowait 的数值会快速上升,而 %user 的数值增加则不多。

3. pidstat

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

技术图片?

以上是关于平均负载的主要内容,如果未能解决你的问题,请参考以下文章

Linux优化如何理解“平均负载”

Linux优化如何理解“平均负载”

一文理解 Linux 平均负载,附排查工具

linux /proc/loadavg(平均负载)

性能测试之平均负载

02 | 基础篇:到底应该怎么理解“平均负载”?