CPU性能指标:平均负载

news/2024/10/22 23:06:27/

问题

我们经常使用linux的top命令或uptime命令,来查看os的平均负载,类似如下:

$ uptime02:27:16 up 11:14,  1 user,  load average: 0.00, 0.01, 0.00

这个load average平均负载,具体是什么意思?

3个数含义

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

cpu核数

lscpu
Architecture:          aarch64CPU op-mode(s):      64-bitByte Order:          Little Endian
CPU(s):                6

这个CPU(s):就是表示这个台电脑的cpu核数。
这样基于,上面两个指标,就可以知道cpu利用率是多少了。

cpu密集型场景

# 使用stress命令制造1进程,进行复杂计算,600秒后停止
stress --cpu 1 --timeout 600
stress: info: [24183] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
# uptime观察实时平均负载
watch -d uptime
Every 2.0s: uptime                                                                                                                                                                    ubuntu: Mon May 29 06:32:38 202306:32:38 up 15:19,  4 users,  load average: 0.55, 0.68, 0.47# 使用mpstat观察所有CPU运行状态,每5秒报告一次
mpstat -P ALL 5
Linux 5.15.0-71-generic (ubuntu) 	05/29/2023 	_aarch64_	(6 CPU)06:33:02 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
06:33:07 AM  all   16.68    0.00    0.03    0.07    0.00    0.13    0.00    0.00    0.00   83.08
06:33:07 AM    0    0.00    0.00    0.20    0.20    0.00    0.40    0.00    0.00    0.00   99.20
06:33:07 AM    1    0.00    0.00    0.00    0.00    0.00    0.40    0.00    0.00    0.00   99.60
06:33:07 AM    2    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.80
06:33:07 AM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
06:33:07 AM    4  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
06:33:07 AM    5    0.00    0.00    0.00    0.20    0.00    0.00    0.00    0.00    0.00   99.80
# 从mpstat报告可以知道4号CPU的存在用户进程达到了100%
# 使用pidstat命令观察进程占用CPU的使用情况,每5秒报告一次
pidstat -u 5
Linux 5.15.0-71-generic (ubuntu) 	05/29/2023 	_aarch64_	(6 CPU)06:35:16 AM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
06:35:21 AM     0      2111    0.20    0.00    0.00    0.00    0.20     5  containerd
06:35:21 AM  1000     25471  100.00    0.00    0.00    0.00  100.00     4  stress
06:35:21 AM  1000     25515    0.00    0.20    0.00    0.00    0.20     3  watch
# 从报告中可以知道stress进程,在4号CPU上面使用率达到了100%

io密集型场景

# 使用stress命令制造1个进程不对队磁盘进程IO操作,从而制造IO密集型场景,600秒后停止
stress -i 1 --timeout 600
# 观察实时平均负载
watch -d uptime
# 使用mpstat观察所有CPU运行状态,每5秒报告一次
mpstat -P ALL 5
Linux 5.15.0-71-generic (ubuntu) 	05/29/2023 	_aarch64_	(6 CPU)
06:43:42 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
06:43:47 AM  all    0.03    0.00    1.41   14.45    0.00    0.03    0.00    0.00    0.00   84.07
06:43:47 AM    0    0.00    0.00    0.00    0.00    0.00    0.20    0.00    0.00    0.00   99.80
06:43:47 AM    1    0.00    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00   99.60
06:43:47 AM    2    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.80
06:43:47 AM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
06:43:47 AM    4    0.00    0.00    7.01   78.98    0.00    0.00    0.00    0.00    0.00   14.01
06:43:47 AM    5    0.00    0.00    1.41   11.47    0.00    0.00    0.00    0.00    0.00   87.12
# 从报告中可以知道4号CPU中存在78.98%io等待。
# 使用pidstat命令观察进程占用CPU的使用情况,每5秒报告一次
pidstat -u 5
Linux 5.15.0-71-generic (ubuntu) 	05/29/2023 	_aarch64_	(6 CPU)06:45:30 AM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
06:45:35 AM     0       206    0.00    1.20    0.00    0.00    1.20     5  kworker/5:1H-kblockd
06:45:35 AM     0       256    0.00    2.00    0.00    0.00    2.00     4  kworker/4:1H-kblockd
06:45:35 AM     0      2111    0.00    0.20    0.00    0.00    0.20     5  containerd
06:45:35 AM     0      2990    0.00    0.20    0.00    0.00    0.20     5  kworker/5:2-events
06:45:35 AM  1000     26459    0.00    9.58    0.00    3.19    9.58     4  stress
# pidstat报告中可以知道4号cpu上面wait最大为3.19%,是stress进程

