什么是平均负载,以及影响平均负载的因素
什么是平均负载,以及影响平均负载的因素
一.平均负载的相关概念
1.1 平均负载:指的是单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是单位时间内活跃的进程数。
1.2 可运行状态进程:指的是正在使用CPU或者正在等待CPU调度的进程,也就是处于Running或Runnable的进程。
1.3 不可中断状态进程:指的是正在处于内核态关键流程中的进程,比如最常见的就是调用磁盘的IO读取,简而言之就是当一个进程向磁盘读写数据的时候,为了保证数据的一致性,在得到磁盘回复前,是不能被其他进程或中断打短的,这个时候进程就处于不可中断的状态,如果此时被其他的进程打断就容易出现进程和磁盘中的数据不一致的情况。
二.如何查看系统平均负载
2.1 uptime 命令的使用
查看系统的平均负载我们可以使用uptime命令,如下:
[root@VM-4-14-centos ~]# uptime17:37:01 up 7:19, 4 users, load average: 0.00, 0.03, 0.66
17:37:01 代表的是当前时间 up 7:19 代表的是系统运行时间 4 users 代表的是正在登录的用户数
最后三个数字 代表的是过去 1分钟,5分钟,15分钟的平均负载
2.2 系统多少负载合适呢?
从平均负载的概念我们都知道它指的是平均的活跃进程数,那么最完美的就是每一个CPU上刚好运行着一个进程,这样CPU的核数得到了充分的利用。
2.3 当平均负载为4时意味着什么?
以我的云服务器为例,4个核心
在我的系统中当平均负载为4时刚好被占用,如果在8个核心的系统中则意味着有50%的CPU空闲,而在一个只有2个核心的系统中则意味着有一半的进程竞争不到CPU。
2.4 如何查看系统CPU核数
[root@VM-4-14-centos ~]# grep 'model name' /proc/cpuinfo | wc -l
4
2.5 平均负载和CPU使用率
有时候我们很容易把平均负载和CPU使用率搞错,其实是不一样的,平均负载指的是单位时间内处于可运行状态或不可中断的进程数,不仅包含了正在使用CPU的进程,还包含等待CPU和等待I/O的进程。而CPU使用率指的是单位时间内CPU的繁忙情况。其实分三种情况
CPU密集型进程,使用大量的CPU导致平均负载升高的同时也会导致CPU使用率升高,此时两者是一样的
I/O密集型进程,等待I/O会导致平均负载升高,但CPU的使用率不一定升高
大量等待CPU调度的进程也会导致平均负载升高,此时的CPU使用率也会比较高
三. 平均负载案例分析
1.机器配置,以及需要安装的包
机器配置: 4CPU ,16GB内存 , CentOS 7.8
安装 stress和sysstat ,yum install stress,yum install sysstat
stress 是一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
而 sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能的两个命令 mpstat 和 pidstat。
mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所
有CPU的平均指标。
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等
性能指标
2.场景1:CPU密集型进程
使用stress命令模拟 一个CPU使用率100%的场景
[root@VM-4-14-centos ~]# stress --cpu 1 --timeout 600
stress: info: [7345] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
使用uptime命令查看平均负载情况
[root@VM-4-14-centos ~]# uptime18:12:38 up 7:54, 5 users, load average: 0.63, 0.19, 0.15
可以看到负载有升高但是还在可承受范围内,接着我们使用mpstat查看CPU使用率的情况
[root@VM-4-14-centos ~]# mpstat -P ALL 5
Linux 3.10.0-1160.49.1.el7.x86_64 (VM-4-14-centos) 03/19/2022 _x86_64_ (4 CPU)06:14:56 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %id le
06:15:01 PM all 25.34 0.00 0.30 0.00 0.00 0.00 0.00 0.00 0.00 74. 36
06:15:01 PM 0 0.20 0.00 0.60 0.00 0.00 0.00 0.00 0.00 0.00 99. 20
06:15:01 PM 1 0.60 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 99. 00
06:15:01 PM 2 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0. 00
06:15:01 PM 3 0.40 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 99. 2006:15:01 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
06:15:06 PM all 25.34 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 74.46
06:15:06 PM 0 1.00 0.00 0.20 0.20 0.00 0.00 0.00 0.00 0.00 98.60
06:15:06 PM 1 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.80
06:15:06 PM 2 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
06:15:06 PM 3 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.6006:15:06 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
06:15:11 PM all 25.33 0.00 0.35 0.00 0.00 0.00 0.00 0.00 0.00 74.32
06:15:11 PM 0 0.60 0.00 0.60 0.00 0.00 0.00 0.00 0.00 0.00 98.80
06:15:11 PM 1 0.40 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 99.20
06:15:11 PM 2 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
06:15:11 PM 3 0.40 0.00 0.40 0.20 0.00 0.00 0.00 0.00 0.00 99.00
-P ALL 代表的是监控所有CPU,后面数字5代表的是每隔5秒输出一组数据,从结果中可以看到有一个CPU的使用率达到了100%
查看哪个进程导致了CPU使用率为100%,我们可以使用pidstat查询
[root@VM-4-14-centos ~]# pidstat -u 5 1
Linux 3.10.0-1160.49.1.el7.x86_64 (VM-4-14-centos) 03/19/2022 _x86_64_ (4 CPU)06:17:53 PM UID PID %usr %system %guest %CPU CPU Command
06:17:58 PM 0 1810 0.00 0.20 0.00 0.20 3 sgagent
06:17:58 PM 0 1867 0.20 0.20 0.00 0.40 3 barad_agent
06:17:58 PM 0 1969 0.40 0.60 0.00 1.00 0 YDService
06:17:58 PM 0 7346 99.80 0.00 0.00 99.80 2 stressAverage: UID PID %usr %system %guest %CPU CPU Command
Average: 0 1810 0.00 0.20 0.00 0.20 - sgagent
Average: 0 1867 0.20 0.20 0.00 0.40 - barad_agent
Average: 0 1969 0.40 0.60 0.00 1.00 - YDService
Average: 0 7346 99.80 0.00 0.00 99.80 - stress
从结果中可以看到是stress这个进程
场景2:I/O密集型进程
使用stress命令模拟I/O压力
[root@VM-4-14-centos ~]# stress -i 1 --timeout 600
stress: info: [12222] dispatching hogs: 0 cpu, 1 io, 0 vm, 0 hdd
查看负载情况
[root@VM-4-14-centos ~]# uptime18:47:23 up 8:29, 6 users, load average: 0.69, 0.22, 0.18
查看CPU使用率情况
[root@VM-4-14-centos ~]# mpstat -P ALL 5 1
Linux 3.10.0-1160.49.1.el7.x86_64 (VM-4-14-centos) 03/19/2022 _x86_64_ (4 CPU)07:05:35 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07:05:40 PM all 0.10 0.00 24.70 0.40 0.00 0.00 0.00 0.00 0.00 74.80
07:05:40 PM 0 0.00 0.00 96.80 1.60 0.00 0.00 0.00 0.00 0.00 1.60
07:05:40 PM 1 0.20 0.00 0.80 0.00 0.00 0.00 0.00 0.00 0.00 99.00
07:05:40 PM 2 0.20 0.00 0.60 0.00 0.00 0.00 0.00 0.00 0.00 99.20
07:05:40 PM 3 0.20 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 99.40Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 0.10 0.00 24.70 0.40 0.00 0.00 0.00 0.00 0.00 74.80
Average: 0 0.00 0.00 96.80 1.60 0.00 0.00 0.00 0.00 0.00 1.60
Average: 1 0.20 0.00 0.80 0.00 0.00 0.00 0.00 0.00 0.00 99.00
Average: 2 0.20 0.00 0.60 0.00 0.00 0.00 0.00 0.00 0.00 99.20
Average: 3 0.20 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 99.40
查看是哪个进程,导致iowait高,可以看到是stress进程导致的
pidstat -u 5 1
Linux 3.10.0-1160.49.1.el7.x86_64 (VM-4-14-centos) 03/19/2022 _x86_64_ (4 CPU)07:07:39 PM UID PID %usr %system %guest %CPU CPU Command
07:07:44 PM 0 1326 0.00 0.20 0.00 0.20 2 tat_agent
07:07:44 PM 0 1866 0.20 0.00 0.00 0.20 2 barad_agent
07:07:44 PM 0 1867 0.20 0.20 0.00 0.40 3 barad_agent
07:07:44 PM 0 1969 0.40 0.60 0.00 1.00 2 YDService
07:07:44 PM 0 14986 0.00 97.41 0.00 97.41 0 stress
07:07:44 PM 0 15292 0.00 0.40 0.00 0.40 1 kworker/u8:2
07:07:44 PM 0 15450 0.00 0.20 0.00 0.20 3 pidstatAverage: UID PID %usr %system %guest %CPU CPU Command
Average: 0 1326 0.00 0.20 0.00 0.20 - tat_agent
Average: 0 1866 0.20 0.00 0.00 0.20 - barad_agent
Average: 0 1867 0.20 0.20 0.00 0.40 - barad_agent
Average: 0 1969 0.40 0.60 0.00 1.00 - YDService
Average: 0 14986 0.00 97.41 0.00 97.41 - stress
Average: 0 15292 0.00 0.40 0.00 0.40 - kworker/u8:2
Average: 0 15450 0.00 0.20 0.00 0.20 - pidstat
场景三: 大量进程的场景
当系统中运行进程超出CPU运行能力时,就会出现等待CPU的进程
使用stress模拟八个进程
stress -c 8 --timeout 600
使用pidstat看下进程的情况
[root@VM-4-14-centos ~]# pidstat -u 5 1
Linux 3.10.0-1160.49.1.el7.x86_64 (VM-4-14-centos) 03/19/2022 _x86_64_ (4 CPU)07:17:26 PM UID PID %usr %system %guest %CPU CPU Command
07:17:31 PM 0 1326 0.00 0.20 0.00 0.20 2 tat_agent
07:17:31 PM 0 1867 0.20 0.00 0.00 0.20 3 barad_agent
07:17:31 PM 0 1939 0.20 0.00 0.00 0.20 1 YDLive
07:17:31 PM 0 1969 0.00 0.20 0.00 0.20 2 YDService
07:17:31 PM 0 16059 24.15 0.00 0.00 24.15 3 stress
07:17:31 PM 0 16060 24.35 0.00 0.00 24.35 1 stress
07:17:31 PM 0 16061 20.76 0.00 0.00 20.76 0 stress
07:17:31 PM 0 16062 22.55 0.00 0.00 22.55 2 stress
07:17:31 PM 0 16063 23.55 0.00 0.00 23.55 0 stress
07:17:31 PM 0 16064 23.35 0.00 0.00 23.35 0 stress
07:17:31 PM 0 16065 19.56 0.00 0.00 19.56 1 stress
07:17:31 PM 0 16066 23.55 0.00 0.00 23.55 0 stress
07:17:31 PM 0 16067 26.75 0.00 0.00 26.75 3 stress
07:17:31 PM 0 16068 23.95 0.00 0.00 23.95 1 stress
07:17:31 PM 0 16069 27.35 0.00 0.00 27.35 3 stress
07:17:31 PM 0 16070 23.55 0.00 0.00 23.55 1 stress
07:17:31 PM 0 16071 21.76 0.00 0.00 21.76 1 stress
07:17:31 PM 0 16072 43.31 0.00 0.00 43.31 1 stress
07:17:31 PM 0 16073 25.95 0.00 0.00 25.95 2 stress
07:17:31 PM 0 16074 24.55 0.00 0.00 24.55 1 stress
07:17:31 PM 0 16844 0.00 0.20 0.00 0.20 1 pidstatAverage: UID PID %usr %system %guest %CPU CPU Command
Average: 0 1326 0.00 0.20 0.00 0.20 - tat_agent
Average: 0 1867 0.20 0.00 0.00 0.20 - barad_agent
Average: 0 1939 0.20 0.00 0.00 0.20 - YDLive
Average: 0 1969 0.00 0.20 0.00 0.20 - YDService
Average: 0 16059 24.15 0.00 0.00 24.15 - stress
Average: 0 16060 24.35 0.00 0.00 24.35 - stress
Average: 0 16061 20.76 0.00 0.00 20.76 - stress
Average: 0 16062 22.55 0.00 0.00 22.55 - stress
Average: 0 16063 23.55 0.00 0.00 23.55 - stress
Average: 0 16064 23.35 0.00 0.00 23.35 - stress
Average: 0 16065 19.56 0.00 0.00 19.56 - stress
Average: 0 16066 23.55 0.00 0.00 23.55 - stress
Average: 0 16067 26.75 0.00 0.00 26.75 - stress
Average: 0 16068 23.95 0.00 0.00 23.95 - stress
Average: 0 16069 27.35 0.00 0.00 27.35 - stress
Average: 0 16070 23.55 0.00 0.00 23.55 - stress
Average: 0 16071 21.76 0.00 0.00 21.76 - stress
Average: 0 16072 43.31 0.00 0.00 43.31 - stress
Average: 0 16073 25.95 0.00 0.00 25.95 - stress
Average: 0 16074 24.55 0.00 0.00 24.55 - stress
Average: 0 16844 0.00 0.20 0.00 0.20 - pidstat
四.总结
其实正常分析直接可以使用top命令分析CPU使用率,分析IO的话使用iostat,iotop分析I/O读取异常,本文仅作学习记录,部分知识来源于,极客时间《Linux性能优化实战》
什么是平均负载,以及影响平均负载的因素相关推荐
- 负载均衡策略_负载均衡策略
负载均衡策略有哪些?在实际应用中,我们可能不想仅仅是把客户端的服务请求平均地分配给内部服务器,而不管服务器是否宕机.而是想使Pentium III服务器比Pentium II能接受更多的服务请求,一台 ...
- mysql 硬负载_软负载均衡和硬负载均衡
一.负载均衡 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为 Load ...
- 软负载均衡和硬负载均衡
一.负载均衡(Load Balance) 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均 ...
- 详解【负载均衡】(负载均衡算法、一致性hash、负载均衡架构分析)
作者:duktig 博客:https://duktig.cn 优秀还努力.愿你付出甘之如饴,所得归于欢喜. 本文源码参看:https://github.com/duktig666/distribute ...
- linux 系统负载异常,linux 系统负载的问题
linux 系统负载的问题 1:load Average 1.1:什么是Load?什么是Load Average? Load 就是对计算机干活多少的度量(WikiPedia:the system Lo ...
- 构建负载均衡服务器之一 负载均衡与集群详解
一.什么是负载均衡 首先我们先介绍一下什么是负载均衡: 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群).网络连接.CPU.磁盘驱动器或其他资源中分配负载, ...
- grpc系列:负载均衡及grpc负载均衡相关整理
一.负载均衡 负载均衡(LB)在微服务架构演进中具有非常重要的意义,负载均衡是高可用网络基础架构的关键组件,我们的期望是调用是平均分配在所有的服务器服务器上的,通常用于将工作负载分布到多个服务器来提高 ...
- 负载均衡集群 [ 1 ] ---集群的认识,四层负载,七层负载 ,LVS 实现四层负载均衡
文章目录 负载均衡集群 1.集群是什么? 2.负载均衡集群技术 3.负载均衡集群技术的实现 4.负载均衡分类 5.四层负载均衡(基于IP+端口的负载均衡) 6.七层的负载均衡(基于虚拟的URL或主机I ...
- 细谈负载均衡,什么是负载均衡以及负载均衡的常见方法
一.负载均衡概述 负载均衡是由多台服务器以对称的方式是组成的服务器集群,每台服务器具有等价的地位,都可以单独对位提供服务而无需借助其他服务器的辅助.通过某种负载分担技术,将请求均匀的分配到对称结构的某 ...
最新文章
- Linux-Load Average解析
- discuz数据库迁移,改密码后,相关配置文件修改
- SAP Spartacus Organization Unit List三个按钮的技术实现
- RxJava中的doOnSubscribe默认运行线程分析
- 获取某个输入框的字符长度_收藏,最全的字符串函数方法,总有你用到的~
- android 隐藏输入法时自动关闭弹窗,Android监听输入法弹窗和关闭的实现方法
- python笔记图片_python功能笔记——图像处理
- java基础技巧_java基础中的技巧
- Excel技能培训之十四 统计函数count,countif,counta,countblank,large,small,average,max,min
- 传奇各大地图编号代码库
- 电费我来降!5G用电支持十大地方标杆政策梳理
- OpenCvSharp N幅图片叠加成一张图片
- 用JavaScript来对QUOTED-PRINTABLE进行解码和编码算法
- SRT视频字幕的解析与同步原理
- D3 二维图表的绘制系列(二十三)旭日图
- yum -- Failed connect to mirrors.aliyuncs.com:80; No route to host
- Feign传递请求头信息
- Java中对excle的一些操作
- CSDN电子书PC端上线:打造高效阅读、助力问题解决
- python爬虫 - 爬取励志语录