CPU 70% idle 但 load average 84?D 状态进程不可中断睡眠的深度排查

预计阅读时间:2 分钟

原始出处: - ServerFault #1120058: A linux machine with lots of processes in uninterruptible sleep state — Brian 的实战案例,ps 命令自身也陷入 D 状态,从 /proc/PID/stack 追踪到 call_rwsem_down_read_failed - Red Hat KB #2142081: NFS4.0: High Load but CPU idle - leading to a complete outage — vmcore crash 分析显示 4454 个进程卡在 rpc_wait_bit_killable,NFS OPEN 操作阻塞链路完整追溯 - Brendan Gregg's Blog: Linux Load Averages: Solving the Mystery — 挖掘出 1993 年 Matthias Urlichs 的历史补丁,解释了 load average 纳入 TASK_UNINTERRUPTIBLE 的初衷 - ServerFault #1164437: CPU is idle, but huge load, and NFS client stop responding — NFS 邮件服务器高负载事故,load average 从 400 飙到 10000 - SUSE KB: Analysing processes in D state (uninterruptable sleep) — 系统化的 D 状态进程分析方法论 - ServerFault #227405: Linux kernel crash analysis. Blocked processes, IO and uninterruptible wait — CentOS 5.5 上 hung task 600s 超时,dmesg 中 TASK_UNINTERRUPTIBLE 的完整 Call Trace - LWN.net: The origin of Linux load averages — 内核社区对 nr_uninterruptible 在 load average 中角色的持续讨论 - Linux Kernel 源码:include/linux/sched.h (TASK_UNINTERRUPTIBLE 定义)、kernel/sched/core.c (__schedule)、kernel/sched/loadavg.c (calc_load_fold_active)、fs/proc/array.c (task_state_array)


本文首发于 CSDN 专栏《运维漏洞指南》,系列第 9 篇。该系列旨在用「可观测症状 → 排查回合 → 内核源码」的三步法,将国外高质量社区案例(ServerFault / LWN / Red Hat KB)搬运并适配到中文运维场景。

Linux 进程状态转换图


本文由 admin 原创,转载请注明出处。

相关推荐

评论

0
暂无评论,来发表第一条评论吧

发表评论

登录 后发表评论

发现更多