我们说了几种常见的IO性能问题,掌握了IO性能问题的分析和定位思路,掌握了IO性能分析的工具
本章,我们总结一下,在实际生产中,指标工具的选择和瓶颈问题的定位
我们还是看对应的IO栈图
对于上面的整体来说,文件系统和磁盘是区分开来的
文件系统的IO指标
首先是存储空间的使用情况,容量 使用率 剩余空间
但是别忘了文件系统的元数据也会占用磁盘空间
RAID也会影响磁盘占用情况
数据本身的存储空间,容易忽略的就是索引节点的使用情况,如果文件系统存储了过多的小文件,可能导致索引节点容量已满的情况
然后就是各类缓存,页缓存 目录项缓存 索引节点缓存 文件系统的缓存,存储文件数据和文件系统的元数据
然后就是文件IO的性能指标,包括IOPS,响应时间 吞吐量等
磁盘的IO指标
磁盘IO指标,包含使用率,磁盘忙处理IO请求的百分比,过高的使用率表明磁盘IO有性能瓶颈
IOPS 每秒IO请求数
吞吐量 每秒的IO请求大小
响应时间,发出IO请求到收到响应的间隔时间
除此外,就是缓存区Buffer的问题
文件系统和磁盘的指标,基本总结如下
然后是常见的性能工具
我们按照之前说的第4张文章,依次查看对应的工具
首先是文件系统的原理中,说了df工具,可以查看文件系统数据的空间容量,查看索引节点的容量,
对于文件系统的缓存,则是利用了 /proc/meminfo /proc/slabinfo以及 slabtop的来源,进行观察页缓存 目录项缓存 索引节点缓存以及具体文件系统的缓存
磁盘IO原理中,利用iostat和pidstat观察了磁盘及进程的IO,利用iostat,观察磁盘IO使用率,吞吐量,响应时间 IOPS, pidstat则是面向进程的
接下来一个案例,讲述的是狂打日志的案例,我们使用top查看了CPU情况,发现iowati较高,于是使用iostat发现了磁盘的IO使用率瓶颈,使用pidstat找到了大量IO的进程,最后利用strace和lsof,找到了进程正在读写的问题
同样,在磁盘IO导致问题的案例中,利用top iostat,发现磁盘有IO瓶颈,随后用pidstat发现了大量IO的进程,使用filetop和opensnoop,找到了系统调用来源
然后我们在整理一下,指标和工具的对应关系
首先是文件系统和磁盘IO性能指标角度触发,某个性能指标的时候,哪些工具可以做到
整体如下
然后是工具对应指标的表格
我们在实际环境中,利用系统提供的工具,进行相关的工具包安装
基本表格如下
最后还是老套路,我们需要知道如何快速的定位系统的瓶颈,也就是如何快速的找到IO的性能瓶颈
分析思路基本都是
先利用iostat发现磁盘IO性能瓶颈
然后是pidstat定位瓶颈的进程
随后是进程的IO行为
最终是IO的来源
所以还是先iostat和vmstat和pidstat,进行确定问题范围
在之前mysql,就是利用了iostat确认磁盘出现IO性能瓶颈,然后是pidstat找到IO最大的进程,然后是strace找到进程正在读写的文件
但是如果iostat发现swap升高,就要找内存相关问题了
那么,总结今天说的,就是说明了常见的文件系统和磁盘IO性能指标,梳理了常见的IO性能观测工具,建立指标和工具的关联