我们说了几种常见的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性能观测工具,建立指标和工具的关联

发表评论

邮箱地址不会被公开。 必填项已用*标注