返回首页

Linux Load Average 详解:概念、解读与实战判据

📅 创建于 2026-07-14 🔄 更新于 2026-09-07 📝 704 字

来源:赵楠 | 发布日期:2026-07-08

Linux Load Average 详解:概念、解读与实战判据

核心认知:Load average ≠ CPU 使用率。它统计的是「需要 CPU 或等待 I/O」的进程数,同时包含 Running (R) 和 Uninterruptible Sleep (D) 两种状态。

一个反直觉的报警场景

监控告警:服务器 load average 到 18,远超阈值。登上去一看:

top - 14:22:31 up 32 days
Tasks: 210 total,   2 running, 208 sleeping
%Cpu(s): 28.3 us,  3.1 sy,  0.0 ni, 62.4 id,  5.8 wa,  0.0 hi,  0.4 si

CPU 空闲 (id) 还有 62%,使用率不到 40%,但 load average 18,服务器也确实在响应变慢。

这就是最常见的误解:load average 高,不一定是 CPU 忙。

Load Average 到底在数什么

Load average 统计的是:过去一段时间内,系统里平均有多少个进程处于「需要 CPU 或正在等待 I/O」的状态。

两类进程被计入:

状态 含义 举例
R (Running) 正在 CPU 上运行,或在运行队列中排队 业务进程在计算
D (Uninterruptible Sleep) 不可中断睡眠,通常卡在等磁盘 I/O 进程等磁盘读写完成

D 状态才是很多人没想到的。一个进程等磁盘读写时,它没消耗 CPU,但依然被计入 load average。这就是为什么 load 高、CPU 低会出现——大量进程卡在等磁盘,CPU 在等它们,谁都没在真正干活。

三个时间窗口

load average: 0.92, 1.45, 1.82
               ↑     ↑     ↑
             1分钟  5分钟  15分钟
             均值   均值   均值
趋势 含义
1 分钟 > 15 分钟 负载上升,可能正在发生问题
1 分钟 < 15 分钟 负载下降,问题在缓解
三个值接近 负载稳定

多少算「高」?—— 必须结合 CPU 核心数

很多监控系统把 load average > 1 就标红告警,这个阈值从根本上就是错的。

直觉类比(车道模型):

核心数 load=1 load=2 load=4 load=8
1 核 满载 排队×1
4 核 25% 50% 满载 排队×1
8 核 12.5% 25% 50% 满载

正确判据:load average / CPU 核心数

  • < 1 → 正常,每核心平均不到一个进程
  • = 1 → 刚好满载,满负荷但不过载
  • > 1(持续) → 开始排队,需要关注

分级经验值(2026-09-06 负载排查 SOP 补充):

Load / 核心数 判断
≤ 1.0 系统正常
≥ 1.5 倍 需要关注
≥ 2.0 倍 严重拥堵
# 查看 CPU 核心数
nproc
# 或者
grep -c "^processor" /proc/cpuinfo

8 核服务器 load 到 6-7 完全正常;到 20 才真正需要排查。单核轻量云 load 到 2 就已经有进程排队了。

top CPU 行字段详解

%Cpu(s): 28.3 us,  3.1 sy,  0.0 ni, 62.4 id,  5.8 wa,  0.0 hi,  0.4 si
字段 全称 含义 排障意义
us user 用户态进程 CPU 时间 高 → 应用层计算密集,top 找高 CPU 进程
sy system 内核态 CPU 时间 高 → 系统调用频繁,可能有大量 I/O 或进程切换
ni nice 低优先级进程 CPU 时间 通常接近 0
id idle CPU 空闲时间 低 → CPU 真的忙了
wa iowait 等待 I/O 时的空闲时间 高 → 不是 CPU 问题,是磁盘/网络 I/O 瓶颈
hi hardware irq 硬件中断处理 高 → 网卡压力大或硬件问题
si software irq 软件中断处理 高 → 网络包处理压力大
st steal 被虚拟化层偷走的 CPU 时间 云服务器上高 → 宿主机资源竞争

wa (iowait) 深度解析

wa 是最容易被误读的指标:

  • wa 高 + CPU idle 也高 → 少数进程在等 I/O,CPU 整体空闲,大量核心在闲着
  • wa 高 + CPU idle 低 → I/O 是真正的瓶颈,CPU 全部在等磁盘
  • wa 高 ≠ CPU 忙 — wa 是「CPU 空闲着等 I/O 的时间占比」,不是 CPU 被用满

多核场景下的 wa 陷阱: 8 核服务器,top 显示的 wa 是全局平均值。一个核心 wa = 100%(上面的进程在等 I/O),其余 7 个核心 idle = 100%,全局 wa 只显示 12.5%,但那个核心上的进程已严重拖慢。

常见误区

误区 正解
load average = CPU 使用率 load average 统计的是排队等资源的进程数,不只计算 CPU 消耗
load average > 1 就告警 必须结合核心数:8 核 load 6 完全正常
wa 高 = CPU 忙 wa 是「CPU 空闲等 I/O 的时间」,不是 CPU 被用满
只看一个时间窗口 必须看 1/5/15 分钟三个值判断趋势
load 只统计 CPU 请求 D 状态进程(等磁盘/NFS)也被计入

快速诊断命令

# 看 load + 核心数,快速判断
uptime && echo "CPU 核心数: $(nproc)"

# CPU 各维度分解
top -bn1 | head -5

# D 状态进程数(计入 load 但不消耗 CPU)
ps aux | awk '$8 ~ /D/' | wc -l

# I/O 等待情况
vmstat 1 3

关联页面

页面关联点
linux-load-high-sopLoad 高全场景 11 步排查流程与 6 场景修复手册(本页概念原理的实战落地)
linux-load-high-cpu-low-troubleshootingLoad 高 CPU 低的完整排查决策树,从 vmstat 到 iostat 的逐层诊断
cpu-100-full-chain-diagnosisCPU 100% 故障排查全链路分析,含 10 大场景速查
cpu-spike-3-commands三命令定位 CPU 飙高根因
server-performance-four-dimensions服务器性能五维排查框架
linux-server-load-case-study服务器负载过高排查实战(Netflix 60 秒法)
linux-disk-io-troubleshoot磁盘 IO 排查实战 — %util 陷阱与 await 真相。服务器变慢时 CPU/内存正常但磁盘
linux-disk-io-monitoring-reference磁盘 IO 监控参考 — iostat/vmstat 字段详解与五指标框架。磁盘使用率/饱和度/IO
system-load-high-rsyslogd-case-study一个 rsyslogd 被 audit 审计日志刷屏导致的系统负载高案例,涵盖 CPU 拆解、软中断
cpu-spike-troubleshooting-guideCPU 飙高排查方法论与止损策略