cpu负载问题
一、对于load average的理解
1.1 平均负载
[root@k8s-master1 ~]# w | head -1
05:21:43 up 4:45, 2 users, load average: 0.19, 0.12, 0.13
- 第一位0.19:表示最近1分钟平均负载
- 第二位0.12:表示最近5分钟平均负载
- 第三位0.13:表示最近15分钟平均负载
1.2 关于平均负载的理解
打个比方:
- CPU就是车道,进程就是汽车,负载就是车道上车的数量
- 单核cpu相当于就单向单车道;多核cpu就相当于单向多车道;
1.2.1 单核情况
可以理解为,此时只有一条车道,这条车道上最多能同时跑10辆车,那么这个车道就有三种情况
- 车道上的车数量小于10辆,此时,这条路的负载小于1
- 车道上的车数量等于10辆,此时,这条路的负载等于1【1表示1个CPU核心用满了】
- 车道上的车数量等于10辆,而且还有排队车辆,此时,这条路的负载大于1
- 如果负载为2,可以理解为总车辆数为20
- 如果复杂为3,可以理解为总车辆数为30
- ......
1.2.2 两核情况
可以理解为,此时只有两条车道,每条车道上最多能同时跑10辆车,因此同时最多可以跑20辆车,那么这个车道就有三种情况
- 车道上的车数量小于20辆,此时,这条路的负载小于2
- 车道上的车数量等于20辆,此时,这条路的负载等于2【2表示2个CPU核心用满了】
- 车道上的车数量等于20辆,而且还有排队车辆,此时,这条路的负载大于2
1.2.3 多核情况
可以理解为,此时只有多条车道,每条车道上最多能同时跑10辆车,因此同时最多可以跑10*n辆车,那么这个车道就有三种情况
- 车道上的车数量小于10*n辆,此时,这条路的负载小于n
- 车道上的车数量等于10*n辆,此时,这条路的负载等于n【n表示2个CPU核心用满了】
- 车道上的车数量等于10*n辆,而且还有排队车辆,此时,这条路的负载大于n
1.2.3 总结
- 1核CPU,负载接近1,就应该引起注意
- 2核CPU,负载接近2,就应该引起注意
- n核CPU,负载接近n,就应该引起注意
二、处理CPU负载过高
2.1 CPU使用率和CPU负载
使用率和负载是两个不同的概念
- 使用率是一个程序的进程在运行过程中,占用的CPU时间片的百分比
- 负载指的是在一段时间内,正在使用CPU和等待使用CPU的进程数量情况,也就是队列长度
2.2 分析cpu负载的命令
- top 命令:查看进程级别的cpu使用情况。
- vmstat 命令:查看系统级别的cpu使用情况。
- iostat
来源:51CTO
作者:zxhk
链接:https://blog.51cto.com/54dev/2478201