load average 很高,CPU 却很闲
uptime 显示 load 20,top 里 CPU 空闲 90%。这两件事不矛盾:Linux 的 load average 统计的是 R(运行/可运行)加 D(不可中断睡眠)状态的进程数,I/O 卡住的进程也算。
所以先看 D 状态的进程:
ps -eo state,pid,comm | awk '$1=="D"'
如果一堆进程卡在 D,基本是磁盘或网络存储的问题,看 iostat -x 1 的 %util 和 await。
另一个来源是 cgroup 限流:容器 CPU 配额被跑满时,进程在 runqueue 里等,也会把 load 顶上去,但宿主机 CPU 看着很闲。
从 4.x 开始 /proc/loadavg 还多了一个字段,是当前正在跑的进程数,能帮助区分“历史高”和“现在高”。