linux load average 什么是“平均负载”

每次发现系统变慢/卡顿时,我们通常做的第一件事,就是执行 top, uptime等命令,来了解系统的负载情况。

# uptime

20:40:46 up 540 days, 3:012 users, load average: 0.610.010.05


大多数人对前面几列比较熟悉,分别是当前时间/系统运行时间/正在登陆的用户。
而后面三个数字呢? 依次是过去1分钟,5分钟,15分钟的平均负载。

“平均负载” 对于很多人来说,可能即熟悉又陌生。运维的日常工作中,也都会经常提到这个词, 但是否真正理解背后的含义呢? 比如: 什么是平均负载?
很多人把平均负载认为是单位时间内的cpu使用率,上面的0.61代表cpu的使用率是63%, 其实并不是这样(可以通过man uptime查看详细解释)。

简单来说, 平均负载是指:单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数, 它和cpu使用率并没有直接关系。

可运行状态进程,是指正在使用cpu或者正在等待cpu的进程,可以通过ps命令查看,处于R状态的进程。
不可中断进程,则是处于内核关键流程中的进程,且相关流程是不可打断的, 比如最常见的等待硬件设备i/o响应,可以通过ps命令查看,处于D状态的进程(eg: 当一个进程向磁盘读写数据时,为了保证数据一致性,在得到磁盘回复前,是不能被其他进程中断/打断的,此时,相关进程就处于不可中断状态,如果被打断,就容易出现磁盘数据和进程数据不一致的情况)。 所以: 不可中断状态是系统对进程和硬件设备的一种保护机制。


既然平均的是活跃进程数,那么最理想的,就是每个cpu上都刚好运行着一个进程,这样每个cpu都得到了充分利用。

平均负载为多少时合适?
在评判平均负载时, 首先,我们需要知道系统有几个cpu(可以通过top或者从文件/proc/cpuinfo中获取)。得到了cpu个数,我们就可以判断出,当平均负载比cpu个数还大时,系统已经出现了过载。当然,在日常工作中,我们应当根据实际环境进行监控判断(比如:阈值设置为80%,即充分利用了资源,也预留了一些应对突增的情况)。


影响平均负载的因素,包含以下几个场景:
1. cpu密集型: 使用大量cpu会导致平均负载升高,此时: cpu使用率会高。
2. i/0密集型: 等待i/o也会导致平均负载升高,但cpu使用率不一定高。
3. 大量进程型: 大量等待cpu的进程调度也会导致平均负载升高, 此时的cpu使用率也会比较高。


通常情况下, 我们可以通过top,iostat,mpstat,pidstat等工具,找出平均负载升高等根源,从而解决问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cloud孙文波

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

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

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

打赏作者

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

抵扣说明:

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

余额充值