性能优化Linux性能优化实战(极客时间)

cpu-平均负载篇

2019-10-15  本文已影响0人  Starlightskm

cpu-平均负载篇

什么是平均负载

平均负载指的是单位时间内,系统处于可运行状态或者不可中断状态的平均进程数
可运行状态:
- 指的是使用CPU或者正在等待CPU的进程,通过ps查看是在R状态的进程

不可中断状态
- 指的是内核态关键流程中的进程,并且这些进程是不可打断的,通过ps查看是在D状态的进程

平均负载的合理值

[root@VM_0_173_centos ~]# grep 'model name' /proc/cpuinfo |wc -l
8

平均负载与CPU使用率

CPU使用率
- 是单位时间内CPU繁忙程度的统计,跟平均负载不一定完全对应
- CPU密集型进程,使用大量CPU会大致平均负载升高,此时二者是一致的
- IO密集型进程,等待IO也会导致CPU平均负载升高,但CPU使用率不一定很高
- 大量等待CPU的进程调度会导致二者都比较高

案例分析

工具:
- iostat:
- mpstat:是一个常用的CPU性能分析工具,用来实时查看每个CPU的性能指标,以及所有CPU的平均指标
- pidstat:进程性能分析工具,用来查看实时进程的CPU,内存,IO,以及上下文切换等性能指标
环境:
- centos7
- yum -y install stress sysstat

场景一: CPU密集型进程

需要开启四个终端:
第一个终端执行stress,模拟CPU 100%使用率的场景

[root@www ~]# stress --cpu 1 --timeout 600

第二个终端执行如下,然后观察平均负载变化情况

[root@www ~]# watch -d uptime

第三个终端执行如下,查看到CPU的使用率

[root@www ~]# mpstat -P ALL 5

第四个终端,通过pidstat去定位哪个PID占用的CPU资源比较高

[root@www ~]# pidstat -u 5 1

IO 密集型进程

需要开启四个终端:
第一个终端执行stress,模拟IO压力

[root@www ~]# stress --cpu 1 --timeout 600

第二个终端执行如下,然后观察平均负载变化情况

[root@www ~]# watch -d uptime

第三个终端执行如下,查看到CPU的使用率

[root@www ~]# mpstat -P ALL 5

第四个终端,通过pidstat去定位哪个PID占用的CPU资源比较高

[root@www ~]# pidstat -u 5 1

大量进程场景

需要开启四个终端:
第一个终端执行stress,模拟8个进程

[root@www ~]# stress -c 8 --timeout 600

第二个终端执行如下,然后观察平均负载变化情况

[root@www ~]# watch -d uptime

第三个终端执行如下,查看到CPU的使用率

[root@www ~]# mpstat -P ALL 5

第四个终端,通过pidstat去定位哪个PID占用的资源比较高

[root@www ~]# pidstat -u 5 1
上一篇 下一篇

猜你喜欢

热点阅读