1.uptime命令
[root@test ~]# uptime
15:35:33 up 108 days, 18:16, 1 user, load average: 0.01, 0.04, 0.05
各列代表的含义
15:35:33 //当前时间
up 108 days, 18:16 //系统运行时间
1 user //正在登录用户数
load average: 0.01, 0.04, 0.05 //依次过去1分钟,5分钟,15分钟的平均负载
2.平均负载
平均负载是指:单位时间内,系统处于可运行状态和不可中断状态的平均进程数,
也就是平均活跃进程数。
所谓可运行状态的进程,是正在使用CPU或者正在等待使用CPU的进程,也就我们使用ps命令看到的处于R状态(Running或者Runnable)的进程。
所谓不可中断状态的进程,是正处在内核态关键流程中的进程,并且这些流程是不可打断的。比如最常见的是等待硬件设备的I/O响应,也就是使用ps命令看到的D状态(Uninterruptible Sleep,也称为Disk Sleep)的进程。
3.平均负载多少时合理
1.平均负载最理想的情况是等于cpu核数
2.查看系统cpu核数
grep 'model name' /proc/cpuinfo | wc -l
3.使用平均负载的3个值,分析系统负载趋势
- 如果1分钟,5分钟,15分钟的值基本一样或者相差不大,说明系统很稳定
- 1分钟远小于15分钟的值,说明系统负载减少,之前负载很大
- 1分钟远大于15分钟的值,说明系统负载增加,着重观察,如果等于或者超过cpu个数,分析过载原因
4.平均负载和CPU使用率区别
平均负载是单位时间内的可运行状态和不可中断状态的进程数。包含正在使用的CPU的进程和等待CPU,等待IO的进程。
CPU使用率是单位时间内繁忙CPU的统计情况。跟平均负载并不一定完全对应。比如
- CPU密集型进程,使用大量CPU会导致平均负载升高,此时两者一致
- IO密集型进程,等待IO会导致平均负载升高,但是CPU使用率不一定很高
- 大量等待CPU调度的进程也会导致平均负载升高,此时的CPU使用率也会很高
5.性能工具
安装:
(1)centos:yum install -y stress sysstat
(2)ubuntu:apt install stress sysstat
介绍:
stress是一个系统压力测试工具,用作异常进程模拟平均负载升高的场景。
sysstat包含常用的Linux性能工具,用来监测和分析系统的性能。主要使用俩个命令
- mpstats是一个常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标以及所有CPU的平均指标
- pidstat是一个常用的进程性能分析工具,用来实时查询进程的CPU,内存,I/O以及上下文切换等性能指标。
6.实战
每个场景开4个终端,使用root用户登录到同一台Linux机器,使用uptime命令看一下测试前的平均负载
$ uptime
... load average: 0.00, 0.17, 0.78
场景一:CPU密集型
第一个终端运行stress命令,模拟一个CPU使用率100%的场景
$ stress --cpu 1 --timeout 600
第二个终端运行uptime命令,查看平均负载变化情况
#-d 参数表示高亮显示变化的区域
$ watch -d uptime
..., load average: 1.00, 0.75, 0.39
第三个终端使用mpstat命令,查看CPU使用率的变化情况
#-P ALL 表示监控所有CPU,后面数字5表示间隔5秒后输出一组数据
mpstat -P ALL 5
Linux 3.10.0-957.21.3.el7.x86_64 04/21/2020 _x86_64_ (1 CPU)
06:32:20 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
06:32:25 PM all 99.60 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00
06:32:25 PM 0 99.60 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00
分析:从第二个终端看,1分钟的平均负载满满增加到1,第三个终端看cpu使用率接近100%,iowait确实0%,说明平均负载的升高正式由于CPU使用率100%。到底是哪个进程导致的CPU使用率为100%,
第四个使用pidstat命令查看
#间隔5秒后输出一组数据
pidstat -u 5 1
Linux 3.10.0-957.21.3.el7.x86_64 04/21/2020 _x86_64_ (1 CPU)
06:47:18 PM UID PID %usr %system %guest %CPU CPU Command
06:47:23 PM 0 6195 0.00 0.20 0.00 0.20 0 watch
06:47:23 PM 0 10406 99.20 0.00 0.00 99.20 0 stress
可以明显的看到strees的CPU使用率接近100%。