需先启用sysstat服务并运行iostat -x -d 1查看实时await与svctm:await>20ms且远大于svctm表明队列瓶颈;再用sar -d回溯历史峰值,结合tps判断延迟异常;最后用iotop -o -d 1按swapin排序定位高io阻塞进程。

您需要在麒麟操作系统中准确获取磁盘IO响应时间(await),用于判断是否存在IO延迟瓶颈,而非仅看吞吐量或利用率。
用iostat查看实时await与svctm
第一步:确认sysstat已安装并启用后台采集服务。执行yum list installed | grep sysstat,若无输出则运行sudo yum install -y sysstat;接着必须执行sudo systemctl enable sysstat && sudo systemctl start sysstat——【不执行此步,iostat -x可能缺失历史基线数据,await数值波动大、可信度低】。
第二步:运行iostat -x -d 1,每秒刷新一次扩展统计。重点关注await(平均IO响应时间,单位毫秒)和svctm(平均服务时间)。若await > 20ms且持续超过5秒,说明IO请求排队严重;若await远大于svctm(例如await=85ms,svctm=1.2ms),表明瓶颈不在磁盘本身,而在队列调度或并发过高。
第三步:按Ctrl+C退出后,立即执行iostat -x -d 1 3取三次平均值,规避单次瞬时抖动干扰判断。
用sar回溯历史await峰值
该方法适用于排查已发生的IO延迟问题,需系统此前已开启sa日志采集。
方法一:验证日志是否可用。执行ls /var/log/sa/,若目录存在且含sa$(date -d yesterday +%d)文件(如sa24),说明昨日数据可查。
方法二:提取昨日磁盘IO响应时间峰值。运行sar -d -f /var/log/sa/sa$(date -d yesterday +%d) | grep -E "(await|svctm)",直接过滤出关键列。注意:输出中await为全时段平均值,需结合tps(每秒IO数)交叉判断——高tps下await仍低于5ms属健康,低tps下await超30ms即异常。
用iotop按进程级观察IO延迟
iotop能显示每个进程的实时IO等待时间,但默认不直接输出await值,需配合排序识别延迟敏感型行为。
第一步:安装并启动sudo yum install -y iotop,然后运行sudo iotop -o -d 1(-o只显示活跃IO进程)。
第二步:按R键反转排序,再按←箭头切换至SWAPIN列——虽然列名是swap,但实际反映的是进程因IO阻塞而被调度器挂起的频率,数值越高,说明该进程越频繁陷入不可中断睡眠(D状态),间接暴露其IO响应恶化。
第三步:找到SWAPIN值持续>15%的进程,记下PID,再用cat /proc/[PID]/stack查看其内核堆栈,确认是否卡在blk_mq_do_dispatch_sched或__wait_event_common等IO路径上。











