平均负载小记

怎么看平均负载

> uptime
23:15:17 up 5 days, 12:16,  1 user,  load average: 0.25, 0.49, 0.58

0.25、0.49、0.58分别是最近1、5、15分钟的平均负载

平均负载是什么

以单核系统举一个例子

  • 1.0:系统中有两个进程,分别为CPU密集型和IO密集型,两个进程交替运行。单位时间的活跃进程数就是1,与核心数相同,系统满负荷运行。
  • <1.0:系统仍有余力,活跃进程数小于核心数。
  • >1.0:系统满负荷运行,同时有一部分进程正在等待核心。

再看看多核

多核和单核不同的只是核心数,所以同等情况下,4核系统对应的平均负载应该是单核系统的1/4。同时,4核系统在满负荷运行时,平均负载就应该是4。
grep 'model name' /proc/cpuinfo | wc -l这个命令可以看CPU核心数。

来个定义

平均负载:单位时间内处于可运行状态不可中断状态的平均进程数,即处于活跃状态的平均进程数。

  • 可运行状态:进程处于Runnable或Running状态。
  • 不可中断状态:
    • 阻塞的IO操作
    • 执行一些需要在内核空间运行的操作时可能进入不可中断状态
    • 调用系统调用并等待其完成
    • 在同步互斥操作时,以防止竞争条件

平均负载指标一般怎么用

以单核为前提讨论

理论上,系统负载为1是最合适的,但确实只是理论上。
实际上:

if load<0.7{
//说明系统负载很正常,无需关心
}else load<=1{
//需要开始注意,如果只是暂时的波动,那问题不大。如果持续保持在这个水平,就需要进行解决,防止情况恶化
}else load<5{
//如果持续保持在这个水平,通常已经出现问题了,但应该还有挽回的余地
}else{
//大概率寄了
}

相关工具

平均负载确实比CPU使用率这些要考虑得全面一些,但也有个缺点就是你不能直接定位到是哪个问题。可能是CPU过高,可能是IO过高,也有可能是内存使用过高造成频繁的页面换入换出,这也会导致前两个问题。
所以具体定位细节还需要这些工具:mpstat、pidstat

  • mpstat可以看到系统中多核的具体信息,如cpu、io等信息
    示例:mpstat -P ALL 3 2查看所有核心,3s进行一次快照,统计两次
  • pidstat可以看到具体进程的信息,以进程为单位进行信息的显示
    示例:pidstat -ru 3 2查看进程信息,3s进行一次快照,统计2次,因为是一段时间的快照,所以只会显示一部分进程。如果想看全量进程,可以不显示进行快照,如pidstat -ru

附上几个我参考的文章

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倚风听雨.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值