Linux-平均负载指数
系统平均负载
什么是平均负载
# 什么是平均负载
平均负载可以反映出,单位时间内,系统处于可运行状态和不可中断状态的进程数,也就是活跃进程数。
# 可运行状态的进程 STAT 对应 R
# 不可中断状态进程 STAT 对应 D
# 平均负载与CPU有关,但不止和CPU有关
平均负载多少合理
举个例子,当CPU核心数为 4 , 2 , 1 时,平均负载为 2 的意味着什么?
| CPU核心数 | 平均负载 | 概念 |
|---|---|---|
| 4 | 2 | 50%的CPU已经被占用 |
| 2 | 2 | 100%的CPU已经被占用 |
| 1 | 2 | 只有50%的进程占用了CPU |
如何观察平均负载
# load average: 0.00, 0.01, 0.05
0.00 # 1 分钟的平均负载 占用 0% 的CPU以及其他资源
0.01 # 5 分钟的平均负载 占用 1% 的CPU以及其他资源
0.05 # 15 分钟的平均负载 占用 5% 的CPU以及其他资源
# 平均负载与CPU有关,但不止和CPU有关
# 例 1:
# 若系统平均负载为 load average: 5.00,2.00,1.00 ,那么最近 1 分钟的平均负载变大,说明系统的平均负载趋势为增高,需要检查系统进程运行情况
# 例 2:
# 若系统平均负载为 load average: 1.00,2.00,5.00 ,那么 15 分钟的平均负载较大,说明徐彤的平均负载趋势为减小,可以检查 15 分钟前的系统进程运行情况
# 例 3:
# 若系统平均负载为 load average: 2.00,2.00,2.00 ,那么平均负载很“稳定”(是否稳定观察CPU核心数而定)
# 一般情况下,平均负载高于 70% ,就需要调试(70%=平均负载/CPU总核心数)
平均负载和CPU的使用率的区别
平均负载:平均负载指的是每单位时间内,处于可运行状态和不可中断状态的进程数,所以,它不仅包括了正在使用CPU的进程数,还包括等待CPU和等待IO的进程数。
CPU的使用率:单位时间内,CPU繁忙情况的统计,跟平均负载在并不一定完全对应。
为了区分平均负载和CPU的使用率之间的区别,我们要引入CPU密集型任务和I/O密集型任务的概念。
## 1. 举例 CPU密集型进程 和 IO密集型进程
# CPU密集型进程(特点是要进行大量的计算,消耗CPU资源)
CPU密集型也叫计算密集型,CPU有很多运算和逻辑判断要处理,使用大量的CPU会导致平均负载升高。
# IO密集型进程(特点是99%的时间都花在I/O读写上,花在CPU上的时间很少)
IO密集型进程,等待IO也会导致平均负载升高,此时大部分时间的CPU状态是在等待I/O读写操作,CPU使用率不一定很高。
# 2. 举例 大量进程调度
大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高。
平均负载分析
stress是Linux系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
mpstat是多核CPU性能分析工具,用来实时检查每个CPU的性能指标,以及所有CPU的平均指标。
pidstat是一个常用的进程性能分析工具,用来实时查看进程的CPU,内存,IO,以及上下文切换等性能指标。
# 安装 stress 软件包 以及 sysstat 软件包
[root@wqh06 ~]# yum -y install stress sysstat
11.7.3版本的sysstat,pidstat命令结果中包含了wait占用的时间百分比,点击下载rpm包
执行CPU密集型任务
## 案例一 执行CPU密集型任务
# CPU密集型进程压力测试(使CPU满载利用)
[root@wqh06 ~]# stress --cpu 1 --timeout 500
stress: info: [7749] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
# 查看平均负载指数
[root@wqh06 ~]# watch -d uptime
Every 2.0s: uptime
Wed Apr 22 19:11:27 2020
19:11:27 up 6:53, 3 users, load average: 0.54, 0.17, 0.09
# 使用mpstat -u 5 1 所有CPUs的负载,使用 mpstat -P ALL 列出总体以及每个CPU的负载
[root@wqh06 ~]# mpstat -u 5 1
Linux 3.10.0-957.el7.x86_64 (wqh06) 04/22/2020 _x86_64_ (1 CPU)
07:24:25 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07:24:30 PM all 99.80 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: all 99.80 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00
[root@wqh06 ~]# mpstat -P ALL 5 1
Linux 3.10.0-957.el7.x86_64 (wqh06) 04/22/2020 _x86_64_ (1 CPU)
07:27:37 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07:27:42 PM all 99.80 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:27:42 PM 0 99.80 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 99.80 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: 0 99.80 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00
# 使用pidstat -u 5 1 观察
[root@wqh06 ~]# pidstat -u 5 1
Linux 3.10.0-957.el7.x86_64 (wqh06) 04/22/2020 _x86_64_ (1 CPU)
07:24:32 PM UID PID %usr %system %guest %wait %CPU CPU Command
07:24:37 PM 0 8634 99.40 0.00 0.00 0.60 99.40 0 stress
07:24:37 PM 0 8652 0.00 0.20 0.00 0.00 0.20 0 pidstat
Average: UID PID %usr %system %guest %wait %CPU CPU Command
Average: 0 8634 99.40 0.00 0.00 0.60 99.40 - stress
Average: 0 8652 0.00 0.20 0.00 0.00 0.20 - pidstat