cpu争夺场景

# 这里创造24个进程,600秒后停止
stress -c 24 --timeout 600
# 因为这里测试的机器有6个核数,基于此数据,我创造4倍的进程数,来发起一群进程cpu争夺战
# 观察实时平均负载
watch -d uptime
# 使用mpstat观察所有CPU运行状态,每5秒报告一次
mpstat -P ALL 5
Linux 5.15.0-71-generic (ubuntu) 	05/29/2023 	_aarch64_	(6 CPU)06:53:45 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
06:53:50 AM  all  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
06:53:50 AM    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
06:53:50 AM    1  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
06:53:50 AM    2  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
06:53:50 AM    3  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
06:53:50 AM    4  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
06:53:50 AM    5  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
# 这次每个cpu的用户进程使用率都100%
# 使用pidstat命令观察进程占用CPU的使用情况,每5秒报告一次
pidstat -u 5
Linux 5.15.0-71-generic (ubuntu) 	05/29/2023 	_aarch64_	(6 CPU)06:55:03 AM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
06:55:08 AM     0        60    0.00    0.20    0.00    0.00    0.20     1  kcompactd0
06:55:08 AM     0       346    0.00    0.20    0.00    0.00    0.20     2  kworker/2:2-events
06:55:08 AM     0      2111    0.00    0.20    0.00    0.00    0.20     5  containerd
06:55:08 AM     0     17092    0.00    0.20    0.00    0.00    0.20     0  irqbalance
06:55:08 AM  1000     27466   24.90    0.00    0.00   74.90   24.90     2  stress
06:55:08 AM  1000     27467   24.90    0.00    0.00   75.10   24.90     2  stress
06:55:08 AM  1000     27468   24.90    0.00    0.00   74.70   24.90     4  stress
06:55:08 AM  1000     27469   24.90    0.00    0.00   74.50   24.90     1  stress
06:55:08 AM  1000     27470   24.90    0.00    0.00   74.50   24.90     1  stress
06:55:08 AM  1000     27471   25.10    0.00    0.00   74.70   25.10     3  stress
06:55:08 AM  1000     27472   24.90    0.00    0.00   74.70   24.90     5  stress
06:55:08 AM  1000     27473   24.70    0.00    0.00   74.90   24.70     0  stress
06:55:08 AM  1000     27474   24.90    0.00    0.00   74.50   24.90     3  stress
06:55:08 AM  1000     27475   24.90    0.00    0.00   74.90   24.90     1  stress
06:55:08 AM  1000     27476   24.90    0.00    0.00   74.50   24.90     0  stress
06:55:08 AM  1000     27477   24.90    0.00    0.00   74.70   24.90     4  stress
06:55:08 AM  1000     27478   24.90    0.00    0.00   74.90   24.90     5  stress
06:55:08 AM  1000     27479   25.10    0.00    0.00   75.30   25.10     4  stress
06:55:08 AM  1000     27480   24.90    0.00    0.00   74.70   24.90     5  stress
06:55:08 AM  1000     27481   24.90    0.00    0.00   74.90   24.90     4  stress
06:55:08 AM  1000     27482   24.90    0.00    0.00   74.50   24.90     2  stress
06:55:08 AM  1000     27483   24.90    0.00    0.00   74.90   24.90     3  stress
06:55:08 AM  1000     27484   24.90    0.00    0.00   74.90   24.90     1  stress
06:55:08 AM  1000     27485   24.90    0.00    0.00   74.70   24.90     3  stress
06:55:08 AM  1000     27486   24.70    0.00    0.00   74.50   24.70     2  stress
06:55:08 AM  1000     27487   24.90    0.00    0.00   74.90   24.90     5  stress
06:55:08 AM  1000     27488   24.90    0.00    0.00   75.10   24.90     0  stress
06:55:08 AM  1000     27489   25.10    0.00    0.00   75.10   25.10     0  stress
# 从pidstat报告中可以知道等待cpu时间的都基本上达到了75%,都是stress进程在那里等

