范军Linux优化学习笔记之怎么理解“平均负载”

当我们的系统很慢的时候,通常的做法是登陆到服务器上执行top或者uptime查看服务器的运行情况对吧,比如像下面这个样子

03:07:33 up  3:24,  3 users,  load average: 0.00, 0.01, 0.05

但是我想问的是有多少人知道这个命令显示内容的含义呢?反正我是不太清楚的,我只是知道后面三个数字表示的是1分钟,5分钟,15分钟的平均负载情况。

既然像我这种不清楚uptime显示内容含义的怎么办呢?我们可以man uptime呀!

DESCRIPTION
       uptime  gives a one line display of the following information.  The current time, how long the system has been running, how many users are currently logged on, and the system load
       averages for the past 1, 5, and 15 minutes.

       This is the same information contained in the header line displayed by w(1).

       System load averages is the average number of processes that are either in a runnable or uninterruptable state.  A process in a runnable state is either using the CPU  or  waiting
       to  use the CPU.  A process in uninterruptable state is waiting for some I/O access, eg waiting for disk.  The averages are taken over the three time intervals.  Load averages are
       not normalized for the number of CPUs in a system, so a load average of 1 means a single CPU system is loaded all the time while on a 4 CPU system it means it was idle 75% of  the
       time.

翻译过来就是系统平均负载是正在运行中进程或者非中断进程数量的平均数。一个运行状态的进程可能是正在使用cpu或者等待使用cpu的进程,一个非中断状态的进程指的是等待IO访问的进程,例如等待硬盘操作的进程。

那么按照官方的说法,系统平均负载等于cpu的个数才是最理想的状态,平均负载高于cpu的个数说明我们的服务器负载高。

那问题又来了,我们怎么看一个Linux的cpu个数呢?使用以下命令查看

grep 'model name' /proc/cpuinfo | wc -l

在这里插入图片描述
像我的虚拟机只有一个cpu,那么uptime的结果小于1才会合适的,那我的虚拟机现在的
系统平均负载结果是什么呢?执行uptime去看一下呢
在这里插入图片描述
从结果看我的虚拟机平均负载很好,那为什么需要三个时间呢?我猜测是为了观察负载的趋势吧,比如我的虚拟机1分钟的负载是0.00,5分钟之前的负载是0.01,15分钟的负载是0.05说明我的虚拟机的负载是在降低

说了这么多理论的东西,那么到底我这边说的对还是不对呢?怎么能实验出来?

实验步骤:
从官方文档中得知,平均负载包括正在使用cpu和等待使用cpu和非中断进程,那我们就
模拟一个密集cpu的进程和密集IO的进程。

那我接着就百度一下,那个工具能实现模拟Linux密集cpu和密集IO的程序的效果
我这边使用两个工具:

stress 是一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场 景
而 sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。我们的案例会用 到这个包的两个命令 mpstat 和 pidstat
mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标, 以及所有 CPU 的平均指标。
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及 上下文切换等性能指标。

首先呢我们要安装epel-release yum源 ,命令:yum install -y epel-release
接着安装stress,命令如下yum install -y stress
如图如下图显示那么证明安装成功了。
在这里插入图片描述
接着再安装sysstat工具包
在这里插入图片描述
终于好了,现在就开始我们的实验吧!!!!!

我这边打开3个会话

会话1:stress --cpu 1 --timeout 600
会话2:watch -d uptime
会话3:mpstat -P ALL 5

结果如下:
在这里插入图片描述
在这里插入图片描述
备注:从会话2看到平均负载一直在升高,会话3结果得知是cpu的使用率上去导致了平均负载的提升,而不是IO

这个时候我们想看一下是哪个进程导致了cpu使用高了,很简单嘛,top呀
在这里插入图片描述
扩展:
stress使用
https://www.cnblogs.com/jingmu/p/7645548.html

sysstat工具包使用
https://www.cnblogs.com/xiaochina/p/5920854.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值