系统的平均负载

如何理解平均负载


​ 单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。

平均负载多少合理


核心数 平均负载 含义
4 2 有50%的cpu是空闲状态,见图一
2 2 CPU刚好被完全占用,见图二
1 2 至少有一半的进程抢不到cpu资源,见图三

就像是有四条马路, 有两辆小车在上面跑,这个时候交通很畅通,不会堵车。

现在有两条马路,上面有两辆汽车,这个时候刚好合适。

现在有两条马路,四量汽车,马路已经跑满了,后面的就堵住了。

该关注哪个值

1、如果1min,5min,15min的数值相差不大,表示系统的负载很“稳定”

2、如果近1min的值小于近15min的值证明系统负载的,平均负载在逐渐降低,但是在前15min的负载过高原因需要知道。

3、如果近15min的值,远小于近1min的值,说明负载在升高,有可能是临时的也有可能会不停的升高。

平均负载案例分析


对CPU的测试


stress
[root@fpm_nginx ~]# yum -y install stress # 模拟4个cpu核心全部占满的情况
终端1
[root@fpm_nginx ~]# stress --cpu 4 --timeout 600
终端2
[root@fpm_nginx ~]# watch -d uptime
10:16:06 up 3 min, 2 users, load average: 3.90, 1.68, 0.64 mpstat # 查看cpu的实时使用情况
[root@fpm_nginx ~]# yum install -y sysstat [root@fpm_nginx ~]# mpstat -P ALL 5
# 每5s检查一次所有cpu,查看是用户还是系统导致的负载过高。
Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU) 10:22:48 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:22:53 AM all 0.00 0.00 0.05 0.00 0.00 0.00 0.00 0.00 0.00 99.95
10:22:53 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10:22:53 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10:22:53 AM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10:22:53 AM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 pidstat
[root@fpm_nginx ~]# pidstat -u 5 1
# 每5s输出一组数据,最后一组数据是平均值,查看是哪个程序导致的负载过高
Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU) 10:28:25 AM UID PID %usr %system %guest %CPU CPU Command
10:28:30 AM 0 5819 0.20 0.00 0.00 0.20 2 vmtoolsd
10:28:30 AM 0 6650 100.00 0.20 0.00 100.00 3 stress
10:28:30 AM 0 6651 100.00 0.20 0.00 100.00 2 stress
10:28:30 AM 0 6652 99.60 0.20 0.00 99.80 0 stress
10:28:30 AM 0 6653 100.00 0.00 0.00 100.00 1 stress
10:28:30 AM 0 6656 0.00 0.40 0.00 0.40 0 pidstat Average: UID PID %usr %system %guest %CPU CPU Command
Average: 0 5819 0.20 0.00 0.00 0.20 - vmtoolsd
Average: 0 6650 100.00 0.20 0.00 100.00 - stress
Average: 0 6651 100.00 0.20 0.00 100.00 - stress
Average: 0 6652 99.60 0.20 0.00 99.80 - stress
Average: 0 6653 100.00 0.00 0.00 100.00 - stress
Average: 0 6656 0.00 0.40 0.00 0.40

对I/O的测试


