背景

CPU 利用率不高但请求很慢,可能是线程在等待 I/O,也可能是锁或远程依赖。iowait 只是入口,不是瓶颈的最终解释。

核心判断

  1. 把设备延迟、队列、吞吐与进程读写速率对齐到同一时间段。
  2. 结合 PSI 和 D 状态线程判断是否存在实际阻塞。
  3. 区分同步写、刷盘、随机读和后台维护流量。

最小示例

下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。

iostat -xz 1 5; pidstat -d -w 1 5; vmstat 1 5; cat /proc/pressure/io

边界与误区

sysstat 工具需要预先安装;PSI 支持取决于内核配置。单看 util 或 iowait 无法解释多队列设备的饱和程度。

验证方式

在已知顺序读和同步写场景下采样建立对照,再关联业务 p99。只有确认瓶颈来自存储路径,才讨论更换磁盘或增加并发。

小结

同时观察 PSI、磁盘延迟、队列深度、进程状态和请求耗时再定位瓶颈。