写点什么

Linux 常见 IO 分析工具

发布于: 2021 年 02 月 27 日


记录一次 IO 告警分析过程


接到告警,服务器 IO 飙升,连接服务器,登录服务器查看分析


top 命令查看



首先就是通过 top 命令查看,因为 top 命令最直接,且信息量够大,覆盖面够全,可以看到 CPU 的 wa 有点高


CPU 的 wa 是是 wait,是 CPU 等待时间,通常是由于磁盘 IO 问题引起,当然也有可能是其他原因引起的


top 命令的其他参数就不多介绍了,网上很多,接着看 IO

vmstat


vmstat 是一个很强大的工具,它除了能给出系统在性能方面的 CPU 和内存的统计信息之外,也能提供系统整体上的 I/O 性能情况



可以看到采集的数据中,系统写磁盘 5032 个磁盘块,vmstat 内磁盘块大小为 1024 字节,所以这里系统写磁盘速率约为每秒 4MB,vmstat 中也有 CPU 的 wa 统计,可以看到 23%的时间用来等待 I/O


vmstat 还提供自系统启动以来 I/O 子系统的性能信息



如上图,包括了磁盘数量,分区数量、读/写请求总数,读/写所花费的时间,以及当前正在处理的 I/O 总数(inprogress IO),等待 I/O 完成所花费的毫秒数(milli spent IO),这个是整个系统的 IO 统计信息


说一下合并读和合并写,linux 在读写磁盘时,为了提高性能,内核合并对磁盘相邻区域的请求,这样减少了对磁盘 IO 的操作,从而一定程度上提高 linux 性能


从上面的信息,我们已经可以定位是写磁盘造成的 IO 等待,接着我们需要定位是哪块磁盘造成的



通过-d 参数可以看到更细化的每块磁盘的 IO 信息,如上图,可以看到 vda 的读写请求,特别是写提交比较频繁,接着就可以查看磁盘下单个分区的统计信息



vmstat 虽然提供了详细的信息,但是要能很直观的从统计信息中分辨出问题并不是十分友好

iostat


和 vmstat 相似的,但是专门用来显示磁盘 I/O 统计信息的工具,就是 iostat,iostat 和 vmstat 的块大小不一样,iostat 一般为 512 字节,

iostat 的统计结果默认显示的是传输速率



如图,第一条信息是自系统启动以来的统计信息,第二条开始,为每隔 1 秒的统计数据(由于截图的时候,故障已处理,所以这里其实看起来并没有什么读写),统计数据分别为:

  • tps    每秒传输次数,该项为每秒对设备/分区读写请求的次数

  • Blk_read/s    每秒读取磁盘块的速率

  • Blk_wrtn/s    每秒写入磁盘块的速率

  • Blk_read    在时间间隔内读取块的总数量

  • Blk_wrtn    在时间间隔内写入块的总数量

这部分是指 iostat 输出的基本信息,如果想看到更详细的信息,需要用-x 参数



从 iostat 中能更直观的看到那个磁盘在进行大量的读写操作,如果用-x 参数,能看到更多的统计信息

sar


除了上面的工具,sar 也是 linux 下性能分析常用的工具,sar 也比较通用,除了 CPU、内存之外,也能查看关于 I/O 的信息



sar 能看到的 I/O 相关的信息也就是读写速率,而且显示的是设备的主设备号和次设备号,而不是它们的名称

iotop


而其实最简单的方式是使用 iotop,它是一个用来监视磁盘 I/O 使用状况的 top 类工具,可以直观的检测到哪一个程序使用的磁盘 IO 信息



上面的工具,我们需要自己去分析,去查找,iotop 很直观的,按照 I/O 统计展示进程,在运维定位 IO 故障中效率更高,不过,默认系统不自带,需要 yum 安装


此次 I/O 升高是由于 jbd2 引起的,jbd2 是一个文件系统的日志功能,为了保证文件系统的完整性,而引入了这么一个日志功能,会将所有的操作写盘记录日志,这也是为什么刚开始分析看到的磁盘写操作频繁。


网上不少文章有关于 jbd2 引起 I/O 高的分析,认为比较好的是这篇https://cloud.tencent.com/developer/article/1465600,有兴趣的可以看下,里面有多种解决方案


本文主要想介绍服务器遇到 I/O 高的情况的一些分析方法和工具,总结分析思路:

  • 查看系统总体 I/O 性能

  • 查找 I/O 高的驱动器或磁盘

  • 查找引起 I/O 高的进程

  • 查看进程对应的 I/O 操作或系统调用

  • 进行相应的处理或优化


发布于: 2021 年 02 月 27 日阅读数: 55
用户头像

有一点想法的电脑维修工 2020.07.14 加入

一位有些想法的技术爱好者

评论

发布
暂无评论
Linux常见IO分析工具