系统的平均负载

如何理解平均负载


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

平均负载多少合理


核心数 平均负载 含义
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. Python简单实现杨辉三角

    n=input("请输入要打印的行数")n=int(n)for x in range(0,n+1): p=1 print(''.rjust(n-x),end="" ...

  2. c++ 实现向量去重操作

    去重的时候要考虑线性表或链表是否是有序 1.1.无序线性表 对于向量[1,5,3,7,2,4,7,3], 从头开始扫描vector内的元素, 对于表中r处的元素a[r], 检查数组0至r-1区间内是否 ...

  3. Centos6无法使用yum解决办法

    12月后Centos 6 系统无法使用yum出现错误(文章底部看) 相信已经有一部分朋友今天连接到CentOS 6的服务器后执行yum后发现报错,那么发生了什么? CentOS 6已经随着2020年1 ...

  4. Horovod-Usage

    Usage 代码中要包含以下6步: 初始化 Run hvd.init() to initialize Horovod. 将每个GPU固定到单个进程以避免资源争用. 一个线程一个GPU,设置到 loca ...

  5. Go-16-map

    map的value可以是任何数据类型.map和切片一样,也是一种引用类型. map声明: (1)使用var关键字定义map var 变量名 map[key类型] value 类型 (2)使用make( ...

  6. 8. vue给标签动态绑定title

    在利用vue开发时,如果标签宽度比较小,我们需要利用overflow:hidden;text-overflow:ellipsis;white-space: nowrap;对其进行隐藏,但隐藏后如何读其 ...

  7. java面试系列<4>——IO

    面试系列--javaIO 一.概述 java的IO主要分为以下几类: 磁盘操作:File 字节操作:InputStream 和 OutputStream 字符操作:Reader 和 Writer 对象 ...

  8. The Blocks Problem UVA - 101

      Many areas of Computer Science use simple, abstract domains for both analytical and empirical stud ...

  9. TEX Quotes UVA-272

    ​ TEX is a typesetting language developed by Donald Knuth. It takes source text together with a few ...

  10. jasypt在springboot项目中遇到异常:Error creating bean with name 'enableEncryptablePropertySourcesPostProcessor' defined in class path resource

    背景 在使用jasypt对spring boot的配置文件中的敏感信息进行加密处理时,使用stater直接启动时,遇到了一个异常 <dependency> <groupId>c ...