cpu-平均负载篇
什么是平均负载
平均负载指的是单位时间内
,系统处于可运行状态
或者不可中断状态的
平均进程数
可运行状态:
- 指的是使用CPU或者正在等待CPU的进程,通过ps
查看是在R
状态的进程
不可中断状态
- 指的是内核态关键流程中的进程,并且这些进程是不可打断的,通过ps
查看是在D
状态的进程
平均负载的合理值
- 首先要了解系统的CPU个数
[root@VM_0_173_centos ~]# grep 'model name' /proc/cpuinfo |wc -l
8
- 当平均负载大于上述的CPU个数,这说明系统已经出现了过载
- 要通过系统的1min,5min,15min的负载趋势来判断负载的趋势
- 当平均负载高于CPU数量的70%的时候,就需要进一步分析负载高的问题了
平均负载与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
网友评论