背景
CPU 利用率不高但请求很慢,可能是线程在等待 I/O,也可能是锁或远程依赖。iowait 只是入口,不是瓶颈的最终解释。
核心判断
- 把设备延迟、队列、吞吐与进程读写速率对齐到同一时间段。
- 结合 PSI 和 D 状态线程判断是否存在实际阻塞。
- 区分同步写、刷盘、随机读和后台维护流量。
最小示例
下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。
iostat -xz 1 5; pidstat -d -w 1 5; vmstat 1 5; cat /proc/pressure/io
边界与误区
sysstat 工具需要预先安装;PSI 支持取决于内核配置。单看 util 或 iowait 无法解释多队列设备的饱和程度。
验证方式
在已知顺序读和同步写场景下采样建立对照,再关联业务 p99。只有确认瓶颈来自存储路径,才讨论更换磁盘或增加并发。
小结
同时观察 PSI、磁盘延迟、队列深度、进程状态和请求耗时再定位瓶颈。