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