登录 |  注册
首页 >  服务器/安全 >  Linux服务性能优化实战学习笔记 >  什么是平均负载?

什么是平均负载?

概念

平均负载指的是单位时间内(1,5,15分钟)系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数

  • 可运行状态: 正在使用CPU或者等待CPU的进程,也就是通过ps aux看到的状态为R的进程

  • 不可中断状态: 正处于内核关键流程中的进程,并且这些流程是不可被打断的,比如IO响应。也就是通过ps aux看到的状态为D的进程。

不可中断状态实际上是系统对进程和硬件设备的一种保护机制

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

平均负载多少为合理

首先要知道你的系统是多少核的CPU

[root@www ~]# grep 'model name' /proc/cpuinfo | wc -l
4

其次根据平均负载(每个核心为1作为最高标准去判断)的三个趋势时间去判断变化率,从而总结出对应的负载情况:一般超过70%的话就算是比较高了

平均负载和CPU使用率

CPU使用率:单位时间内CPU繁忙成都的统计,跟平均负载不是一一对应的

CPU密集型进程,使用大量的CPU会导致平均负载和CPU使用率

IO密集型进程,等待IO也会导致平均负载升高,但是CPU使用率不一定很高

大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高

平均负载案例分析

准备环境

OS:linux
软件需求:stress sysstat
测试命令:stress 压力测试
              mpstat   cpu性能分析工具
              pidstat    进程性能分析工具

需要打开三个终端:作为压测命令端,负载观察端,进程观察端

场景一:CPU密集型进程

终端一:查看当前平均负载&执行压测命令

[root@www ~]# uptime 
 15:08:02 up 84 days, 23:20, 1 user, load average: 0.00, 0.01, 0.05
[root@www ~]# stress --cpu 1 --timeout 600     #十分钟测试

终端二:观察平均负载变化情况

[root@www ~]# watch -d uptime

终端三:mpstat查看CPU使用率变化情况和占用cpu的进程

[root@www ~]# mpstat -P ALL 5  #抓取CPU的变化率 (5秒输出一组数据)
[root@www ~]# pidstat -u 5 1     #抓取占用CPU的进程(5秒输出一组数据)

场景二:IO密集型进程

终端一:查看当前平均负载&执行压测命令

[root@www ~]# uptime 
 15:08:02 up 84 days, 23:20, 1 user, load average: 0.00, 0.01, 0.05
[root@www ~]# stress --cpu 1 --timeout 600     #十分钟测试

终端二:观察平均负载变化情况

[root@www ~]# watch -d uptime

终端三:mpstat查看CPU使用率变化情况和占用cpu的进程

[root@www ~]# mpstat -P ALL 5  #抓取CPU的变化率 (5秒输出一组数据)
[root@www ~]# pidstat -u 5 1     #抓取占用CPU的进程(5秒输出一组数据)

场景三:大量进程场景

终端一:查看当前平均负载&执行压测命令

[root@www ~]# uptime 
 15:08:02 up 84 days, 23:20, 1 user, load average: 0.00, 0.01, 0.05
[root@www ~]# stress -c 8 --timeout 600     #八个进程模拟,十分钟测试

终端二:观察平均负载变化情况

[root@www ~]# watch -d uptime

终端三:mpstat查看CPU使用率变化情况和占用cpu的进程

[root@www ~]# mpstat -P ALL 5  #抓取CPU的变化率 (5秒输出一组数据)
[root@www ~]# pidstat -u 5 1     #抓取占用CPU的进程(5秒输出一组数据)

小结归纳

平均负载是一个快速查看系统整体性能的手段,反映了整体的负载情况。但只看平均负载本身我们并不能直接发现到底是哪里出了瓶颈,在理解平均负载的时候我们也要注意:

  • 平均负载高可能是CPU密集型进程导致的

  • 平均负载高不一定代表CPU使用率高,还有可能是IO更加繁忙了

  • 当发现负载较高的时候可以使用mpstat、pidstat等工具来辅助分析

下一篇: 操作系统CPU上下文切换
推荐文章
  • Java内存模型(JavaMemoryModel,JMM)是Java语言规范的一部分,它定义了Java虚拟机(JVM)如何管理和协调各个线程之间的共享数据访问行为,旨在解决由于多线程环境下的数据可见性、原子性和有序性问题。理解和掌握JMM是编写高效、正确并发程序的关键。一、Java内存模型概述JMM
  • 为什么要设置静态IP在安装好CentOS虚拟机以后,一般我们会通过Xshell连接到虚拟机,而不是直接使用虚拟机里面的终端(Terminal)输入命令。如果使用默认的动态分配IP,虚拟机每次开机以后IP都会改变,Xshell连接需要修改IP。所以我们需要将IP设置成静态IP,只要虚拟机开机即可连接。
  • 使用centos的wget提示:commondnotfound是因为没有安装wget这个指令安装wgetyum -y install wget
  • 一、因为Centos官网是挂在国外的服务器上,下载镜像时相比于国内的下载速度会慢很多,所以在这里向大家分享两个国内的镜像站去下载Centos镜像。二、前往阿里云镜像站下载Centos7镜像1、阿里云官网地址:https://www.aliyun.com/ 2、点击左上角的【文档与社区】展开选择【镜像
  • 现在不管安防工程还是弱电工程,与网络的联系也越来越密切了,网络基础知识中的网络命令ping命令在项目中是使用频率最高的,一般我们用的都是它的基本功能,今天和大家来详细看下Ping命令的7个基础用法,掌握了秒变大神!1、ping命令基础2、ping-t的使用3、ping-a的使用4、ping-n的使用
  • 总结下工作中遇到的GC问题。一、JVM参数设置不当机器4G,部分JVM参数设置-Xmx3296m -Xms3296m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:MaxGCPauseMillis=200 -XX:+Use
学习大纲
什么是平均负载?
 操作系统CPU上下文切换