Linux如何查看具体磁盘读写延迟 linux 查看

在linux体系运维和性能排查中,磁盘读写延迟是影响体系整体响应速度的核心指标其中一个,过高的延迟往往会导致业务响应卡顿、进程阻塞,甚至引发服务不可用。想要化解磁盘io引发的性能难题,第一步就是准确查看具体的磁盘读写延迟,大家可以从多个维度入手,不同工具适配不同的排查场景。
通过iostat查看整体磁盘平均延迟
iostat是查看磁盘io延迟最常用的工具,属于sysstat软件包,配置后即可运用。执行`iostat -x 1`命令后,扩展输出中的`await`列就是磁盘平均io等待时刻,单位为毫秒,其中`r_await`特指读延迟,`w_await`特指写延迟。一般来说,普通机械磁盘平均延迟在5-20ms属于正常范围,ssd磁盘延迟通常低于5ms,如果延迟持续超过10ms(ssd)或20ms(hdd),就说明磁盘io已经存在明显瓶颈。命令后的`1`表示每秒刷新一次数据,可以实时观察延迟变化,方便定位偶发的高延迟难题。
通过pidstat定位引发高延迟的进程
iostat只能查看磁盘整体的平均延迟,如果想要定位具体何者进程导致了延迟升高,就需要用到pidstat工具,同样属于sysstat软件包。执行`pidstat -d 1`可以每秒输出一次全部进程的io统计,其中`%wait`列表示进程等待io的时刻占比,数值越高说明进程越容易由于io阻塞拖慢体系,结合每秒读写大致`rkb/s`、`wkb/s`可以快速定位到占用io资源过高的进程,直接找到延迟的来源。
通过ioping主动测试磁盘实际延迟
如果想要主动测试磁盘的真正延迟,建立性能基线或者验证磁盘硬件难题,可以运用专用测试工具ioping。执行`ioping 挂载点目录`就能持续测试该目录所在磁盘的延迟,输出会显示每次io请求的耗时,测试结束后会给出平均延迟、99百分位延迟等统计结局,特别适合对比不同磁盘、不同挂载配置下的延迟差异,适合前期性能评估场景。
通过原生内核统计自定义采集延迟
如果需要自定义脚本采集延迟数据对接监控体系,可以直接读取linux内核提供的原生块设备统计,途径为`/proc/diskstats`,其中第13个字段是该磁盘全部io请求的总等待时刻(单位为毫秒),第14个字段是总io请求数,两个数值相除就能得到平均延迟,适配自动化监控的定制化需求。
不同排查场景选择对应的工具,就能快速准确获取磁盘读写延迟,为后续性能调优提供可靠依据。全文约740字。
