60 秒回答模板

CPU load average 表示一段时间内处于可运行态和不可中断睡眠态的任务平均数量,常见是 1 分钟、5 分钟、15 分钟三个值。它不等于 CPU 使用率:CPU 使用率高说明 CPU 忙,load 高说明排队或不可中断等待的任务多。判断是否异常要和 CPU 核数比较,并结合 us、sy、iowait、run queue、上下文切换、磁盘 I/O、锁等待和业务延迟一起看。

考点 核心机制与工程取舍
难度 中高频面试题
回答目标 按定义、机制、场景讲清楚

深入解析

01

指标定义

load average 不是百分比,而是平均活跃任务数。Linux 中通常包括正在运行、等待 CPU 的可运行任务,以及处于不可中断睡眠的任务。

02

核数基线

load 要和 CPU 核数一起看。4 核机器长期 load 约 4 可能表示接近满载;长期明显高于 4 说明存在排队压力;单看绝对值没有意义。

03

区别使用率

CPU 使用率来自 CPU 时间占比,load 来自任务队列压力。可能 CPU 使用率很高且 load 高,说明 CPU 忙;也可能 CPU 不高但 load 高,说明任务卡在不可中断 I/O、锁或内核等待。

04

三段趋势

1 分钟值反映短期波动,5 分钟和 15 分钟反映持续趋势。1 分钟高、15 分钟低可能是瞬时突刺;三个都高才更像持续容量或阻塞问题。

05

诊断路径

先看业务延迟和错误,再看 top、uptime、vmstat、pidstat、iostat、sar、perf 等指标。根据 CPU 消耗、iowait、上下文切换、运行队列和进程状态判断是计算、I/O、锁竞争还是线程过多。

易错点

  • 把 load 当成 CPU 使用率百分比。
  • 不结合 CPU 核数,直接说 load 大于 1 就异常。
  • 只看 top 的 CPU 列,忽略 D 状态和 iowait。
  • 不关联业务延迟和最近变更,停留在指标解释。

面试官追问

load 高但 CPU 使用率不高,可能是什么原因?

常见是磁盘 I/O、网络文件系统、块设备等待、内核锁或大量任务处于不可中断睡眠,需要看 iowait、D 状态进程和 I/O 指标。

load 多少算高?

没有固定值,要看 CPU 核数和业务延迟。长期超过核心数并伴随延迟升高,通常说明系统有排队或阻塞压力。

1 分钟 load 很高但 15 分钟正常说明什么?

更像短时流量尖峰、批任务或瞬时阻塞,需要结合当时业务曲线和告警判断是否需要扩容或限流。

排查高 load 先看什么?

先确认用户影响,再定位是哪些进程贡献 load,然后看 CPU 时间、I/O 等待、线程数、锁竞争和最近变更。