sar -q 显示 runq-sz 很大但没有明显 CPU 消耗的隐藏等待
发布时间 - 2026-01-19 00:00:00 点击率:次runq-sz 持续偏高但 %idle 很高,说明进程卡在不可中断睡眠(D 状态)而非 CPU 瓶颈,常见于 I/O 阻塞、内存回收或驱动异常;需用 ps、iostat、dmesg 等交叉定位。
runq-sz 显示的是当前就绪队列中等待被调度执行的进程数(包括正在运行和已就绪但未获得 CPU 的进程)。当 sar -q 输出中 runq-sz 持续偏高(比如 > 10,或明显超过 CPU 核心数),但 sar -u 显示 %idle 很高、%usr/%sys 很低时,说明系统有大量任务在排队,却没怎么用 CPU —— 这通常不是 CPU 真的空闲,而是这些任务被卡在了其他资源上,无法推进。
常见原因:I/O 等待被“隐藏”了
Linux 中,处于不可中断睡眠状态(D 状态)的进程不会计入 CPU 使用率(因为没跑在 CPU 上),但会留在 run queue 中,持续推高 runq-sz。这类进程往往卡在底层 I/O 操作上,例如:
- 等待慢速磁盘响应(如故障硬盘、RAID 同步、ext4 journal 阻塞)
- 访问挂载失败或响应极慢的 NFS/CIFS 共享
- 内核模块 bug 或驱动 hang 住(如某些旧版 NVMe 或 USB 存储驱动)
- 内存严重不足触发 direct reclaim,而回收过程又阻塞在 I/O(如 swapout 到慢盘)
快速定位 D 状态进程
直接查看当前有哪些进程卡在不可中断状态:
-
ps -eo pid,ppid,stat,comm,wchan --sort=-st—— 关注 STAT 列含 D 的行,wchan 显示其等待的内核函数(如
at | head -20
io_schedule、nvme_queue_rq、__wait_on_bit) -
ps aux | awk '$8 ~ /D/ {print $0}'—— 简单筛选 D 状态进程 -
cat /proc/[pid]/stack(对任一 D 进程)—— 查看其内核调用栈,确认阻塞点
结合 I/O 和内存指标交叉验证
单独看 runq-sz 容易误判,需同步检查:
-
sar -d 1 5:看 await、%util 是否异常高(尤其某设备 util 接近 100% 且 await > 100ms) -
iostat -x 1 5:关注 r_await/w_await、avgqu-sz(设备级队列长度),若 avgqu-sz 大但 %util 不高,可能是驱动或队列深度问题 -
free -h+cat /proc/meminfo | grep -E "^(MemAvailable|SwapFree|SReclaimable)":确认是否内存紧张导致频繁 kswapd 或 direct reclaim -
dmesg -T | tail -50:查找 I/O timeout、ATA/NVMe reset、NFS stale handle 等错误日志
典型场景示例
一台 8 核服务器,sar -q 显示 runq-sz 长期在 30–50,sar -u 显示 %idle > 95%,但用户反馈应用响应慢。执行 ps 发现 20+ 进程 STAT=D,wchan=“nvme_queue_rq”。进一步 iostat -x 显示 nvme0n1 的 await 达 2000ms,%util=99.8%,dmesg 有 “nvme 0000:01:00.0: Device not ready” 报错 —— 基本可判定是 NVMe 盘硬件故障或固件异常,导致所有发往该盘的 I/O 请求挂起,进程集体卡 D 状态,堆积在 run queue 中。
# linux
# 硬盘
# usb
# 栈
# ai
# ios
# print
# sort
# 堆
# bug
# 卡在
# 很高
# 慢速
# 偏高
# 的是
# 一台
# 这类
# 不高
# 报错
# 而非
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何快速搭建支持数据库操作的智能建站平台?
Laravel怎么使用artisan命令缓存配置和视图
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何在万网自助建站平台快速创建网站?
浅谈javascript alert和confirm的美化
如何在服务器上配置二级域名建站?
网站制作免费,什么网站能看正片电影?
个人摄影网站制作流程,摄影爱好者都去什么网站?
Python进程池调度策略_任务分发说明【指导】
北京专业网站制作设计师招聘,北京白云观官方网站?
网站建设要注意的标准 促进网站用户好感度!
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
如何用西部建站助手快速创建专业网站?
Laravel distinct去重查询_Laravel Eloquent去重方法
如何在宝塔面板中创建新站点?
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
在线教育网站制作平台,山西立德教育官网?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
网站建设整体流程解析,建站其实很容易!
如何用AWS免费套餐快速搭建高效网站?
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
js实现点击每个li节点,都弹出其文本值及修改
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel怎么实现模型属性的自动加密
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
清除minerd进程的简单方法
如何用狗爹虚拟主机快速搭建网站?
,在苏州找工作,上哪个网站比较好?
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
如何在建站之星网店版论坛获取技术支持?
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
JavaScript模板引擎Template.js使用详解
Laravel如何使用Vite进行前端资源打包?(配置示例)
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
如何续费美橙建站之星域名及服务?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
HTML 中如何正确使用模板变量为元素的 name 属性赋值


