Linux性能优化-day02 | 基础篇:平均负载

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%。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章