执行I/O密集型任务
## 案例二 执行I/O密集型任务
# I/O密集型进程压力测试
[root@wqh06 ~]# stress --io 5 --timeout 500
stress: info: [8018] dispatching hogs: 0 cpu, 100 io, 0 vm, 0 hdd
# 查看平均负载指数
[root@wqh06 ~]# watch -d uptime
Every 2.0s: uptime Wed Apr 22 19:15:30 2020
19:47:09 up 6 min, 4 users, load average: 4.09, 1.45, 0.57
### 注意:当运行命令 `stress --io 1000 --timeout 500` 时,会有 1000 个stress进程,平均负载指数会飙升,但CPU并不繁忙,运行一些指令也不会卡,也就是说I/O密集型任务会影响平均负载,但CPU利用率并不高


大量进程调度
## 案例三 大量进程调度
# 当前只有一个CPU核心,测试四个CPU核心的进程调度(给予四倍的活跃进程数)
[root@wqh06 ~]# stress --cpu 4 --timeout 500
stress: info: [8263] dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd
# 查看平均负载指数
[root@wqh06 ~]# watch -d uptime
Every 2.0s: uptime Wed Apr 22 19:15:30 2020
19:38:21 up 7:20, 3 users, load average: 4.12, 3.09, 4.77

关于平均负载的总结
- 1.平均负载高有可能是CPU密集型进程导致的
- 2.平均负载高并不一定代表CPU的使用率就一定高,还有可能是I/O繁忙
- 3.当发现负载高时,可以使用mpstat、pidstat等工具,快速定位到,负载高的原因,从而做出处理
Linux-平均负载指数的更多相关文章
- linux 平均负载 load average 的含义【转】
文章来源: linux 平均负载 load average 的含义 load average 的含义 平均负载(load average)是指系统的运行队列的平均利用率,也可以认为是可运行进程的平均数 ...
- linux 平均负载 load average 的含义
load average 的含义 平均负载(load average)是指系统的运行队列的平均利用率,也可以认为是可运行进程的平均数. 以路况为例, 单核CPU.单车道 情况如下: 0.00-1. ...
- linux平均负载的理解及原因排查
当系统响应缓慢时,一般会用top或uptime命令查看系统负载是否过高. 例如输入uptime命令显示如下图,其中23:47:19表示现在的时间,up 260 days,14:39表示系统运行了多久, ...
- 理解 Linux 的平均负载和性能监控
在本文中,我们将解释 Linux 系统中最关键的管理任务之一——关于系统 / CPU 的负载load和平均负载Load average的性能监控. 首先来看所有的类 UNIX 系统中两个重要的表述 ...
- 【Linux性能调优一】观大局:系统平均负载load average
要测试linux系统性能及调优,首先要从全局检查linux的平均负载 1.什么是平均负载 load average 系统平均负载,平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数, ...
- 怎么理解linux的平均负载及平均负载高后的排查工具
什么是平均负载 平均负载可以对于我们来说及熟悉又陌生,但我们问平均负载是什么,但大部分人都回答说平均负载不就是单位时间内CPU使用率吗?其实并不是这样的,如果可以的话,可以 man uptime 来了 ...
- linux性能分析之平均负载
平均负载 1,执行 top 或者 uptime 命令 来了解系统负载 uptime 分析显示 当前时间,系统运行时间,正在登录用户数 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程 ...
- Linux系统中到底应该怎么理解系统的平均负载
02 | 基础篇:到底应该怎么理解“平均负载”? 每次发现系统变慢时,我们通常做的第一件事,就是执行 top 或者 uptime 命令,来了解系统的负载情况.比如像下面这样,我在命令行里输入了 upt ...
- 1 理解Linux系统的“平均负载”
什么是平均负载 我们知道使用top或uptime可以用来了解系统的负载情况. uptime 2 02:34:03 up 2 days, 20:14, 1 user, load average: 0.6 ...
随机推荐
- MySQL全面瓦解17:触发器相关
关于触发器 现实开发中我们经常会遇到这种情况,比如添加.删除和修改信息的时候需要记录日志,我们就要在完成常规的数据库逻辑操作之后再去写入日志表,这样变成了两步操作,更复杂了. 又比如删除一个人员信息的 ...
- C#实现一个弹窗监控小程序
一..实现弹窗淡入淡出等效果即弹窗自动关闭 技术要点: 1.弹窗效果(淡入淡出,自下而上滑入)使用WIN API实现 2.弹出的窗体在一定时间后,自动关闭使用一个timer实现,弹窗开始是,打开tim ...
- 萌新入门之python基础语法
首先我们先了解一些python最最基础的入门 1.标识符 定义:我们写代码的时候自己取得名字比如项目名,包名,模块名这些: 规范:1.数字/字母/下划线组成,不能以数字开头 2.起名字要见名知意 3. ...
- Linux TCP漏洞 CVE-2019-11477 CentOS7 修复方法
CVE-2019-11477漏洞简单介绍 https://cert.360.cn/warning/detail?id=27d0c6b825c75d8486c446556b9c9b68 RedHat用户 ...
- FLask的偏函数应用
偏函数 实际上,偏函数主要辅助原函数,作用其实和原函数差不多,不同的是,我们要多次调用原函数的时候,有些参数,我们需要多次手动的去提供值.而偏函数便可简化这些操作,减少函数调用,主要是将一个或多个参数 ...
- Py-re正则模块,log模块,config模块,哈希加密
9.re正则表达式模块,用于字符串的模糊匹配 元字符: 第一:点为通配符 用.表示匹配除了换行符以外的所有字符 import re res=re.findall('a..x','adsxwassxdd ...
- Eureka详解系列(二)--如何使用Eureka(原生API,无Spring)
简介 通过上一篇博客 Eureka详解系列(一)--先谈谈负载均衡器 ,我们知道了 Eureka 是什么以及为什么要使用它,今天,我们开始研究如何使用 Eureka. 在此之前,先说明一点.网上几乎所 ...
- Python+Selenium+Unittest实现PO模式web自动化框架(4)
1.PageLocators目录下的具体模块 2.PageLocators目录下主要放置个页面的元素定位.用于统一管理个页面的定位元素. 例如:登录页面的元素定位login_page_locator. ...
- PE节表
- How to Gracefully Close Channels
小结: 1. When a goroutine sends a value to a channel, we can view the goroutine releases the ownership ...