08-09 性能测试--CPU分析
Linux 监控工具
【08-09 性能测试--CPU分析】top:展示所有进程信息
vmstat:展示系统活动,硬件和系统信息
vmstat pid 10
ps aux | sort -k3nr | head -n 10
:展示 CPU / 内存排名
free -g
iostat -x -k -d
pidstat -u -p ALL
[root@ZT-TEST ~]# pidstat -p 8938 -w 1 10
Linux 3.10.0-957.el7.x86_64 (ZT-TEST)2021年10月03日_x86_64_(4 CPU)10时13分44秒UIDPIDcswch/s nvcswch/sCommand
10时13分45秒4289381.001.00gsd-color
10时13分46秒4289381.000.00gsd-color
10时13分47秒4289381.000.00gsd-color
cswch/s:主动切换;值过高,说明内存 IO 资源不足
nvcswch/s:被动切换;值过高,说明时间片不足
mpstat:展示 CPU 所有内核的使用情况
mpstat -P ALL 1
netstat -anp | grep pid | wc -l
jstat -gcutil pid 1000
dstat -y
strace -tt -f -p pid
lscpu
[root@ZT-TEST ~]# lscpu
Architecture:x86_64
CPU op-mode(s):32-bit, 64-bit
Byte Order:Little Endian
CPU(s):4# 逻辑 CPU 个数
On-line CPU(s) list:0-3
Thread(s) per core:1# 线程,每个 核 中有1个线程
Core(s) per socket:1# 核,指每个 卡槽 下有1个核
座:4# socket-卡槽,指每个 CPU 下有4个卡槽
NUMA 节点:1
厂商 ID:GenuineIntel
CPU 系列:6
型号:45
型号名称:Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
步进:7
CPU MHz:2600.000
BogoMIPS:5200.00
超管理器厂商:VMware
虚拟化类型:完全
L1d 缓存:32K
L1i 缓存:32K
L2 缓存:256K
L3 缓存:20480K
NUMA 节点0 CPU:0-3
Flags:fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm ssbd ibrs ibpb stibp tsc_adjust arat spec_ctrl intel_stibp flush_l1d arch_capabilities
负载与利用率 CPU负载
命令:
top
[root@ZT-TEST ~]# top
top - 18:05:32 up 214 days,3:19,1 user,load average: 0.01, 0.02, 0.05
Tasks: 263 total,1 running, 262 sleeping,0 stopped,0 zombie
%Cpu(s):0.8 us,0.2 sy,0.0 ni, 99.0 id,0.0 wa,0.0 hi,0.0 si,0.0 st
KiB Mem :8174056 total,331764 free,3016584 used,4825708 buff/cache
KiB Swap:4194300 total,4191968 free,2332 used.4297980 avail MemPID USERPRNIVIRTRESSHR S%CPU %MEMTIME+ COMMAND
8938 gdm200777872760529500 S2.00.92493:51 gsd-color
12511 root200 5735740 14869616064 S0.71.8 358:06.15 java
4785 root20016423225361644 R0.30.00:00.06 top
5820 root20032021668805388 S0.30.1 282:22.54 vmtoolsd
平均负载:
load average: 0.01, 0.02, 0.05
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数
- 可运行状态的进程:正在使用 CPU 或者正在等待 CPU 的进程,也就是处于 R 状态(Running 或 Runnable)的进程
- 不可中断状态的进程:正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应,也就是我们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程
当平均负载等于 CPU(s): 4 (逻辑 CPU 个数) ,说明每个 CPU 都得到了充分利用
通过
top
查看整体每个进程的 CPU 利用率通过
mpstat -P ALL 1
查看逻辑 CPU 利用率[root@ZT-TEST ~]# mpstat -P ALL 1
Linux 3.10.0-957.el7.x86_64 (ZT-TEST)2021年10月02日_x86_64_(4 CPU)18时16分57秒CPU%usr%nice%sys %iowait%irq%soft%steal%guest%gnice%idle
18时16分58秒all0.750.000.250.000.000.000.000.000.0099.00
18时16分58秒00.000.000.000.000.000.000.000.000.00100.00
18时16分58秒11.010.001.010.000.000.000.000.000.0097.98
18时16分58秒22.000.000.000.000.000.000.000.000.0098.00
18时16分58秒30.000.000.000.000.000.000.000.000.00100.00# 0--3 分别代表4个 CPU
mpstat -P ALL 1
的结果分析:- %usr:用户空间;导致空间不足原因:代码、项目运行
- %sys:系统空间;导致空间不足原因:内存不足、CPU不足、IO故障、网络故障……
- %irq:上下文切换
- %soft:软中断
- %steal:硬中断
- CPU 利用率=100%,平均负载=CPU 个数:理想状态,CPU 得到充分利用,队列中没有排队等待的线程
- CPU 利用率=100%,平均负载>CPU 个数:CPU 满载,超负荷运行,队列中有排队等待的线程
- CPU 利用率<100%,平均负载
vmstat 1 10
[root@ZT-TEST ~]# vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
rbswpdfreebuffcachesisobiboincs us sy id wa st
103368 29226804204 434518400010000 10000
003368 29226884204 4345216000814322910 10000
003368 29226884204 4345216000017328110 9900
# 当 r + b 远远大于 CPU 线程数,说明系统处于过载状态
进程优先级 命令:
top
[root@ZT-TEST ~]# top
top - 10:13:15 up 214 days, 19:26,1 user,load average: 0.06, 0.05, 0.05
Tasks: 262 total,1 running, 261 sleeping,0 stopped,0 zombie
%Cpu(s):0.7 us,0.2 sy,0.0 ni, 99.2 id,0.0 wa,0.0 hi,0.0 si,0.0 st
KiB Mem :8174056 total,338476 free,3015636 used,4819944 buff/cache
KiB Swap:4194300 total,4191968 free,2332 used.4282596 avail MemPID USERPRNIVIRTRESSHR S%CPU %MEMTIME+ COMMAND
8938 gdm200778004762449500 S1.70.92510:43 gsd-color
26591 kingkong200 57227841.2g24080 S0.7 15.6 765:28.80 java
5820 root20032021668805388 S0.30.1 283:16.87 vmtoolsd
5860 avahi2006236424641864 S0.30.0 458:16.62 avahi-daemon
12511 root200 5735740 14869616064 S0.31.8 363:33.44 java
31958 root20016423225361644 R0.30.00:00.04 top
PR:进程的实时优先级;范围是从 0 到 99。PR 的值越高,进程优先级就越高
NI:范围从-20 到+19,正值表示低优先级,负值表示高优先级。0 表示不调整该进程的优先级
- 两者关系:NI 越低,进程时间片越多,PR 值越低,进程的优先级就越高
- 进程优先级调整方式:
top
命令下按 R 键,先输入进程号,再输入优先级数值(-10~+19)
参考链接:
https://blog.csdn.net/weixin_...
安装:
yum install -y epel-release.noarch && yum -y update
yum install -y stress stress-ng
常用命令(使用注意事项:不要生成过多进程,会损伤 CPU):
stress-ng -c 2 -t 30 -c
:指定进程数 -t 指定时间stress-ng -c 2 --cpu-method pi
:产生 2 个进程做圆周率算法压力stress-ng -c 16 --cpu-method all
:生成 16 个进程使用多种不同的算法竞争 CPUtaskset -c 16 stress-ng --timeout 30 --cpu 1
:生成 16 个进程对索引为 0 的逻辑 CPU 施加压力, 持续 30 秒stress-ng -c 16 --timeout 300
:模拟 16 个进程争夺 CPU 持续 300 秒stress-ng -i 1 --timeout 600
:模拟 IO 进程
推荐阅读
- 女生该不该用小号测试男朋友()
- BNC公链|BNC公链 | Eth2.0测试网Topaz已质押超100万枚ETH
- 我的软件测试开发工程师书单
- 数据库|SQL行转列方式优化查询性能实践
- 性能测试中QPS和TPS的区别
- 如何在手机上查看测试vue-cli构建的项目
- 工作好忙
- javascript|javascript 性能测试笔记
- 灵魂测试……
- Android智能手表MMI测试检测系统