流程图"/>
bbt如何制作流程图
本发明属于磁盘测试分析技术领域,具体涉及一种基于blktrace的磁盘I/O性能故障定位分析方法。
背景技术:
在Linux环境下对硬盘进行性能测试时,发现对某批硬盘的系统盘内某分区进行随机写性能测试时,性能结果几率性无法达标。对于此问题,硬盘厂商认为原因在于系统安装占据了磁盘的外圈,将该分区限制在了内圈,因此对该分区做FIO读写测试时,磁头摆距过大,磁盘性能下降。即:测试方法本身就存在问题,测试结果失真,不能反映磁盘的真实性能。
要验证硬盘厂商的观点,需要提供一种新的验证方法,能够在I/O发生性能问题时进行故障定位分析。
Blktrace一个针对Linux内核中块设备I/O的跟踪工具,是由linux内核块设备层的维护者开发的。通过这个工具,使用者可以获取I/O请求队列的各种详细的情况,包括进行读写的进程名称、进程号、执行时间、读写的物理块号、块大小等等。它可以跟踪发生在块设备层的很多事件,甚至可以做到整个块设备层事件的回放。基于此,本发明提供一种基于blktrace的磁盘I/O性能故障定位分析方法,获得I/O请求队列的各种详细情况,以便精确分析I/O性能,定位I/O性能故障位置。
技术实现要素:
本发明的目的在于解决上述现有技术中存在的难题,提供一种基于blktrace的磁盘I/O性能故障定位分析方法。
本发明是通过以下技术方案实现的:
一种基于blktrace的磁盘I/O性能故障定位分析方法,包括:
(10)安装和调试blktrace;
(20)收集目标分区的I/O性能数据;
(30)对目标分区的性能值IOPS分析;
(40)确定fio访问磁盘位置轨迹图,并得出结论。
进一步的,所述步骤(10)包括:
(101)使用yum install blktrace–y命令安装blktrace;
(102)使用#mount-t debugfs debugfs/sys/kernel/debug命令挂载debugfs。
进一步的,所述步骤(20)包括:
(201)打开第一终端、第二终端;
(202)在第一终端运行指令启动blktrace,准备记录设备的访问模式;
(203)在第二终端运行测试应用程序;
(204)返回第一终端,终止blktrace运行,输出blktrace记录进行查看。
进一步的,所述步骤(30)包括:
(301)使用blkparse将(204)中所获得的对应不同CPU的多个文件聚合为一个文件;
(302)使用btt命令分析(301)所获得的文件中记录的IOPS值,输出IOPS分析图。
进一步的,所述步骤(40)包括:
(401)使用bbt命令分析fio访问的开始扇区(offset),得到读操作和/或写操作的offset和size信息。
(402)查看所需硬盘分区的信息情况包括时间、开始扇区和结束扇区,输出文件;
(403)根据(403)的输出文件绘制fio访问扇区的轨迹图,所分析的硬盘分区是否存在故障。
与现有技术相比,本发明的有益效果是:
本申请所设计的基于blktrace的磁盘I/O性能故障定位分析方法,既可以精确分析磁盘的I/O性能,也可以定位发生I/O性能故障的位置。该方法一方面丰富了I/O性能分析方法;另一方面可以定位I/O故障发生位置,可结合实际应用分析出问题产生的原因,最终减少不必要的I/O干扰,提升磁盘性能。
此外,本发明方法原理可靠,步骤简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
图1是本发明实施例提供的磁盘I/O性能故障定位分析方法的流程图。
图2是本发明实施例所提供的IOPS分析图。
图3是本发明实施例所提供的fio访问扇区的轨迹图。
具体实施方式
下面结合附图对本发明作进一步详细描述:
实施例1
如图1所示,本发明所提供的一种基于blktrace的磁盘I/O性能故障定位分析方法,包括:
(10)安装和调试blktrace;
(20)收集目标分区的I/O性能数据;
(30)对目标分区的性能值IOPS分析;
(40)确定fio访问磁盘位置轨迹图,并得出结论。
在本实施例中,所述步骤(10)包括:
(101)使用yum install blktrace–y命令安装blktrace;
(102)使用#mount-t debugfs debugfs/sys/kernel/debug命令挂载debugfs。
blktrace测试的时候,会分配物理机上逻辑cpu个数个线程,并且每一个线程绑定一个逻辑cpu来收集数据,然后,它会在debugfs中产生和每个线程对应的文件,然后调用ioctl函数,产生系统调用和内核交互。内核就会往文件中写入数据。
在本实施例中,所述步骤(20)包括:
(201)打开第一终端、第二终端;
(202)在第一终端运行指令启动blktrace,准备记录设备的访问模式;
(203)在第二终端运行测试应用程序;
(204)返回第一终端,终止blktrace运行,输出blktrace记录进行查看。
在本实施例中,所述步骤(30)包括:
(301)使用blkparse将(204)中所获得的对应不同CPU的多个文件聚合为一个文件;
(302)使用btt命令分析(301)所获得的文件中记录的IOPS值,输出IOPS分析图。
blkparse仅仅是将blktrace输出的信息转化成人可以阅读和理解的输出,但是,信息太多,太杂,开发者完全没法得到关键信息。使用bbt工具可以将blktrace采集回来的数据,进行分析,得到对开发者更有用的信息。
在本实施例中,所述步骤(40)包括:
(401)使用bbt命令分析fio访问的开始扇区(offset),得到读操作和/或写操作的offset和size信息。
(402)查看所需硬盘分区的信息情况包括时间、开始扇区和结束扇区,输出文件;
(403)根据(403)的输出文件绘制fio访问扇区的轨迹图,所分析的硬盘分区是否存在故障。
在步骤(40)中,可根据开始扇区和结束山区来计算size,绘制fio访问轨迹图是根据不同时间里访问磁盘的位置及访问扇区的个数来进行的。
本申请所设计的基于blktrace的磁盘I/O性能故障定位分析方法,既可以精确分析磁盘的I/O性能,也可以定位发生I/O性能故障的位置。该方法一方面丰富了I/O性能分析方法;另一方面可以定位I/O故障发生位置,可结合实际应用分析出问题产生的原因,最终减少不必要的I/O干扰,提升磁盘性能。
实施例2
本实施例以申请人所服务客户遇到的实际情况为实施例,针对系统盘sda4分区进行4k随机读写性能测试时,性能结果机率性无法达标的情况,进行分析。
1.安装和调试blktrace;
1.1:使用yum install blktrace–y命令安装blktrace;
1.2:使用命令
#mount-t debugfs debugfs/sys/kernel/debug挂载debugfs;
2.收集目标分区的I/O性能数据;
2.1:打开两个终端,第一终端和第二终端;
2.2:在第一终端,运行命令#blktrace-d/dev/sda4-o–|blkparse-i–,启动blktrace,准备记录设备的访问模式;
2.3:在第二终端,运行以下应用程序。
2.4:回到第一终端,按CTRL+C终止blktrace的运行,缺省的输出文件名是sda4.blktrace.<cpu>,每个CPU对应输出一个文件。
在本实施例中输出格式如下:
3.对目标分区的性能值IOPS分析;4k随机读写的性能的关注指标是IOPS。以下操作是分析sda4分区randwrite-4k的IOPS值。
3.1:运行指令#blkparse–I sda4–d sda4.blktrace.bin,将对应不同cpu的多个文件聚合成一个文件
3.2:使用btt分析sda4.blktrace.bin记录的iops值;
输入指令:#btt-i sdb.blktrace.bin-q sda4.q2c_latency/*生成q2c文件(q2c:整个IO请求所消耗的时间)
后输出如下文件:
其中,sys_mbps_fs.dat中是本次统计中所有设备吞吐量,sys_iops_fp.dat中是本次统计中所有设备的IOPS,q2c.lat_8,16_q2c.dat中是每个请求的q2c的latency。
在本实施例中,我们只需关注sda4,通过sys_iops_fp.dat和sys_mbps_fp.dat指令获取对应的IOPS和MBPS信息。
而对于randwrite-4k的随机读性能,我们需要关注IOPS值,IOPS值通过以下命令获取:
#cat sys_iops_fp.dat|tee–a iops.txt
在本实施例中,iops.txt的记录结果如下:
依据iops.txt的结果,绘制iops分析图如图2所示,该图可以直观的反应IOPS的波动,也可以观测到在某一时间点的IOPS的性能值。
4.确定fio访问磁盘位置轨迹图。
4.1:使用bbt命令分析fio访问的开始扇区(offset)。
输入指令:#btt-i sda4.blktrace.bin-B sda4.offset,命令执行完毕,使用ls命令查看会得到以下三个文件
其中r表示读操作的offset和size信息,w表示写操作的offset和size信息,c表示读操作的信息和写操作的信息。
4.2:查看dsa4randwrite-4k情况
输入指令:#cat sda4.offset_8,16_w.dat
后输出如下:
其中,第一个字段是时间,第二个字段是开始扇区即offset,第三个字段为结束扇区。
4.3:绘制fio访问的扇区轨迹图
依据4.2的输出结果,绘制fio访问扇区的轨迹图如图3所示。
可以看出,fio访问的扇区大部分分布在1x108扇区号以内,sda4并没有分布在磁盘的内圈,硬盘厂商所认定的原因——测试方法有问题,不能反映磁盘的性能,是不成立的。这也意味着,sda4的4k随机写性能低由其他原因导致,这需要结合服务器的实际应用场景,对I/O性能干扰因素进行排除。分析方向可以锁定在其他因素如磁盘振动或者磁盘散热上。使用本方法,解决了最初分析方向偏离的问题,避免了大量的时间和人力浪费。
上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。
更多推荐
bbt如何制作流程图
发布评论