一种磁盘I/O性能测试方法及装置与流程

文档序号:20838268发布日期:2020-05-22 17:09阅读:162来源:国知局
一种磁盘I/O性能测试方法及装置与流程

本发明涉及硬盘测试技术领域,具体而言,为一种磁盘i/o性能测试方法及装置。



背景技术:

在服务器测试中,存储系统的性能是一个很重要的衡量标准。目前基于不同的应用场景,io数据流呈现出多样性,在一组读写操作流中数据块大小、队列深度、读写模式都随着应用场景不同而在变化,这些可变参数的排列组合是一个很大的测试集,在实际测试中不可能完全覆盖。而且在硬盘性能测试中,通过典型io模型来进行性能测试,通过测试的硬盘,在客户应用中仍会出现性能低的问题,而实际情况是针对客户的应用更加难以模拟,无法进行针对性的测试。

有鉴于此,特提出本发明。



技术实现要素:

针对现有技术中的缺陷,本发明提供一种新的磁盘i/o性能测试方法及装置,用于磁盘性能测试,以利于增大测试的覆盖度和准确性。

为了实现上述目的,本发明的技术方案为:

一种磁盘i/o性能测试方法,包括

s1.通过io数据流抓取,获取应用的io特征数据;

s2.设置回放策略,在目标设备上进行所述io特征数据回放;

s3.收集目标设备的性能值,进行io分析,并得出结果。

进一步的,上述的磁盘i/o性能测试方法中,所述s1.通过io数据流抓取,获取应用的io特征数据,包括

通过交互式的工具,获取操作类型、待流量抓取的设备名以及流量抓取的时长信息进行流量抓取;

抓取后的io特征数据,放在profile文件夹下。

进一步的,上述的磁盘i/o性能测试方法中,所述s2.设置回放策略,在目标设备上进行所述io特征数据回放,包括

根据所述工具中对io数据流抓取后生成的profile文件,获取操作类型、待流量抓取的设备名以及流量抓取的时长信息在目标设备上进行流量回放;

回放时按照所述回放策略:基于每个被回放过的文件,通过计数器记录该文件的回放次数;每次执行工具时,优先从回放次数低的profile文件开始遍历,继而每次一个io流进行全随机遍历和每次多个io流进行全随机遍历。

进一步的,上述的磁盘i/o性能测试方法中,所述每次多个io流进行全随机遍历时,io流个数取决于回放的时间,通过时间计算能回放文件的个数。

进一步的,上述的磁盘i/o性能测试方法中,所述流量抓取通过内核自带的blktrace模块,将待抓取设备的io数据流进行trace;在trace的时候,分配物理机上逻辑cpu核心的所有核心,启动相对应数量的线程来绑定每一个核心,收集数据,在/sys/kernel/debug下每个线程将产生一个文件;所述交互式工具通过多线程方式,每个线程处理一个文件,将生成的文件经过btrecord解析,提取需要回放的io信息。

本发明还提供一种磁盘i/o性能测试装置,包括处理器和存储器,存储器中存储有程序,程序被处理器运行时,执行

s1.通过io数据流抓取,获取应用的io特征数据;

s2.设置回放策略,在目标设备上进行所述io特征数据回放;

s3.收集目标设备的性能值,进行io分析,并得出结果。

进一步的,上述的磁盘i/o性能测试装置中,程序执行s1.通过io数据流抓取,获取应用的io特征数据,包括

通过交互式的工具,获取操作类型、待流量抓取的设备名以及流量抓取的时长信息进行流量抓取;

抓取后的io特征数据,放在profile文件夹下。

进一步的,上述的磁盘i/o性能测试装置中,所述s2.设置回放策略,在目标设备上进行所述io特征数据回放,包括

根据所述工具中对io数据流抓取后生成的profile文件,获取操作类型、待流量抓取的设备名以及流量抓取的时长信息在目标设备上进行流量回放;

回放时按照所述回放策略:基于每个被回放过的文件,通过计数器记录该文件的回放次数;每次执行工具时,优先从回放次数低的profile文件开始遍历,继而每次一个io流进行全随机遍历和每次多个io流进行全随机遍历。

进一步的,上述的磁盘i/o性能测试装置中,所述每次多个io流进行全随机遍历时,io流个数取决于回放的时间,通过时间计算能回放文件的个数。

进一步的,上述的磁盘i/o性能测试装置中,所述流量抓取通过内核自带的blktrace模块,将待抓取设备的io数据流进行trace;在trace的时候,分配物理机上逻辑cpu核心的所有核心,启动相对应数量的线程来绑定每一个核心,收集数据,在/sys/kernel/debug下每个线程将产生一个文件;所述交互式工具通过多线程方式,每个线程处理一个文件,将生成的文件经过btrecord解析,提取需要回放的io信息。

