blktrace工具
介绍
blktrace是一个用户态的工具,提供I/O子系统上时间如何消耗的详细信息,从中可以分析是IO调度慢还是硬件响应慢等。配套工具blkparse从blktrace读取原始输出,并产生人们可读的输入和输出操作摘要。btt作为blktrace软件包的一部分而被提供,它分析blktrace输出,并显示该数据用在每个I/O栈区域的时间量,使它更容易在I/O子系统中发现瓶颈。
安装方式
以CentOS为例,可以使用以下命令安装:
# yum -y install blktrace
使用方式
- 使用blktrace命令抓取指定设备的IO信息,如:
# blktrace -w 120 -d /dev/sda
“-w”后接的参数指定抓取时间,以秒为单位;“-d”后接的参数指定设备。
命令执行完后会生成一系列以device.blktrace.cpu格式命令的二进制文件。
- 使用blkparse命令解析blktrace生成的数据,如:
# blkparse -i sda -d blkparse.out
“-i”后接的参数指定输入文件名,由于blktrace输出的文件名默认都是device.blktrace.cpu格式,所以只需输入前面的“device”即可;“-d”后接的参数指定二进制输出文件。
这个命令会将分析结果输出到屏幕,并且将分析结果的二进制数据输出到blkparse.out文件中。
- 使用btt命令查看IO的整体情况,如:
# btt -i blkparse.out
“-i”后接的参数指定输入文件名。
- Q2Q:多个发送到块IO层请求的时间间隔。
- Q2G:生成IO请求所消耗的时间,包括remap(可能被DM(Device Mapper)或MD(Multiple Device, Software RAID)remap到其它设备)和split(可能会因为I/O请求与扇区边界未对齐、或者size太大而被分拆(split)成多个物理I/O)的时间。
- G2I:IO请求进入IO Scheduler所消耗的时间,包括merge(可能会因为与其它I/O请求的物理位置相邻而合并成一个I/O)的时间。
- I2D:IO请求在IO Scheduler中等待的时间。
- D2C:IO请求在driver和硬件上(IO请求被driver提交给硬件,经过HBA、电缆(光纤、网线等)、交换机(SAN或网络)、最后到达存储设备,设备完成IO请求之后再把结果发回)所消耗的时间。
- Q2C:整个IO请求所消耗的时间(Q2I + I2D + D2C = Q2C),相当于iostat的await。
正常情况D2C占比90%以上,若I2D占比较高,可以尝试调整IO调度策略。
父主题: 常用性能监测工具