到底应该怎么理解“平均负载”

什么是平均负载

  • 正确定义:单位时间内,系统中处于可运行状态不可中断状态的平均进程数。也就是系统平均活跃进程数
  • 错误定义:单位时间内的cpu使用率。
    • 可运行状态的进程:正在使用cpu或者正在等待cpu的进程,即ps aux命令下STAT处于R状态的进程
    • 不可中断状态的进程:处于内核态关键流程中的进程,且不可被打断,如等待硬件设备IO响应,ps命令D状态的进程
  • 理想状态:每个cpu上都有一个活跃进程,即平均负载数等于cpu数
  • 过载经验值:平均负载高于cpu数量70%的时候

相关命令

查看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更繁忙了
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容