与传统技术相比,本发明的有益效果包括:

可以对块设备进行自动化io测试,评估一个磁盘的性能,或者进行故障分析:

由于测试中不可能测试所有的应用,本发明通过流量抓取,能够获取现场应用场景的真实io情况,然后在目标设备上进行回放,完全复制现场,继而能够覆盖更多的客户场景,进行磁盘性能测试。

基于设置的回放策略算法,提高测试准确性,可以用于分析设备io性能低的问题,找到导致io性能低的进程。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。

图1为本发明一种磁盘i/o性能测试方法的一个具体实施例的流程图;

图2为本发明流量抓取的一个具体代码示例示意图;

图3为本发明流量抓取中生成的profile文件的具体代码实现示例示意图;

图4为本发明流量回放的一个具体代码示例示意图;

图5为本发明io分析的一个具体代码示例示意图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。

需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。

首先对本发明中涉及的技术术语进行解释:

实施例1

如图1所示的,一种磁盘i/o性能测试方法,包括

s1.通过io数据流抓取,获取应用的io特征数据;

s2.设置回放策略,在目标设备上进行所述io特征数据回放,以复现所述应用;

s3.收集目标设备的性能值,进行io分析,并得出结果。

本发明提供的磁盘i/o性能测试方法,基于对真实workload(工作负载)的trace(跟踪、抓取),抽象成多种io模型,增大测试的覆盖度和准确性,获得应用io的具体特性;具体的,s1.通过io数据流抓取,获取现场应用(即应用场景)的io特征数据,包括:

通过交互式的工具(即命令行窗口),获取操作类型、待流量抓取的设备名、流量抓取的时长等信息进行流量抓取;其中操作类型、需流量抓取的设备名、流量抓取的时长等均需要操作人员输入。本实施例中,如图2所示的,操作类型中,输入“1”表示流量抓取,输入“1”表示流量回放,则该步骤中输入1;然后操作人员提供流量抓取的设备名,例如输入sdb;最后需要操作人员输入流量抓取的时长,比如输入1min;这样将对sdb这个硬盘进行1min的流量抓取,抓取后的io特征数据,被处理后放在profile文件夹下面。

本实施例中,流量抓取是通过内核自带的blktrace模块实现;blktrace模块是对通用块层(blocklayer)的i/o跟踪机制,它能抓取详细的i/o请求(request),发送到用户空间。其主要由3部分组成:内核部分、记录内核到用户空间的i/o追踪信息的程序以及分析、展示i/o追踪信息的程序。

本实施例中,流量抓取通过内核自带的blktrace模块,将待抓取设备的io数据流进行trace(跟踪、抓取);一个io请求进入blocklayer之后,可能会经历下面的过程:1.remap(重映射),2.split(拆分),3.merge(合并),4.发送给driver(驱动程序),5.被driver提交给硬件,6.硬件处理后再返回。blktrace模块能够记录下io所经历的各个步骤。在trace的时候,会分配物理机上逻辑cpu核心的所有核心,启动相对应数量的线程来绑定每一个核心,收集数据,在/sys/kernel/debug下每个线程将产生一个文件,所以本实施例中交互式工具在实现时候也是通过多线程方式,每个线程处理一个文件,将生成的文件经过btrecord解析每个文件,提取需要回放的io信息;本实施例中给出的一个具体代码实现示例如图3所示。

由于测试中不可能测试所有的应用,可以选取多个典型场景,目前包括mysql(一种关系型数据库管理系统),web应用以及oracel(一种关系数据库管理系统),将这些应用的io数据流保存下来,每份io数据流作为一个profile文件,在存在的多个profile中,本实施例中给出的一个具体代码实现示例如图4所示的。通过流量抓取,获取用户现场的真实io情况,然后可以在实验设备(目标设备)上进行回放,以完全复制客户现场,能够覆盖更多的客户场景,增大测试的覆盖度和准确性,获得应用io的具体特性,对目标设备的性能测试分析。

步骤s2.设置回放策略,在目标设备上进行所述io特征数据回放,复制所述应用场景,包括

所述交互式工具中已经自带一些特征ioprofile文件,是上述步骤中对io数据流抓取后生成的。该步骤中根据获取操作类型、待流量抓取的设备名、流量抓取的时长等信息进行流量回放;其中操作类型、需流量回放的设备名、流量回放的时长等均需要操作人员输入。本实施例中,操作人员输入操作类型,1是流量抓取,2是流量回放,这里输入2;然后需要操作人员提供待流量回放的设备名,比如输入sdd;最后需要操作人员输入流量回放的时长,比如输入30s。这样将对sdd这个块设备进行30s的流量回放,同时将对回放中进行io监控,回放完成后分析io特征,给出io分析报告;如图5所示。

