blktrace工具
介绍
blktrace是一个用户态的工具,提供关于I/O子系统时间消耗的详细信息,从中可以分析是I/O调度慢还是硬件响应慢等。配套工具blkparse从blktrace读取原始输出,并产生用户可读的输入和输出操作摘要。btt作为blktrace软件包的一部分而被提供,它分析blktrace输出,并显示该数据用在每个I/O栈区域的时间量,使它更容易在I/O子系统中发现瓶颈。
安装方式
以CentOS为例,可以使用以下命令安装:
1 | # yum -y install blktrace
|
使用方式
- 使用blktrace命令抓取指定设备的I/O信息,如:
1# blktrace -w 120 -d /dev/sda“-w”后接的参数指定抓取时间,以秒为单位;“-d”后接的参数指定设备。
命令执行完后会生成一系列以device.blktrace.cpu格式的二进制文件。
- 使用blkparse命令解析blktrace生成的数据,如:
1# blkparse -i sda -d blkparse.out“-i”后接的参数指定输入文件名,由于blktrace输出的文件名默认都是device.blktrace.cpu格式,所以只需输入前面的“device”即可;“-d”后接的参数指定二进制输出文件。
这个命令会将分析结果输出到屏幕,并且将分析结果的二进制数据输出到blkparse.out文件中。
- 使用btt命令查看I/O的整体情况,如:
1# btt -i blkparse.out“-i”后接的参数指定输入文件名。

- Q2Q:多个发送到块I/O层的请求时间间隔。
- Q2G:生成I/O请求所消耗的时间,包括remap(可能被DM(Device Mapper)或MD(Multiple Device, Software RAID)remap到其它设备)和split(可能会因为I/O请求与扇区边界未对齐、或者size太大而被分拆(split)成多个物理I/O)的时间。
- G2I:I/O请求进入I/O Scheduler所消耗的时间,包括merge(可能会因为与其它I/O请求的物理位置相邻而合并成一个I/O)的时间。
- I2D:I/O请求在I/O Scheduler中等待的时间。
- D2C:I/O请求在driver和硬件上(I/O请求被driver提交给硬件,经过HBA、电缆(光纤、网线等)、交换机(SAN或网络)、最后到达存储设备,设备完成I/O请求之后再把结果发回)所消耗的时间。
- Q2C:整个I/O请求所消耗的时间(Q2I + I2D + D2C = Q2C),相当于iostat的await。
正常情况D2C占比90%以上,若I2D占比较高,可以尝试调整I/O调度策略。
父主题: 常用性能监测工具