
Linux 的 load average(平均负载)不是 CPU 使用率,而是单位时间内处于“可运行”或“不可中断等待”状态的进程(更准确说是线程)的平均数量。它反映的是系统对计算资源的整体需求压力,包括 CPU、磁盘 I/O、内存交换等环节造成的排队情况。
三个数值分别代表什么
常见输出如 load average: 1.97, 2.14, 2.99,对应:
- 1.97:最近 1 分钟的平均负载
- 2.14:最近 5 分钟的平均负载
- 2.99:最近 15 分钟的平均负载
这三个值采用指数加权移动平均(EWMA)算法计算,每 5 秒采样一次,权重随时间衰减——越近的数据影响越大。因此,1 分钟值对突发变化最敏感,15 分钟值更能反映长期趋势。
如何判断是否异常
关键不是看绝对数值,而是结合 CPU 总核心数(注意:是逻辑核心数,含超线程)来评估:
- 用
grep -c 'model name' /proc/cpuinfo查总核心数(例如返回 8) - 若 15 分钟负载持续高于核心数(如 >8),说明系统长期承压,需排查
- 若仅 1 分钟负载短暂冲高(如 12),但 5/15 分钟值平稳(如 2.1/2.3),大概率是瞬时任务,无需立即干预
- 单核系统中,长期 >0.7 就值得留意;>1 表示已无冗余处理能力;>5 通常伴随明显卡顿
负载高 ≠ CPU 瓶颈
Load 包含两类关键状态:
- R 状态(Running/Runnable):正在运行或就绪等待 CPU 调度 → 指向 CPU 或调度竞争问题
- D 状态(Uninterruptible Sleep):等待不可中断的硬件响应(如磁盘读写、NFS 响应)→ 常见于 I/O 延迟高、存储慢、驱动异常
可通过 ps aux --sort=-pcpu | head -10 查高 CPU 进程,也可用 ps -eo stat,pid,comm | grep " D " 快速定位 D 状态线程。若 load 高但 CPU 使用率低,大概率是 D 状态堆积,应检查磁盘 I/O(iostat -x 1)、文件系统或网络存储延迟。
观察趋势比盯单点更重要
对比三个时间窗口的数值关系,能快速判断负载走向:
- 1 分钟 > 5 分钟 > 15 分钟:负载正在上升,可能有新任务涌入或资源开始受限
- 1 分钟
- 三者接近且稳定:系统处于稳态负荷,需结合核心数判断是否健康
例如 load average: 0.85, 1.22, 1.38(8 核机器),说明压力在缓慢积累,尚未达阈值但值得关注;而 4.1, 3.9, 3.7 则提示压力正趋于缓和。










