Load Average 是活跃进程队列长度的指数加权平均,统计 R 和 D 状态进程数,非 CPU 使用率;需结合 CPU 核数归一化判断,三值斜率反映趋势,D 状态多时 Load 高但 CPU 可能很低。

Load Average 不是 CPU 使用率,而是“活跃进程队列长度”的指数加权平均
很多人一看到 load average: 4.2, 3.8, 3.1 就立刻查 top 看 %CPU,结果发现 CPU 才用 30%,误以为“系统没问题”。这是最典型的误解——Linux 的 Load Average 统计的是:处于 R(可运行,含正在跑或等 CPU)和 D(不可中断睡眠,如磁盘 IO 等待)状态的进程总数的加权平均,不是 CPU 时间占比。
这意味着:
-
D状态进程多(比如大量进程卡在ps aux | grep D),Load 会飙升,但 CPU 使用率可能很低 - 单核 CPU 上 Load = 4 表示平均有 4 个进程在争抢 1 个核,其中 3 个在排队;四核机器上 Load = 4 才是理想满载
- Load 是指数平滑值(
calc_load()函数实现),每 5 秒采样一次,不是简单算术平均——所以它滞后、平滑,适合看趋势,不适合抓瞬时尖刺
怎么看才不误判:必须结合 CPU 核数做归一化比较
直接说“Load > 1 就危险”只对单核成立。真实服务器几乎全是多核,正确做法是用 load / $(grep -c 'model name' /proc/cpuinfo) 得到“每核平均负载”。
实操建议:
- 运行
grep -c 'model name' /proc/cpuinfo获取逻辑 CPU 数(注意:超线程也计入,但实际调度能力≠物理核心数) - 若结果是 8,那么
load average: 7.9, 7.2, 6.5属于健康区间;而12.0, 11.5, 11.0就意味着每核平均排队 1.5 个进程,需排查 - 警惕
load > 3 × CPU数:此时通常伴随明显延迟(如 SSH 登录慢、ps命令卡顿),说明 R+D 进程严重积压
三个数值(1/5/15 分钟)的组合读法,比单看一个数重要得多
它们不是“过去 1 分钟、过去 5 分钟、过去 15 分钟”,而是三个独立的 EMA 滤波器输出,时间常数不同。关键看斜率和收敛性:
Destoon B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。 系统特性1、跨平台。支持Linux/Unix/Windows服务器,支持Apache/IIS/Zeus等2、跨浏览器。基于最新Web标准构建,在
-
1.0, 3.2, 5.8→ 负载在快速上升,可能是突发任务或资源泄漏,需立刻查ps aux --sort=-pcpu,-pmem和iostat -x 1 -
6.1, 5.9, 5.7→ 长期高位稳定,大概率是常态过载,检查是否该扩容或优化 IO(尤其是D状态进程) -
0.2, 2.1, 4.5→ 负载在回落,说明之前的问题已缓解,不用紧急干预 - 特别注意:
1 分钟值 是典型“问题正在收尾”信号,别误当成恶化
真正要命的不是高 Load,而是高 Load + 高 D 状态进程
当 Load 高但 %wa(iowait)低、CPU idle 高,大概率是 CPU 密集型任务;但如果 %wa > 20% 且大量进程显示 D 状态,说明系统卡在存储层——这时杀进程没用,得查磁盘、RAID、NVMe 健康度或 NFS 服务端响应。
快速定位步骤:
- 执行
ps -eo stat,pid,comm | grep '^[[:space:]]*D'看哪些 PID 处于 D 状态 - 用
cat /proc/查该进程卡在哪个内核函数(常见如/stack wait_on_page_bit,__nvme_submit_sync_cmd) - 对比
cat /proc/loadavg第四个字段(当前R进程数)和第五个字段(当前D进程数),若后者持续 > 5,基本锁定 IO 瓶颈
最易被忽略的一点:某些云厂商虚拟机的“伪 D 状态”(如 Xen 的 UN 状态)不会计入 Load,但会导致类似现象——这时候 /proc/loadavg 数值反而偏低,不能全信。