600s之后退出
stress --io 1 --timeout 600 [root@fpm_nginx ~]# mpstat -P ALL 5
Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU) 10:42:05 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:42:10 AM all 0.10 0.00 13.27 0.00 0.00 0.05 0.00 0.00 0.00 86.58
10:42:10 AM 0 0.00 0.00 8.56 0.00 0.00 0.00 0.00 0.00 0.00 91.44
10:42:10 AM 1 0.00 0.00 11.51 0.00 0.00 0.00 0.00 0.00 0.00 88.49
10:42:10 AM 2 0.21 0.00 12.63 0.00 0.00 0.00 0.00 0.00 0.00 87.16
10:42:10 AM 3 0.21 0.00 20.68 0.00 0.00 0.00 0.00 0.00 0.00 79.11 [root@fpm_nginx ~]# pidstat -u 3 4
Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU) 10:43:02 AM UID PID %usr %system %guest %CPU CPU Command
10:43:05 AM 0 13 0.00 0.33 0.00 0.33 1 migration/1
10:43:05 AM 0 6119 0.00 0.33 0.00 0.33 2 tuned
10:43:05 AM 0 6405 0.00 0.33 0.00 0.33 2 sshd
10:43:05 AM 0 6630 0.00 8.28 0.00 8.28 1 kworker/u256:0
10:43:05 AM 0 6673 0.00 37.09 0.00 37.09 2 stress
10:43:05 AM 0 6674 0.00 17.88 0.00 17.88 0 kworker/u256:2
10:43:05 AM 0 6675 0.00 0.33 0.00 0.33 0 kworker/0:1
10:43:05 AM 0 6804 0.00 0.33 0.00 0.33 1 pidstat 注:磁盘的大量io会导致,负载的异常升高,比cpu的核心还高,会导致内核态的占比升高。

大量进程


[root@fpm_nginx ~]# stress -c 4 --timeout 600

# %idle 表示的是内核态
[root@fpm_nginx ~]# mpstat -P ALL 5
Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU) 11:02:02 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11:02:07 AM all 99.72 0.00 0.11 0.00 0.00 0.17 0.00 0.00 0.00 0.00
11:02:07 AM 0 99.55 0.00 0.23 0.00 0.00 0.23 0.00 0.00 0.00 0.00
11:02:07 AM 1 99.78 0.00 0.00 0.00 0.00 0.22 0.00 0.00 0.00 0.00
11:02:07 AM 2 99.55 0.00 0.23 0.00 0.00 0.23 0.00 0.00 0.00 0.00
11:02:07 AM 3 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 [root@fpm_nginx ~]# pidstat -u 3 4
Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU) 11:02:25 AM UID PID %usr %system %guest %wait %CPU CPU Command
11:02:28 AM 0 5819 0.00 0.32 0.00 1.30 0.32 2 vmtoolsd
11:02:28 AM 0 6119 0.00 0.32 0.00 0.00 0.32 2 tuned
11:02:28 AM 0 7950 97.40 0.00 0.00 0.97 97.40 3 stress
11:02:28 AM 0 7951 98.05 0.32 0.00 0.32 98.38 0 stress
11:02:28 AM 0 7952 98.05 0.32 0.00 0.65 98.38 2 stress
11:02:28 AM 0 7953 98.38 0.32 0.00 0.32 98.70 1 stress
11:02:28 AM 0 8013 0.32 0.32 0.00 0.32 0.65 3 pidstat # 大量进程会导致用户态升高

总结:

  1. 平均负载高有可能是CPU密集型进程导致的
  2. 平均负载高并不一定代表CPU的使用率就一定高,还有可能是I/O繁忙
  3. 当发现负载高时,可以使用mpstat、pidstat等工具,快速定位到,负载高的原因,从而做出处理

linux系统的负载详解的更多相关文章

  1. LINUX系统VMSTAT命令详解

    linux系统vmstat命令详解 [转自 https://www.cnblogs.com/wensiyang0916/p/6514820.html] vmstat 1    1表示每秒采集一次vms ...

  2. MySQL在Linux系统下配置文件详解

    在日常的的开发过程中接触到了SQLServer和MySQL数据库的操作性问题,可能是以前接触的都是SQL Server,才开始接触MySQL,总感觉使用MySQL没有使用SQLserver那么顺手,一 ...

  3. linux系统开机流程详解

    今天,我们主要来谈谈计算机系统的启动流程 1.BIOS启动 BIOS是写入到主板上的一个韧体(韧体就是写入到硬件上的一个软件程序).开机的时候,BIOS是计算机系统会主动执行的第一个程序.BIOS主要 ...

  4. Linux系统僵尸进程详解

    大安好,我是良许. 本文我们将来讨论一下什么是僵尸进程,僵尸进程是怎么产生的,如何杀死一个僵尸进程. Linux中的进程是什么? 讲到进程,我们要先了解一下另一个概念:程序. 程序说白了就是躺在电脑硬 ...

  5. Linux系统守护进程详解ntsysv 可以关掉那些服务

    acpid, haldaemon, messagebus, klogd,network, syslogd  以上几个服务必须开启!其他的分析如下: 1.NetworkManager,NetworkMa ...

  6. Linux系统监控命令详解

    1. top命令 top命令经常用来监控Linux的系统状况,比如cpu.内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解. 输 ...

  7. linux系统date命令详解

    Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟.系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟, ...

  8. Linux系统的信号详解

    一.信号类型 1) SIGHUP       2) SIGINT       3) SIGQUIT     4) SIGILL        5) SIGTRAP 6) SIGABRT      7) ...

  9. Linux—系统关机命令详解

    不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中.将数据由内存同步写入到硬盘中. [root@localhost ~]# sync 一.shutdown命令 # 立刻关 ...

