LabHub
学习 学习路径 课程

Linux 故障处理

load average 不是 CPU 使用率

在 LabHub 中继续学习

一句话总结

Linux 负载平均值不仅统计等待 CPU 的任务,也统计等待磁盘或 NFS 的不可中断 D 状态任务,因此 CPU 空闲时负载仍可能很高。

概念图: 一句话总结 · 诊断思路 · 原文命令与标识符

诊断思路

利用率是百分比,负载是任务数量。内核周期性统计正在运行、等待运行以及 D 状态任务,并以指数衰减计算 1、5、15 分钟平均值。短期值高于长期值表示负载正在上升,反之通常表示恢复中。

高负载时应先分别统计 R 与 D:R 多才表示 CPU 队列拥挤,D 多则应检查块设备、NFS、页缓存锁等。诊断要结合运行队列、阻塞任务、I/O 等待、设备延迟和队列深度,不能仅凭一个 load 数字扩容 CPU。

原文命令与标识符

nr_active = 실행 중이거나 실행 대기(R) + 중단 불가 대기(D)
cat /proc/loadavg          # 네 번째 필드 '실행가능/전체'를 함께 본다
ps -eo state --no-headers | sort | uniq -c   # R 과 D 를 센다
vmstat 1 5                 # b 열이 D 상태 개수, wa 가 I/O 대기 비율
iostat -x 1 3              # await 와 큐 깊이로 판단 (%util 100% 는 포화가 아닐 수 있다)
vmstat 1 5
# r  b   swpd  free  buff cache  si so  bi bo  in cs  us sy id wa st
top -H -p <pid>          # 스레드 단위
pidstat -t -p <pid> 1
cat /sys/fs/cgroup/cpu.stat     # nr_throttled, throttled_usec

24.31, 22.08, 14.95

top

TASK_UNINTERRUPTIBLE

nproc

cpu.stat

nr_throttled / nr_periods

top

st

reboot

/proc/pressure/{cpu,io,memory}

some

full

io

full avg10=61

load average

top

vmstat

r

b

r

b

wa

st

nproc

nproc

cpu.max

nr_throttled

wa

iostat -x 1

await

%util

/proc