美文网首页
理解平均负载

理解平均负载

作者: _Irving | 来源:发表于2023-02-05 16:54 被阅读0次
uptime命令
[test@localhost bin]$ uptime
 22:02:14 up  3:34,  2 users,  load average: 0.00, 0.01, 0.05
#22:02:14   //当前时间
#up  3:34    //系统运行时间
#2 users  //正在登陆用户数
#load average  //分别是:近1分钟、5分钟、15分钟的系统平均负载
  • 平均负载:是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。
  • 可运行状态的进程:指的是正在使用cpu或者正在等待cpu的进程,也就是我们常用ps命令看到的,处于R状态(Running或Runnable)的进程。
  • 不可中断的进程:则是处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的等待硬件设备的I/O响应,也就是我们在ps命令中看到的D状态(Uninterruptible Sleep 也称为Disk Sleep)的进程。

既然平均的是平均活跃进程数,那么最理想的,就是每个cpu上都刚好运行着一个进程,这样每个cpu都得到充分利用。

分析平均负载为多少时合理

我们知道,平均负载最理想的情况是等于cpu个数,所以在评判平均负载时,首先你要知道系统有几个cpu,这可以通过top命令,或者从文件 /proc/cpuinfo中读取:

[wanchao@localhost ~]$ grep 'model name' /proc/cpuinfo |wc -l
1
[wanchao@localhost ~]$ cat /proc/cpuinfo |grep 'processor' |wc -l
1
[wanchao@localhost ~]$ cat /proc/cpuinfo |grep 'cpu cores' |uniq
cpu cores   : 1

有了cpu个数,我们就可以判断出,当平均负载比cpu个数还大的时候,系统就已经出现了过载。如果1分钟、5分钟、15分钟三个值基本相同,或者相差不大,那就说明系统负载很平稳。
如果一分钟的值远小于15分钟的值,就说明系统最近1分钟的负责在减少,而过去15分钟内却有很大的负载;
反过来如果一分钟的值远大于15分钟的值,就说明最近1分钟的负载在增加,增加有可能只是临时性的,也有可能还会持续增加下去,所以就需要持续观察。
再举个例子,假设我们在一个单 CPU 系统上看到平均负载为 1.73,0.60,7.98,那么说明在过去 1 分钟内,系统有 73% 的超载,而在 15 分钟内,有 698% 的超载,从整体趋势来看,系统的负载在降低。

那么,在实际生产环境中,平均负载多高时,需要我们重点关注呢?
在我看来,当平均负载高于 CPU 数量 70% 的时候,你就应该分析排查负载高的问题了。一旦负载过高,就可能导致进程响应变慢,进而影响服务的正常功能。
但 70% 这个数字并不是绝对的,最推荐的方法,还是把系统的平均负载监控起来,然后根据更多的历史数据,判断负载的变化趋势。当发现负载有明显升高趋势时,比如说负载翻倍了,你再去做分析和调查。

扩展:
  • 查看哪个线程占用最多cpu:
[wanchao@localhost softwares]$ top -H -p 22452     //-H显示线程,-p按cpu占用排序
top - 19:23:24 up  7:47,  4 users,  load average: 1.05, 0.85, 0.45
Threads:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie
%Cpu(s):100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1868660 total,  1191732 free,   189008 used,   487920 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1479500 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                             
 22452 root      20   0   41856   3276   1348 R 99.7  0.2   7:53.84 stress-ng-cpu  
[wanchao@localhost softwares]$ watch -d uptime
  • pidstat和mpstat辅助工具(sysstat官网源码下载地址:SYSSTAT (pagesperso-orange.fr)

    mpstat是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标
[root@localhost ~]# mpstat -P ALL 5 1   
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain)     02/07/23    _x86_64_    (1 CPU)

00:02:58     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
00:03:03     all    0.00    0.00   99.19    0.00    0.00    0.81    0.00    0.00    0.00    0.00
00:03:03       0    0.00    0.00   99.19    0.00    0.00    0.81    0.00    0.00    0.00    0.00

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all    0.00    0.00   99.19    0.00    0.00    0.81    0.00    0.00    0.00    0.00
Average:       0    0.00    0.00   99.19    0.00    0.00    0.81    0.00    0.00    0.00    0.00

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

[root@localhost ~]# pidstat -u 5 1
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain)     02/07/23    _x86_64_    (1 CPU)

00:04:04      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
00:04:09        0       587    0.00    0.40    0.00    0.00    0.40     0  kworker/u256:31
00:04:09        0      1503    0.20    0.00    0.00    0.00    0.20     0  tuned
00:04:09        0      4744    0.20   98.62    0.00    0.00   98.81     0  stress-ng-io
00:04:09        0      4754    0.20    0.00    0.00    0.00    0.20     0  pidstat

Average:      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
Average:        0       587    0.00    0.40    0.00    0.00    0.40     -  kworker/u256:31
Average:        0      1503    0.20    0.00    0.00    0.00    0.20     -  tuned
Average:        0      4744    0.20   98.62    0.00    0.00   98.81     -  stress-ng-io
Average:        0      4754    0.20    0.00    0.00    0.00    0.20     -  pidstat

相关文章

  • 理解平均负载

    uptime 1分钟 5分钟 15分钟内的负载情况 平均负载(load average):单位时间内,处于可运行状...

  • 到底应该怎么理解“平均负载”

    到底应该怎么理解“平均负载” 1、什么是平均负载? 2、查看cpu个数 3、平均负载与 CPU 使用率 4、最佳实...

  • 理解系统平均负载

    查看系统配置 查看系统版本lsb_release -a 查看内存 查看CPUcat /proc/cpuinfo 查...

  • 怎样理解平均负载?

    1、uptime的三个参数 分别是当前时间,系统运行时间,正在登录用户数最后三个数字依次是过去1分钟、5分钟、15...

  • 如何理解平均负载

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

  • 学习平均负载

    平均负载概念 查看平均负载 load average平均负载 分别 1 5 15分钟的平均负载 平均负载表示单位时...

  • 经常说的 CPU 上下文切换是什么意思?(上)

    理解平均负载( Load Average),并用三个案例展示了不同场景下平均负载升高的分析方法。这其中,多个进程竞...

  • 如何理解系统平均负载

    系统平均负载 简单来说,平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进行数(ps命令看到的处于R...

  • 如何理解cpu平均负载

    uptime 每次发现系统变慢时,我们通常做的第一件事,就是执行 top 或者 uptime 命令,来了解系统的负...

  • Linux性能优化实战(一)

    CPU性能篇 第一篇 如何理解平均负载 系统变慢首先想到的两个命令top和uptime 平均负载:简单来说...

网友评论

      本文标题:理解平均负载

      本文链接:https://www.haomeiwen.com/subject/nfxzhdtx.html