目前profile文件中存在上百个回放profile,为了每次都回放不同的io流,让每个io流都能被遍历到,本实施例中提供一个回放策略:基于每个被回放过的文件,通过一个计数器记录该文件的回放次数;每次执行工具时候,优先从回放次数低的profile文件开始遍历,这样每次1个io流进行全随机遍历和每次n(n取决于回放的时间,通过时间计算能回放文件的个数)个io流进行全随机遍历;根据该回放策略对目标设备进行io流回放。

s3.在回放过程中,收集目标设备(即磁盘)的性能值,进行io分析,并得出结果,以评估一个磁盘的性能,或者进行故障分析,例如通过回放用于分析io性能低的问题,找到导致io性能低的进程等。

实施例2

本发明还提供了用于实施上述方法的装置,包括处理器和存储器,存储器中存储有程序,程序被处理器运行时,执行

s1.通过io数据流抓取,获取现场应用的io特征数据;

s2.设置回放策略,在目标设备上进行所述io特征数据回放,以复制所述现场应用;

s3.收集目标设备的性能值,进行io分析,并得出结果。

具体的,程序执行所述s1.通过io数据流抓取,获取现场的io特征数据时,包括:

通过交互式的工具(即命令行窗口),获取操作类型、待流量抓取的设备名、流量抓取的时长等信息进行流量抓取;其中操作类型、需流量抓取的设备名、流量抓取的时长等均需要操作人员输入。本实施例中,如图2所示的,操作类型中,输入“1”表示流量抓取,输入“1”表示流量回放,则该步骤中输入1;然后操作人员提供流量抓取的设备名,例如输入sdb;最后需要操作人员输入流量抓取的时长,比如输入1min;这样将对sdb这个硬盘进行1min的流量抓取,抓取后的io特征数据,被处理后放在profile文件夹下面。

本实施例中,流量抓取通过内核自带的blktrace模块,将待抓取设备的io数据流进行trace(跟踪、抓取);在trace的时候,会分配物理机上逻辑cpu核心的所有核心,启动相对应数量的线程来绑定每一个核心,收集数据,在/sys/kernel/debug下每个线程将产生一个文件,所以本实施例中交互式工具在实现时候也是通过多线程方式,每个线程处理一个文件,将生成的文件经过btrecord解析每个文件,提取需要回放的io信息;本实施例中给出的一个具体代码实现示例如图3所示。

由于测试中不可能测试所有的应用,可以选取多个典型场景,目前包括mysql(一种关系型数据库管理系统),web应用以及oracel(一种关系数据库管理系统),将这些应用的io数据流保存下来,每份io数据流作为一个profile文件,在存在的多个profile中,本实施例中给出的一个具体代码实现示例如图4所示的。通过流量抓取,获取用户现场的真实io情况,然后可以在实验设备(目标设备)上进行回放,以完全复制客户现场,能够覆盖更多的客户场景,增大测试的覆盖度和准确性,获得应用io的具体特性,对目标设备的性能测试分析。

程序执行s2.设置回放策略,在目标设备上进行所述io特征数据回放,复制所述现场时,包括

所述交互式工具中已经自带一些特征ioprofile文件,是上述步骤中对io数据流抓取后生成的。该步骤中根据获取操作类型、待流量抓取的设备名、流量抓取的时长等信息进行流量回放;其中操作类型、需流量回放的设备名、流量回放的时长等均需要操作人员输入。本实施例中,操作人员输入操作类型,1是流量抓取,2是流量回放,这里输入2;然后需要操作人员提供待流量回放的设备名,比如输入sdd;最后需要操作人员输入流量回放的时长,比如输入30s。这样将对sdd这个块设备进行30s的流量回放,同时将对回放中进行io监控,以用于回放完成后分析io特征,给出io分析报告。

目前profile文件中存在上百个回放profile,为了每次都回放不同的io流,让每个io流都能被遍历到,本实施例中提供一个回放策略:基于每个被回放过的文件,通过一个计数器记录该文件的回放次数;每次执行工具时候,优先从回放次数低的profile文件开始遍历,这样每次1个io流进行全随机遍历和每次n(n取决于回放的时间,通过时间计算能回放文件的个数)个io流进行全随机遍历;根据该回放策略对目标设备进行io流回放。

s3.在回放过程中,收集目标设备(即磁盘)的性能值,进行io分析,并得出结果,如图5所示,以评估一个磁盘的性能,或者进行故障分析。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1