到底应该怎么理解“平均负载”
2019-10-14 本文已影响0人
五月的约修亚
什么是平均负载
- 正确定义:单位时间内,系统中处于可运行状态和不可中断状态的平均进程数。也就是系统平均活跃进程数
- 错误定义:单位时间内的cpu使用率。
- 可运行状态的进程:正在使用cpu或者正在等待cpu的进程,即ps aux命令下STAT处于R状态的进程
- 不可中断状态的进程:处于内核态关键流程中的进程,且不可被打断,如等待硬件设备IO响应,ps命令D状态的进程
- 理想状态:每个cpu上都有一个活跃进程,即平均负载数等于cpu数
- 过载经验值:平均负载高于cpu数量70%的时候
相关命令
- uptime
- top
- pidstat
查看cpu个数
grep 'model name' /proc/cpuinfo //在cpuinfo文件中存储着该机器cpu信息
uptime
查看1分钟、5分钟、15分钟负载(top命令也可以)
$ uptime
02:34:03 up 2 days, 20:14, 1 user, load average: 0.63, 0.83, 0.88
查看占用cpu或mem最多的进程
top
打开top界面后可以输入如下交互命令对数据进行排序
P:根据CPU资源使用大小进行排序
M:根据内存资源使用大小进行排序
H:显示线程
查看哪个线程占用最多cpu
top -H -p pid //-H显示线程,-p按cpu占用排序
查看负载的变化情况(watch命令默认每2s帮你执行一下uptime命令)
watch -d uptime //用top也可以
查看具体进程的io|上下文切换情况(vmstat和mpstat只能看总体情况,看不了具体进程)
pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]
-p:指定进程号
-d:显示各个进程的IO使用情况
-w:显示每个进程的上下文切换情况
-t: 显示具体的线程情况
总结
- 平均负载高有可能是CPU密集型进程导致的;
- 平均负载升高并不一定是CPU使用率更高,也有可能是IO更繁忙了