随机推荐

  1. GAMES101作业2

    作业任务: 填写并调用函数 rasterize_triangle(const Triangle& t). 即实现光栅化 该函数的内部工作流程如下: 创建三角形的 2 维 bounding bo ...

  2. [面试仓库]HTML面试题汇总

      HTML这一块呢,说简单也简单,说难也不是那么容易.但我们在各个面试要求中,大部分都把HTML这一条摆在了第一位,重要性可想而知.这个位置算是有关HTML的一个汇总点了,亦会在这里及时补充. 1, ...

  3. 万字长文,带你彻底理解EF Core5的运行机制,让你成为团队中的EF Core专家

    在EF Core 5中,有很多方式可以窥察工作流程中发生的事情,并与该信息进行交互.这些功能点包括日志记录,拦截,事件处理程序和一些超酷的最新出现的调试功能.EF团队甚至从Entity Framewo ...

  4. IDEA如何在一个项目空间下管理多个项目?

    用过Eclipse和IDEA编程工具都知道,Eclipse创建新项目时都是在同一项目空间下,而IDEA一个项目空间只能有一个项目,创建项目时会创建.idea文件. 所以每次创建完项目或者打开另一个项目 ...

  5. Java 使用 Maven BOM 统一管理版本号

    一个中大型的 Java 项目往往包含若干 JAR 包,这些 JAR 包有着不同的版本号.如果这些 JAR 包单独发布,然后直接通过版本号引用相应的 JAR 包,不同版本的兼容性维护将变得十分麻烦.为了 ...

  6. matlab数值类型

    matlab数值类型 数值类型的分类 整数类型    整数类型有8种.上面的数字为其内存大小,如:int8,整数所占内存大小为8个字节.除了int64 和 uint64不能进行数值运算之外都可以. 类 ...

  7. Day14_77_反射( newInstance() 方法)

    newInstance() 方法 * 通过反射获取class类型的对象之后,可以通过该对象创建所对应的class类型的对象 * newInstance() 用来创建Class获取的类所表示的一个新实例 ...

  8. Erda MSP 系列 - 以服务观测为中心的 APM 系统设计:开篇词

    本文首发于 Erda 技术团队知乎账号,更多技术文章可点击 Erda 技术团队 作者:刘浩杨,端点科技 PaaS 技术专家,微服务治理和监控平台负责人,Apache SkyWalking PMC成员 ...

  9. 缓冲区溢出分析第06课:W32Dasm缓冲区溢出分析

    漏洞报告分析 学习过破解的朋友一定听说过W32Dasm这款逆向分析工具.它是一个静态反汇编工具,在IDA Pro流行之前,是破解界人士必然要学会使用的工具之一,它也被比作破解界的"屠龙刀&q ...

  10. 我为Dexposed续一秒——论ART上运行时 Method AOP实现

    转载于:http://weishu.me/2017/11/23/dexposed-on-art/ 两年前阿里开源了 Dexposed 项目,它能够在Dalvik上无侵入地实现运行时方法拦截,正如其介绍 ...