标准答案
- 可运行任务在等待 CPU,不可中断睡眠任务通常在等待 I/O 等内核资源;两者都可能计入 load。
- load 需要结合 CPU 核数、user/system/iowait、运行队列、上下文切换和磁盘延迟判断,不能只看绝对值。
- 单核机器 load 接近 1 与多核机器 load 接近 1 的含义不同,应按可用 CPU 资源解释。
- 定位时先判断是 CPU 饱和、I/O 堵塞、锁竞争还是任务大量堆积,再决定扩容、降并发或处理下游。
题目解析
load average 统计的是可运行任务以及部分不可中断等待任务的平均数量,不等于 CPU 使用率。CPU 密集任务、磁盘 I/O、NFS、锁等待或内核资源争用都可能抬高 load;同一个 load 数字在 2 核和 64 核机器上的含义也不同。
iowait 是统计口径的一部分,不能单独证明磁盘是根因。应同时看每核 CPU、run queue、D 状态任务、设备 await/util、网络和应用队列,并观察 1/5/15 分钟窗口。只有确认是 CPU 饱和时扩容 CPU 才能解决,I/O 或下游瓶颈需要另一种动作。
常见误区
- 误区:看到 load 高就立刻加 CPU。改正:先区分 runnable、D 状态、锁和 I/O 等待,再选择扩容或修复下游。
- 误区:CPU 使用率不高就排除系统资源问题。改正:检查单核热点、I/O、内存回收、网络和不可中断等待。
- 误区:不看核数和时间窗口。改正:按每核 load、短期尖峰和长期趋势一起判断。