Linux性能优化实战读书笔记(一)

理解平均负载

概念

平均负载指的是单位时间内(1,5,15分钟)系统处于可运行状态不可中断状态的平均进程数,也就是平均活跃进程数linux

  • 可运行状态: 正在使用CPU或者等待CPU的进程,也就是经过ps aux看到的状态为R的进程
  • 不可中断状态: 正处于内核关键流程中的进程,而且这些流程是不可被打断的,好比IO响应。也就是经过ps aux看到的状态为D的进程。
不可中断状态其实是系统对进程和硬件设备的一种保护机制

既然平均的是活跃进程数,那么最理想的就是每一个CPU上正好运行着一个进程,每一个进程CPU都获得了充分的利用。工具

平均负载多少为合理

  • 首先要知道你的系统是多少核的CPU
[root@www ~]# grep 'model name' /proc/cpuinfo | wc -l
4
  • 其次根据平均负载(每一个核心为1做为最高标准去判断)的三个趋势时间去判断变化率,从而总结出对应的负载状况:通常超过70%的话就算是比较高了

平均负载和CPU使用率

  • CPU使用率:单位时间内CPU繁忙成都的统计,跟平均负载不是一一对应的
CPU密集型进程,使用大量的CPU会致使平均负载和CPU使用率
IO密集型进程,等待IO也会致使平均负载升高,可是CPU使用率不必定很高
大量等待CPU的进程调度也会致使平均负载升高,此时的CPU使用率也会比较高

平均负载案例分析

  • 准备环境
OS:linux
软件需求:stress sysstat
测试命令:stress 压力测试
mpstat   cpu性能分析工具
              pidstat    进程性能分析工具

须要打开三个终端:做为压测命令端,负载观察端,进程观察端性能

  • 场景一:CPU密集型进程

终端一:查看当前平均负载&执行压测命令测试

[root@www ~]# uptime 
 15:08:02 up 84 days, 23:20, 1 user, load average: 0.00, 0.01, 0.05
[root@www ~]# stress --cpu 1 --timeout 600     #十分钟测试

终端二:观察平均负载变化状况ui

[root@www ~]# watch -d uptime

终端三:mpstat查看CPU使用率变化状况和占用cpu的进程code

[root@www ~]# mpstat -P ALL 5  #抓取CPU的变化率 (5秒输出一组数据)
[root@www ~]# pidstat -u 5 1     #抓取占用CPU的进程(5秒输出一组数据)
  • 场景二:IO密集型进程

终端一:查看当前平均负载&执行压测命令进程

[root@www ~]# uptime 
 15:08:02 up 84 days, 23:20, 1 user, load average: 0.00, 0.01, 0.05
[root@www ~]# stress --cpu 1 --timeout 600     #十分钟测试

终端二:观察平均负载变化状况get

[root@www ~]# watch -d uptime

终端三:mpstat查看CPU使用率变化状况和占用cpu的进程性能分析

[root@www ~]# mpstat -P ALL 5  #抓取CPU的变化率 (5秒输出一组数据)
[root@www ~]# pidstat -u 5 1     #抓取占用CPU的进程(5秒输出一组数据)
  • 场景三:大量进程场景

终端一:查看当前平均负载&执行压测命令软件

[root@www ~]# uptime 
 15:08:02 up 84 days, 23:20, 1 user, load average: 0.00, 0.01, 0.05
[root@www ~]# stress -c 8 --timeout 600     #八个进程模拟,十分钟测试

终端二:观察平均负载变化状况

[root@www ~]# watch -d uptime

终端三:mpstat查看CPU使用率变化状况和占用cpu的进程

[root@www ~]# mpstat -P ALL 5  #抓取CPU的变化率 (5秒输出一组数据)
[root@www ~]# pidstat -u 5 1     #抓取占用CPU的进程(5秒输出一组数据)

小结概括

平均负载是一个快速查看系统总体性能的手段,反映了总体的负载状况。但只看平均负载自己咱们并不能直接发现究竟是哪里出了瓶颈,在理解平均负载的时候咱们也要注意:

  • 平均负载高多是CPU密集型进程致使的
  • 平均负载高不必定表明CPU使用率高,还有多是IO更加繁忙了
  • 当发现负载较高的时候可使用mpstatpidstat等工具来辅助分析

来源整理自

https://time.geekbang.org/col...

相关文章
相关标签/搜索