性能优化学习笔记 - 平均负载

什么是平均负载

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

相关命令

  • cpu核数: lscpu、 grep ‘model name’ /proc/cpuinfo | wc -l
  • 显示平均负载:uptime、top,显示的顺序是最近1分钟、5分钟、15分钟,从此可以看出平均负载的趋势
  • watch -d uptime: -d会高亮显示变化的区域
  • strees: 压测模拟命令,–cpu cpu压测选项,-i io压测选项,-c 进程数压测选项,–timeout 执行时间
  • mpstat: 多核cpu性能分析工具,-P ALL监视所有cpu
  • pidstat: 进程性能分析工具,-u 显示cpu利用率

平均负载与cpu使用率的区别

  • CPU使用率:单位时间内cpu繁忙情况的统计
    情况1:CPU密集型进程,CPU使用率和平均负载基本一致
    情况2:IO密集型进程,平均负载升高,CPU使用率不一定升高
    情况3:大量等待CPU的进程调度,平均负载升高,CPU使用率也升高

平均负载过高时,如何调优?

  • CPU密集型进程case:
    mpstat -P ALL 5: -P ALL表示监控所有CPU,5表示每5秒刷新一次数据,观察是否有某个cpu的%usr会很高,但iowait应很低
    pidstat -u 5 1:每5秒输出一组数据,观察哪个进程%cpu很高,但是%iowait很低,极有可能就是这个进程导致cpu飚高
    在这里插入图片描述

  • IO密集型进程case(stress工具如果无法模拟, 可考虑使用stress-ng):
    mpstat -P ALL 5: 观察是否有某个cpu的%iowait很高,同时%usr也较高
    pidstat -d 5 1:观察哪个进程%wait较高,同时%CPU也较高 (也可通过-d查看具体IO延迟情况)

  • 大量进程case:
    pidstat -u 5 1:观察那些%wait较高的进程是否有很多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值