总结

当平均负载高于CPU数量70%的时候,就需要进行高负载问题排查了。

参考:

  • mpstat
  • pidstat
  • Linux stress 命令

http://www.ppmy.cn/news/102369.html

相关文章

模板方法-

定义:又叫模板模式,是指定义一个算法骨架,并允许子类为其中的一个或多个步骤提供实现。 适用场景: 1、一次性实现一个算法不变的部分,并将可变的行为留给子类来实现 2、各子类中公共的行为被提取出来并集中到一个公共的父类中,从而避免代码重复 优点…

Centos stream 8 使用 cephadm 安装 Ceph (17.2.6 quincy)集群

一、环境 1、机器列表 名称IP角色备注cephnode12010.0.49.120_admin双网卡 双硬盘/sda/60G /sdb/160Gcephnode12110.0.49.121_storage双网卡 双硬盘/sda/60G /sdb/160G cephnode12210.0.49.122_storage双网卡 双硬盘/sda/60G /sdb/160G 2 、软件环境 [rootcephnode120 …

【华为OD统一考试B卷 | 100分】用户调度问题(C++ Java JavaScript Python)

文章目录 题目描述 用户调度问题输入描述输出描述ACM输入输出模式用例解题思路机考代码查重javaC++pythonjavaScript题目描述 用户调度问题 在通信系统中,一个常见的问题是对用户进行不同策略的调度,会得到不同的系统消耗和性能。 假设当前有n个待串行调度用户,每个用户可以…

OSI(Open System Interconnect)开放系统互联参考模型-7层模型(改版)

OSI(Open System Interconnect)开放系统互联参考模型-7层模型 1. OSI七层模型1.1 基本概念1.2 七层模型的划分1.3 数据传输过程 2. TCP/IP四层模型2.1 基本概念2.2 四层模型的划分2.3 数据传输过程 3. 涉及的协议及概念3.1 MTU1. 概念2. 关于mtu取值3. 修…

斑梨电子0.96寸LCD显示屏扩展板80X160 IPS适配Air10X开发板/海凌科W806开发板

spotpear.cn/index/product/detail/id/1338.html detail.tmall.com/item.htm?id720906602241&spma211lz.success.0.0.6cc02b90cwGrbH 【产品参数】 [] 尺寸:0.96寸 [] 显示面板:IPS [] 分辨率:80x 160 [] 驱动芯片:默认…

Dockerfile(6) - EXPOSE 指令详解

EXPOSE 通知 Docker 容器在运行时监听指定的网络端口 EXPOSE 端口号 EXPOSE 端口号/协议 默认协议是 TCP 同时在 TCP、UDP 上暴露端口 EXPOSE 80/tcp EXPOSE 80/udp EXPOSE 原理 个人理解:EXPOSE 暴露的端口更像是指明了该容器提供的服务需要用到的端口EXPOSE …

数据类岗位面试随想录

数据分析或者是偏向数据分析的数据开发岗,要求无非就是SQL、Python和业务相关的问题。 1 SQL问答 基本这些问题和期末考试的难度比,是简单的。和学校所教的比,基本超纲的问题只会有窗口函数。这一部分面试官一般不会问你难的问题&#xff0c…

创意无限,纪念不止——我的创作纪念日

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…