性能测试方法、装置、计算机设备和可读存储介质与流程

未命名 08-13 阅读:87 评论:0


1.本技术涉及故障测试技术领域,特别是涉及一种性能测试方法、装置、计算机设备和可读存储介质。


背景技术:

2.随着计算机网络技术的发展,为了提高数据存储的可靠性及安全性,分布式数据存储成为数据存储的发展趋势。因此,对分布式数据存储系统进行性能测试以确保系统稳定运行至关重要。
3.传统的,通常采用模拟硬件故障的方式,对分布式数据存储系统进行性能测试。如采用通过systemtap工具修改分布式数据存储系统中的scsi子系统的定时器的方式,向分布式数据存储系统注入延时故障,以模拟分布式数据存储系统中的硬件故障。
4.然而,传统的向分布式数据存储系统注入延时故障的方式,无法对scsi子系统中没有定时器的分布式数据存储系统注入延时故障。进而,导致无法实现采用模拟硬件故障的方式,对分布式数据存储系统进行性能测试。


技术实现要素:

5.基于此,有必要针对上述技术问题,提供一种能够实现对scsi子系统中无定时器的分布式数据存储系统进行模拟延时故障,并对模拟延时故障的分布式数据存储系统进行性能测试的性能测试方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
6.第一方面,本技术提供了一种性能测试方法。该方法包括:
7.接收数据访问请求;数据访问请求中携带了待访问目标硬件的硬件信息;
8.响应于数据访问请求生成性能测试指令,基于性能测试指令调用硬件信息对应的目标硬件生成初始回调结果;性能测试指令中携带了目标硬件的模拟硬件故障信息;
9.基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果,根据目标回调结果进行性能测试。
10.本实施例中,通过接收携带了待访问目标硬件的硬件信息的数据访问请求;响应于该数据访问请求生成携带了目标硬件的模拟硬件故障信息的性能测试指令,基于性能测试指令调用硬件信息对应的目标硬件生成初始回调结果;接着,基于该性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果,根据目标回调结果进行性能测试;即采用本实施例中的性能测试方法进行延时故障注入时,可以根据数据访问请求生成携带该延时故障信息的性能测试指令,并在获取到目标硬件的初始回调结果的情况下,向该初始回调结果中注入该延时故障信息,以此来生成携带延时故障信息的目标回调结果,从而实现对延时故障的注入;因此,采用本技术实施例的方法,即使scsi子系统中没有定时器,也能通过向初始回调结果中注入模拟硬件故障信息的方式来实现硬件故障的注入,从而实现模拟硬件故障,实现对分布式数据存储系统的性能测试,提高性能测试的可实施性和可靠性。
11.在其中一个实施例中,基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果,包括:
12.从初始回调结果中,获取基于数据访问请求对目标硬件执行数据访问所生成的初始访问结果;
13.基于性能测试指令中的模拟硬件故障信息,对初始访问结果进行修改,生成目标回调结果。
14.本实施例中,通过从初始回调结果中,获取基于数据访问请求对目标硬件执行数据访问所生成的初始访问结果;接着,基于性能测试指令中的模拟硬件故障信息,对初始访问结果进行修改,生成目标回调结果;即通过将目标硬件的真实访问结果修改为模拟硬件故障对应的故障访问结果,从而实现模拟硬件故障的注入,进而模拟硬件故障下的数据访问情况,最终实现对硬件故障下的系统性能测试;提高采用模拟硬件故障的方式对系统性能进行测试的可实施性。
15.在其中一个实施例中,模拟硬件故障信息中包括模拟硬件故障类型,基于性能测试指令中的模拟硬件故障信息,对初始访问结果进行修改,生成目标回调结果,包括:
16.根据模拟硬件故障类型及预设对应关系,确定模拟硬件故障类型对应的目标访问结果;预设对应关系包括不同的模拟硬件故障类型与访问结果之间的对应关系;
17.将初始回调结果中的初始访问结果修改为目标访问结果,生成目标回调结果。
18.本实施例中,根据模拟硬件故障类型及预设对应关系,确定模拟硬件故障类型对应的目标访问结果;接着,将初始回调结果中的初始访问结果修改为目标访问结果,生成目标回调结果;其中,预设对应关系包括不同的模拟硬件故障类型与访问结果之间的对应关系。即采用本实施例的方法,在进行性能测试时,只需确定模拟硬件故障类型,终端便可根据输入的模拟硬件故障类型,进行相应的故障模拟;无需对不同故障类型对应的访问结果进行研究,从而降低性能测试的要求,提高性能测试的可执行性和便捷性。
19.在其中一个实施例中,模拟硬件故障类型包括访问延时故障,模拟硬件故障信息中还包括与访问延时故障对应的延时时长;根据目标回调结果进行性能测试,包括:
20.基于目标回调结果,接收新的数据访问请求,响应于新的数据访问请求生成新的性能测试指令,基于新的性能测试指令调用目标硬件生成新的初始回调结果;
21.判断生成新的初始回调结果的循环次数是否大于或等于预设循环次数,若否,则基于新的性能测试指令向新的初始回调结果中注入模拟硬件故障信息,生成新的目标回调结果;
22.将新的目标回调结果作为目标回调结果进行迭代计算,直至生成新的初始回调结果的循环次数大于或等于预设循环次数为止,根据新的初始回调结果进行性能测试;预设循环次数为根据延时时长所确定。
23.本实施例中,在进行访问延时故障的性能测试时,采用类似于内核锁中的自旋锁的方式,通过对本次访问的自旋等待来达到陷入内核的目的,即在循环访问的过程中达到访问延时的故障效果;由于数据访问请求的执行循环本身在重试请求时会恢复抢占,所以采用本技术实施例提出的循环访问的方法,不会造成系统的核心处理器的线程核上的内核软狗因长时间无法被调度而引起softlockup故障,提高系统性能测试的稳定性和可靠性。
24.在其中一个实施例中,若性能测试指令中携带了测试标识信息,且测试标识信息
用于表征是否向初始回调结果中注入模拟硬件故障信息,则该方法还包括:
25.从性能测试指令中获取测试标识信息;
26.根据测试标识信息确定是否执行基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果的步骤。
27.本实施例中,在性能测试指令中还可以携带测试标识信息,且该测试标识信息用于表征是否向初始回调结果中注入模拟硬件故障信息,那么基于此,终端可以从性能测试指令中获取测试标识信息;并根据测试标识信息确定是否执行基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果的步骤。即采用本实施例中的方法,能够实现对指定硬件或指定上层应用程序进行故障注入,满足个性化的性能测试需求,提高性能测试的灵活性。
28.在其中一个实施例中,测试标识信息包括第一类测试标识信息和第二类测试标识信息,响应于数据访问请求生成性能测试指令,包括:
29.响应于数据访问请求,获取性能测试信息;性能测试信息中包括待测试硬件信息;
30.判断待访问目标硬件的硬件信息与待测试硬件信息是否一致;
31.若是,则生成第一类测试标识信息,根据第一类测试标识信息生成性能测试指令;第一类测试标识信息用于表征向初始回调结果中注入模拟硬件故障信息;
32.若否,则生成第二类测试标识信息,根据第二类测试标识信息生成性能测试指令;第二类测试标识信息用于表征禁止向初始回调结果中注入模拟硬件故障信息。
33.本实施例中,测试标识信息可以包括第一类测试标识信息和第二类测试标识信息,其中,通过第一类测试标识信息来表征向初始回调结果中注入模拟硬件故障信息,通过第二类测试标识信息来表征禁止向初始回调结果中注入模拟硬件故障信息;基于此,在响应于数据访问请求生成性能测试指令时,可以通过响应于数据访问请求,获取性能测试信息;该性能测试信息中包括待测试硬件信息;接着,判断待访问目标硬件的硬件信息与待测试硬件信息是否一致;若是,则生成第一类测试标识信息,根据第一类测试标识信息生成性能测试指令;若否,则生成第二类测试标识信息,根据第二类测试标识信息生成性能测试指令;即本实施例中,终端在接收到数据访问请求的情况下,对该数据访问请求所访问的目标硬件进行判断,若该目标硬件属于待测试硬件,则生成用于表征向初始回调结果中注入模拟硬件故障信息的性能测试指令;若该目标硬件不属于待测试硬件,则生成用于表征禁止向初始回调结果中注入模拟硬件故障信息的性能测试指令;从而实现对指定硬件的性能测试,增加性能测试的灵活性和多样性。
34.在其中一个实施例中,数据访问请求中还携带了目标测试应用信息,性能测试信息还包括待测试应用信息;生成第一类测试标识信息,包括:
35.判断目标测试应用信息与待测试应用信息是否一致;
36.若目标测试应用信息与待测试应用信息一致,则生成第一类测试标识信息。
37.本实施例中,在判断待访问目标硬件的硬件信息与待测试硬件信息一致的情况下,还可以进一步判断目标测试应用信息与待测试应用信息是否一致;若目标测试应用信息与待测试应用信息一致,则生成第一类测试标识信息。从而实现针对特定硬件及特定应用程序的性能测试,提高性能测试的灵活性和多样性;另外,通过在性能测试时设置待测试应用信息,还可以避免对非待测试应用程序的正常数据访问流程造成不利影响,确保非待
测试应用程序的正常数据访问,以及确保非待测试应用程序的数据访问有效性。
38.第二方面,本技术还提供了一种性能测试装置。该装置包括:
39.接收模块,用于接收数据访问请求;数据访问请求中携带了待访问目标硬件的硬件信息;
40.生成模块,用于响应于数据访问请求生成性能测试指令,基于性能测试指令调用硬件信息对应的目标硬件生成初始回调结果;性能测试指令中携带了目标硬件的模拟硬件故障信息;
41.测试模块,用于基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果,根据目标回调结果进行性能测试。
42.第三方面,本技术还提供了一种计算机设备。该计算机设备包括存储器和处理器,该存储器存储有计算机程序,该处理器执行所述计算机程序时实现上述第一方面中的性能测试方法的步骤。
43.第四方面,本技术还提供了一种计算机可读存储介质。该计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面中的性能测试方法的步骤。
44.第五方面,本技术还提供了一种计算机程序产品,该计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述第一方面中的性能测试方法的步骤。
45.上述性能测试方法、装置、计算机设备、可读存储介质和计算机程序产品,通过接收携带了待访问目标硬件的硬件信息的数据访问请求;响应于该数据访问请求生成携带了目标硬件的模拟硬件故障信息的性能测试指令,基于性能测试指令调用硬件信息对应的目标硬件生成初始回调结果;接着,基于该性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果,根据目标回调结果进行性能测试;即采用本实施例中的性能测试方法进行延时故障注入时,可以根据数据访问请求生成携带该延时故障信息的性能测试指令,并在获取到目标硬件的初始回调结果的情况下,向该初始回调结果中注入该延时故障信息,以此来生成携带延时故障信息的目标回调结果,从而实现对延时故障的注入;因此,采用本技术实施例的方法,即使scsi子系统中没有定时器,也能通过向初始回调结果中注入模拟硬件故障信息的方式来实现硬件故障的注入,从而实现模拟硬件故障,实现对分布式数据存储系统的性能测试,提高性能测试的可实施性和可靠性。
附图说明
46.图1为一个实施例中性能测试方法的应用环境图;
47.图2为一个实施例中性能测试方法的流程示意图;
48.图3为一个实施例中linux系统的结构示意图;
49.图4为另一个实施例中性能测试方法的流程示意图;
50.图5为另一个实施例中性能测试方法的流程示意图;
51.图6为另一个实施例中性能测试方法的流程示意图;
52.图7为另一个实施例中性能测试方法的流程示意图;
53.图8为另一个实施例中性能测试方法的流程示意图;
54.图9为另一个实施例中性能测试方法的流程示意图;
55.图10为一个实施例中数据读写访问的流程结构示意图;
56.图11为一个实施例中性能测试装置的结构框图;
57.图12为一个实施例中计算机设备的内部结构图。
具体实施方式
58.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
59.在分布式数据存储系统的异常测试中,模拟硬件故障是一个热门研究的问题。尤其是在测试分布式数据存储系统中的存储设备如磁盘的健壮性时,不可能等存储设备发生硬件故障了再进行性能测试,也不可能真的将磁存设备弄坏来达到硬件故障效果;因此,从分布式数据存储系统的内核或者驱动层来模拟存储设备的硬件故障就显得非常必要。例如:在各种输入输出io模型下,对磁盘注入各种模拟硬件故障,如模拟慢盘的秒级乃至分钟级的数据读写延时等。
60.对于存储设备的硬件故障类型,在生产环境中经常因为输入输出抖动,即io抖动,出现各种问题;并且此类问题一般都不是很容易定位,所以在线下模拟这种io抖动就很有必要。相关技术中,可以采用测试工具在不对软件和内核做任何修改的条件下模拟做磁盘io延迟的故障注入。例如:该测试工具可以为systemtap测试工具,systemtap是一个诊断linux系统性能或功能问题的开源软件。通过systemtap测试工具,在诊断系统问题或性能时,开发者或调试人员只需要编写测试脚本即可,而且systemtap本身也提供了很多脚本称为tapset,以方便开发;在编写完测试脚本之后,通过systemtap提供的命令行接口就可以对正在运行的系统内核进行诊断调试,而无需再修改或插入调试代码、重新编译内核、安装内核和重启动等这些繁琐操作。
61.小型计算机系统接口(small computer system interface,scsi)协议是一套古老的协议,至今仍在一些硬件中存在和使用,例如基于sata协议的ssd硬盘,ufs器件等。由于scsi命令已经标准化,因此scsi子系统也成为了linux内核众多子系统中的一个。另外,由于scsi只是一个协议,因此任何种类的控制器都可以使用scsi进行交互,所以这个“通道”是借助各种控制器的驱动来完成交互。有点像协议分层,scsi类似于协议层,而物理层、链路层则由各种控制器去完成。
62.在软件上,linux scsi子系统发送和接收的任何scsi命令都是由底层物理设备对应的驱动程序完成的,例如可以通过usb某个子设备驱动或者通过ufs驱动来实现scsi命令传输。
63.对于低版本的内核,由于scsi驱动层中设置有定时器,因此,可以采用通过systemtap向scsi驱动层进行延时注入的方式来模拟延时故障。而对于高版本内核,由于其内核取消了scsi驱动层的定时器,导致无法通过设定定时器的方式来达到原本的延时注入。如对于3.10版本以上的linux内核在scsi驱动层就不支持时延注入。
64.那么对于scsi子系统中没有定时器的内核,相关技术中也可以采用普通的睡眠模式来模拟延时故障,但是,睡眠模式会造成整个内核线程的停顿,且只能用于毫秒级的小时延注入以及小输出输出压力下的使用场景,并极容易造成内核出现softlockup问题,从而
造成内核整体崩溃;其中,softlockup是指linux内核某线程的抢占被长时间关闭而导致进程无法调度。另外,相关技术还无法实现长时间的延时注入,且会严重影响系统整体的io吞吐,或者造成系统内核的softlockup故障。
65.基于此,本技术提出了一种性能测试方法,能够对scsi子系统中没有定时器的内核进行延时注入,以模拟延时故障。
66.本技术实施例提供的性能测试方法,可以应用于如图1所示的应用环境中。其中,计算机设备102中可以安装有分布式数据存储系统,该分布式数据存储系统可以是基于linux操作系统所实现的,在该linux操作系统的linux内核中可以包括scsi子系统,该scsi子系统用于实现上层应用与底层存储设备之间的数据传输与交互。计算机设备102可以包括但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑、服务器等。
67.在一个实施例中,如图2所示,提供了一种性能测试方法,以该方法应用于图1中的计算机设备为例进行说明,包括以下步骤:
68.步骤201,接收数据访问请求;数据访问请求中携带了待访问目标硬件的硬件信息。
69.对于linux操作系统来说,其系统结构可以包括应用层、内核层和硬件层,参考图3所示;其中,应用层可以包括面向用户的不同上层应用程序和库;内核层的主要功能可以包括设备驱动、进程管理、内存管理、文件系统和网络通信等,即在内核层中包括用于实现不同功能的子系统,如图中粗实线所框出的scsi子系统等;硬件层可以包括不同的存储设备,如ssd硬盘、ufs器件、flash闪存等,还可以包括其他硬件设备,如图形处理器(graphics processing unit,gpu)、无线wifi模块等。
70.本实施例中,待访问目标硬件可以包括不同的存储设备,也可以包括其他的硬件设备等,本技术实施例对此不做具体限定。在待访问目标硬件包括不同类型的存储设备的情况下,该待访问目标硬件还可以包括不同类型的存储设备中的不同存储空间。其中,不同类型的存储设备包括但不限于raid盘、hdd盘、ssd盘等不同类型的盘,不同存储空间包括但不限于1-n块盘、分区、以及特定存储块block等。
71.示例性地,不同的上层应用可以触发对不同硬件的数据访问请求,该数据访问请求包括但不限于数据读取请求、数据写入请求等;计算机设备可以接收不同的上层应用发送的数据访问请求,该数据访问请求中可以携带待访问目标硬件的硬件信息;该硬件信息包括但不限于目标硬件的标识信息、目标硬件下的子硬件的标识信息等,在该目标硬件为不同类型的存储设备的情况下,该硬件信息中还可以包括不同类型的存储设备中的不同存储空间。
72.步骤202,响应于数据访问请求生成性能测试指令,基于性能测试指令调用硬件信息对应的目标硬件生成初始回调结果。
73.其中,该性能测试指令中携带了目标硬件的模拟硬件故障信息,该模拟硬件故障信息中可以包括模拟硬件故障类型、模拟硬件故障类型对应的故障参数中的至少一种。
74.示例性地,计算机设备可以响应于该数据访问请求,并在该数据访问请求中添加目标硬件的模拟硬件故障信息,从而生成与该数据访问请求对应的性能测试指令。
75.示例性地,计算机设备也可以响应于该数据访问请求,对该数据访问请求进行请求类型转换,并在转换后的数据访问请求中添加目标硬件的模拟硬件故障信息,从而生成
与该数据访问请求对应的性能测试指令;例如,在上层应用与底层硬件所支持的数据交互协议不同的情况下,对请求类型的转换可以为对数据交互协议的转换,即将上层应用发送的基于该上层应用所支持的数据交互协议所生成的数据访问请求,转换为目标硬件所支持的数据交互协议对应的数据访问请求。如,将上层应用所发送的数据访问请求转换为存储设备所支持的基于scsi协议的scsi命令。
76.示例性地,计算机设备还可以响应于该数据访问请求,提取该数据访问请求中携带的数据,包括但不限于待访问目标硬件的硬件信息;接着,对所提取出的数据进行数据类型转换处理,从而基于转换后的数据以及目标硬件的模拟硬件故障信息,生成与该数据访问请求对应的性能测试指令等;例如:对数据进行加密处理、对数据的数据类型进行转换处理,如将整型数据转换为浮点型数据等、基于对应关系将上层应用对应的数据转换为目标硬件对应的数据等,如将上层应用对应的目标硬件的名称转换为目标硬件的id等。
77.进一步地,在响应于数据访问请求生成携带了目标硬件的模拟硬件故障信息的性能测试指令的情况下,可以基于该性能测试指令调用该目标硬件,以便目标硬件执行该数据访问请求对应的数据访问操作,从而生成初始回调结果。
78.步骤203,基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果,根据目标回调结果进行性能测试。
79.示例性地,计算机设备在获取到初始回调结果的情况下,可以基于该性能测试指令中携带的目标硬件的模拟硬件故障信息,向初始回调结果中注入该模拟硬件故障信息,从而生成注入模拟硬件故障后的目标回调结果;接着,根据该目标回调结果进行性能测试。
80.示例性地,计算机设备可以将该目标回调结果发送至上层应用,以便上层应用程序基于该目标回调结果生成与该目标回调结果对应的处理结果,以便根据上层应用的处理结果来判断linux系统对于该模拟硬件故障的处理性能,即判断linux系统在应对该模拟硬件故障时的处理能力。从而验证上层应用程序在异常情况下的行为是否符合预期的目的。
81.上述性能测试方法中,计算机设备通过接收携带了待访问目标硬件的硬件信息的数据访问请求;响应于该数据访问请求生成携带了目标硬件的模拟硬件故障信息的性能测试指令,基于性能测试指令调用硬件信息对应的目标硬件生成初始回调结果;接着,基于该性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果,根据目标回调结果进行性能测试;即采用本实施例中的性能测试方法进行延时故障注入时,可以根据数据访问请求生成携带该延时故障信息的性能测试指令,并在获取到目标硬件的初始回调结果的情况下,向该初始回调结果中注入该延时故障信息,以此来生成携带延时故障信息的目标回调结果,从而实现对延时故障的注入;因此,采用本技术实施例的方法,即使scsi子系统中没有定时器,也能通过向初始回调结果中注入模拟硬件故障信息的方式来实现硬件故障的注入,从而实现模拟硬件故障,实现对分布式数据存储系统的性能测试,提高性能测试的可实施性和可靠性。
82.图4为另一个实施例中性能测试方法的流程示意图。本实施例涉及的是计算机设备基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果的一种可选的实现过程,在上述实施例的基础上,如图4所示,上述步骤203包括:
83.步骤401,从初始回调结果中,获取基于数据访问请求对目标硬件执行数据访问所生成的初始访问结果。
84.其中,初始回调结果中包括基于数据访问请求对目标硬件执行数据访问所生成的初始访问结果,该初始访问结果可以用于表征是否访问成功的访问结果,也可以用于表征不同的访问状态的访问结果等;其中,访问状态可以包括但不限于访问成功、访问失败、目标硬件未就绪、目标硬件故障等;当然,在该初始回调结果中还可以包括除该初始访问结果之外的其他信息,如目标硬件的硬件信息、上层应用的应用信息、访问数据等。
85.示例性地,对于该访问结果,其可以通过字符、字符串、数字、数字与字符的组合、多个字符或字符串的组合来表示不同的访问结果,本技术实施例对此不做具体限定。
86.示例性地,计算机设备在获取到初始回调结果的情况下,可以从该初始回调结果中获取该初始访问结果,即从该初始回调结果中包括的至少一个信息中提取出初始访问结果对应的信息。
87.步骤402,基于性能测试指令中的模拟硬件故障信息,对初始访问结果进行修改,生成目标回调结果。
88.示例性地,在获取到初始回调结果中的初始访问结果的情况下,可以将该初始访问结果修改为模拟硬件故障信息对应的目标访问结果,进而,基于该目标访问结果生成该目标回调结果。其中,在该模拟硬件故障信息中可以直接包括模拟硬件故障信息对应的目标访问结果,那么,计算机设备可以从模拟硬件故障信息中获取该目标访问结果,并将初始访问结果修改为该目标访问结果,从而生成目标回调结果。
89.本实施例中,计算机设备通过从初始回调结果中,获取基于数据访问请求对目标硬件执行数据访问所生成的初始访问结果;接着,基于性能测试指令中的模拟硬件故障信息,对初始访问结果进行修改,生成目标回调结果;即通过将目标硬件的真实访问结果修改为模拟硬件故障对应的故障访问结果,从而实现模拟硬件故障的注入,进而模拟硬件故障下的数据访问情况,最终实现对硬件故障下的系统性能测试;提高采用模拟硬件故障的方式对系统性能进行测试的可实施性。
90.图5为另一个实施例中性能测试方法的流程示意图。本实施例涉及的是在模拟硬件故障信息中包括模拟硬件故障类型的情况下,计算机设备基于性能测试指令中的模拟硬件故障信息,对初始访问结果进行修改,生成目标回调结果的一种可选的实现过程,在上述实施例的基础上,如图5所示,上述步骤402包括:
91.步骤501,根据模拟硬件故障类型及预设对应关系,确定模拟硬件故障类型对应的目标访问结果。
92.其中,预设对应关系包括不同的模拟硬件故障类型与访问结果之间的对应关系。
93.在一种实现方式中,在模拟硬件故障信息中可以包括模拟硬件故障类型,包括但不限于访问延迟故障、无法访问故障、访问错误故障等,其中,无法访问故障和访问错误故障还可以进一步细分为因不同原因导致的无法访问故障和访问错误故障,本技术实施例对此不做具体限定。
94.示例性地,针对不同的模拟硬件故障类型,可以设置与不同的模拟硬件故障类型对应的访问结果,即得到包括不同的模拟硬件故障类型与访问结果之间的对应关系的预设对应关系。
95.基于此,计算机设备在从模拟硬件故障信息中获取到模拟硬件故障类型的情况下,便可以根据所获取到的模拟硬件故障类型和该预设对应关系,确定与该模拟硬件故障
类型对应的目标访问结果。
96.步骤502,将初始回调结果中的初始访问结果修改为目标访问结果,生成目标回调结果。
97.本实施例中,根据模拟硬件故障类型及预设对应关系,确定模拟硬件故障类型对应的目标访问结果;接着,将初始回调结果中的初始访问结果修改为目标访问结果,生成目标回调结果;其中,预设对应关系包括不同的模拟硬件故障类型与访问结果之间的对应关系。即采用本实施例的方法,在进行性能测试时,只需确定模拟硬件故障类型,计算机设备便可根据输入的模拟硬件故障类型,进行相应的故障模拟;无需对不同故障类型对应的访问结果进行研究,从而降低性能测试的要求,提高性能测试的可执行性和便捷性。
98.在一个实施例中,在该模拟硬件故障类型包括访问延时故障的情况下,该模拟硬件故障信息中还可以包括与访问延时故障对应的延时时长;基于此,如图6所示,对于上述步骤203中根据目标回调结果进行性能测试,可以包括以下步骤:
99.步骤601,基于目标回调结果,接收新的数据访问请求,响应于新的数据访问请求生成新的性能测试指令,基于新的性能测试指令调用目标硬件生成新的初始回调结果。
100.示例性地,在模拟硬件故障类型为访问延时故障的情况下,也就是说,在访问目标硬件时,需要等待一段延时时长之后才能成功访问到该目标硬件;针对该访问延时故障的性能测试,可以采用类似于内核锁中的自旋锁的方式,使得上层应用程序多次循环访问目标硬件,通过单次访问的执行时长和循环次数,便可以得到访问延时故障对应的延时时长;也即根据访问延时故障对应的延时时长和单次访问的执行时长,即可确定出上层应用程序访问目标硬件的访问循环次数。
101.那么,在进行访问延时故障的性能测试时,计算机设备在将真实的初始回调结果修改为携带了访问延时故障对应的目标访问结果的目标回调结果的情况下,此时,计算机设备可以将该目标回调结果返回至对应的上层应用程序,即告知上层应用程序此时的目标硬件暂未准备就绪,并指示上层应用程序继续向该目标硬件发送新的数据访问请求;该新的数据访问请求可以包括上述数据访问请求中所携带的信息,还可以包括除上述数据访问请求中所携带的信息之外的其他信息,例如本次访问该目标硬件的次数等,本技术实施例对此不做具体限定。
102.接着,计算机设备可以重新接收上层应用程序发送的对该目标硬件进行访问的新的数据访问请求,并响应于该新的数据访问请求生成新的性能测试指令,以及基于该新的性能测试指令调用该目标硬件生成新的初始回调结果;该过程的具体实现可以参考上述步骤202中的相关内容描述,在此不再详细赘述。
103.步骤602,判断生成新的初始回调结果的循环次数是否大于或等于预设循环次数,若否,则基于新的性能测试指令向新的初始回调结果中注入模拟硬件故障信息,生成新的目标回调结果。
104.示例性地,计算机设备可以记录上层应用对该目标硬件的访问次数,该访问次数-1即可得到生成新的初始回调结果的循环次数;也可以直接记录生成新的初始回调结果的循环次数;对于上层应用对该目标硬件的访问次数,其也可以通过上层应用程序进行记录,并携带在新的数据访问请求中。
105.在确定出生成新的初始回调结果的循环次数的情况下,可以判断该循环次数是否
大于或等于预设循环次数,如果没有达到该预设循环次数,则继续向该新的初始回调结果中注入该访问延时故障,使得上层应用程序再次重复向目标硬件发送新的数据访问请求,并循环执行故障注入操作。
106.需要说明的是,在预设循环次数为上层应用程序对目标硬件的访问次数的情况下,在根据生成新的初始回调结果的循环次数与预设循环次数进行判断时,需要在生成新的初始回调结果的循环次数的基础上加1,再与预设循环次数进行大小比对;或者,在预设循环次数减1的基础上,与该生成新的初始回调结果的循环次数进行大小比较。
107.步骤603,将新的目标回调结果作为目标回调结果进行迭代计算,直至生成新的初始回调结果的循环次数大于或等于预设循环次数为止,根据新的初始回调结果进行性能测试。
108.其中,该预设循环次数为根据延时时长所确定;如上所述,该预设循环次数可以为根据延时时长和单次访问时长进行确定的。
109.在上层应用程序多次循环访问目标硬件并达到预设循环次数的情况下,即在最后一次循环访问目标硬件的过程中,结束对新的初始回调结果进行故障注入的操作,并将该新的初始回调结果,即目标硬件的真实访问结果发送至上层应用程序,使得上层应用程序在多次循环发送数据访问请求之后成功访问到该目标硬件。
110.本实施例中,在模拟硬件故障类型包括访问延时故障,模拟硬件故障信息中还包括与访问延时故障对应的延时时长的情况下,计算机设备可以基于目标回调结果,接收新的数据访问请求,响应于新的数据访问请求生成新的性能测试指令,基于新的性能测试指令调用目标硬件生成新的初始回调结果;接着,判断生成新的初始回调结果的循环次数是否大于或等于预设循环次数,若否,则基于新的性能测试指令向新的初始回调结果中注入模拟硬件故障信息,生成新的目标回调结果;进而将新的目标回调结果作为目标回调结果进行迭代计算,直至生成新的初始回调结果的循环次数大于或等于预设循环次数为止,根据新的初始回调结果进行性能测试;预设循环次数为根据延时时长所确定。即在进行访问延时故障的性能测试时,采用类似于内核锁中的自旋锁的方式,通过对本次访问的自旋等待来达到陷入内核的目的,即在循环访问的过程中达到访问延时的故障效果;由于数据访问请求的执行循环本身在重试请求时会恢复抢占,所以采用本技术实施例提出的循环访问的方法,不会造成系统的核心处理器的线程核上的内核软狗因长时间无法被调度而引起softlockup故障,提高系统性能测试的稳定性和可靠性。
111.在以上各个实施例的性能测试方法的执行过程中,进一步地,还可以增加个性化的测试要求,例如:在目标硬件为存储设备的情况下,还可以对指定存储设备或者指定存储设备中的指定存储空间进行故障注入,如对指定盘或指定盘中的特定块进行故障注入。当然,在该目标硬件为非存储设备的情况下,也可以执行对指定硬件的故障注入。另外,在进行性能测试的过程中,也可以对上层应用程序进行个性化测试设置,设置上层应用白名单,如对于某些上层应用程序,禁止执行性能测试操作;也即对于这些上层应用程序来说,在其对任何硬件包括目标硬件进行数据访问的过程中,不执行以上的故障注入操作,使得这些上层应用程序在性能测试的过程中,也能正常访问各个硬件;也即模拟硬件故障对这些上层应用程序的数据访问不造成任何影响。
112.在一个实施例中,在性能测试指令中还可以携带测试标识信息,通过该测试标识
信息来表征是否向初始回调结果中注入模拟硬件故障信息;其中,该测试标识信息可以为基于测试要求进行判断后所得到的。那么基于此,如图7所示,上述方法还可以包括:
113.步骤701,从性能测试指令中获取测试标识信息。
114.步骤702,根据测试标识信息确定是否执行基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果的步骤。
115.示例性地,在该测试标识信息用于表征向初始回调结果中注入模拟硬件故障信息的情况下,那么根据该测试标识信息可以确定执行基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果的步骤。在该测试标识信息用于表征禁止向初始回调结果中注入模拟硬件故障信息的情况下,那么根据该测试标识信息可以确定禁止执行基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果的步骤。
116.本实施例中,在性能测试指令中还可以携带测试标识信息,且该测试标识信息用于表征是否向初始回调结果中注入模拟硬件故障信息,那么基于此,计算机设备可以从性能测试指令中获取测试标识信息;并根据测试标识信息确定是否执行基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果的步骤。即采用本实施例中的方法,能够实现对指定硬件或指定上层应用程序进行故障注入,满足个性化的性能测试需求,提高性能测试的灵活性。
117.在一个实施例中,该测试标识信息可以包括第一类测试标识信息和第二类测试标识信息,其中,第一类测试标识信息可以用于表征向初始回调结果中注入模拟硬件故障信息;第二类测试标识信息可以用于表征禁止向初始回调结果中注入模拟硬件故障信息。那么,基于此,如图8所示,上述步骤202中响应于数据访问请求生成性能测试指令,可以包括:
118.步骤801,响应于数据访问请求,获取性能测试信息;性能测试信息中包括待测试硬件信息。
119.其中,待测试硬件信息中可以包括至少一个待测试硬件的标识信息;示例性地,在待测试硬件为存储设备的情况下,该待测试硬件信息中还可以包括待测试硬件的待测试存储区域的标识信息。
120.步骤802,判断待访问目标硬件的硬件信息与待测试硬件信息是否一致。
121.示例性地,计算机设备可以从数据访问请求中提取待访问目标硬件的硬件信息,并将待访问目标硬件的硬件信息与待测试硬件信息进行对比,判断待访问目标硬件的硬件信息与待测试硬件信息是否一致,即判断待测试硬件信息中是否包括待访问目标硬件的硬件信息;如果判断待测试硬件信息中包括待访问目标硬件的硬件信息,可以确定待访问目标硬件的硬件信息与待测试硬件信息一致;如果判断待测试硬件信息中不包括待访问目标硬件的硬件信息,可以确定待访问目标硬件的硬件信息与待测试硬件信息不一致。
122.步骤803,若是,则生成第一类测试标识信息,根据第一类测试标识信息生成性能测试指令。
123.其中,第一类测试标识信息用于表征向初始回调结果中注入模拟硬件故障信息。
124.也就是说,在确定待访问目标硬件的硬件信息与待测试硬件信息一致的情况下,说明此时需要对该数据访问请求执行后续的性能测试的步骤,那么,就可以生成第一类测试标识信息,并基于该第一类测试标识信息和数据访问请求中携带的信息生成性能测试指令;基于该性能测试指令,对后续得到的初始回调结果进行模拟硬件故障的注入,即向初始
回调结果中注入模拟硬件故障信息,生成目标回调结果,并根据目标回调结果进行性能测试。
125.步骤804,若否,则生成第二类测试标识信息,根据第二类测试标识信息生成性能测试指令;第二类测试标识信息用于表征禁止向初始回调结果中注入模拟硬件故障信息。
126.在确定待访问目标硬件的硬件信息与待测试硬件信息不一致的情况下,说明此时不需要对该数据访问请求执行后续的性能测试的步骤,那么,这种情况下就可以生成第二类测试标识信息,并基于该第二类测试标识信息和数据访问请求中携带的信息生成性能测试指令;基于该性能测试指令,对后续得到的初始回调结果不进行模拟硬件故障的注入,直接将该初始回调结果返回至对应的上层应用程序。
127.本实施例中,测试标识信息可以包括第一类测试标识信息和第二类测试标识信息,其中,通过第一类测试标识信息来表征向初始回调结果中注入模拟硬件故障信息,通过第二类测试标识信息来表征禁止向初始回调结果中注入模拟硬件故障信息;基于此,在响应于数据访问请求生成性能测试指令时,可以通过响应于数据访问请求,获取性能测试信息;该性能测试信息中包括待测试硬件信息;接着,判断待访问目标硬件的硬件信息与待测试硬件信息是否一致;若是,则生成第一类测试标识信息,根据第一类测试标识信息生成性能测试指令;若否,则生成第二类测试标识信息,根据第二类测试标识信息生成性能测试指令;即本实施例中,计算机设备在接收到数据访问请求的情况下,对该数据访问请求所访问的目标硬件进行判断,若该目标硬件属于待测试硬件,则生成用于表征向初始回调结果中注入模拟硬件故障信息的性能测试指令;若该目标硬件不属于待测试硬件,则生成用于表征禁止向初始回调结果中注入模拟硬件故障信息的性能测试指令;从而实现对指定硬件的性能测试,增加性能测试的灵活性和多样性。
128.在一个实施例中,在上层应用程序所发送的数据访问请求中还可以携带目标测试应用信息,该目标测试应用信息可以包括该上层应用程序的标识信息;相应地,在该性能测试信息中还可以包括待测试应用信息,该待测试应用信息中可以包括至少一个待测试应用的标识信息。基于此,在上述实施例的基础上,如图9所示,上述步骤803中生成第一类测试标识信息,还可以包括:
129.步骤901,判断目标测试应用信息与待测试应用信息是否一致。
130.示例性地,可以判断该待测试应用信息中是否包括目标测试应用信息,在待测试应用信息中包括目标测试应用信息的情况下,可以确定目标测试应用信息与待测试应用信息一致;在待测试应用信息中不包括目标测试应用信息的情况下,可以确定目标测试应用信息与待测试应用信息不一致。
131.步骤902,若目标测试应用信息与待测试应用信息一致,则生成第一类测试标识信息。
132.也就是说,本实施例中,在确定待访问目标硬件为待测试硬件,且,目标测试应用为待测试应用的情况下,则对基于该数据访问请求对目标硬件执行数据访问所生成的初始访问结果进行模拟硬件故障信息的注入,从而在注入模拟硬件故障的情况下进行性能测试。
133.相反地,在确定待访问目标硬件为待测试硬件,但目标测试应用不是待测试应用,或者,在确定待访问目标硬件不是待测试硬件,但目标测试应用为待测试应用,又或者,在
确定待访问目标硬件不是待测试硬件,且目标测试应用不是待测试应用,这三种情况下,则生成用于表征禁止向初始回调结果中注入模拟硬件故障信息的第二类测试标识信息,并基于该第二类测试标识信息生成相应的性能测试指令。
134.需要说明的是,以上对于待测试硬件和待测试应用的判断,不限定两者的判断顺序;另外,在性能测试信息中可以包括待测试硬件信息和待测试应用信息中的至少一种,在实际性能测试过程中,可以根据实际测试需求进行自适应设置。
135.本实施例中,在判断待访问目标硬件的硬件信息与待测试硬件信息一致的情况下,还可以进一步判断目标测试应用信息与待测试应用信息是否一致;若目标测试应用信息与待测试应用信息一致,则生成第一类测试标识信息。从而实现针对特定硬件及特定应用程序的性能测试,提高性能测试的灵活性和多样性;另外,通过在性能测试时设置待测试应用信息,还可以避免对非待测试应用程序的正常数据访问流程造成不利影响,确保非待测试应用程序的正常数据访问,以及确保非待测试应用程序的数据访问有效性。
136.在一个实施例中,针对上述各个实施例中的性能测试方法的步骤,可以采用systemtap测试工具来实现,例如:可以通过systemtap测试工具在内核中注册钩子函数,通过钩子函数来执行以上性能测试方法的步骤;如:通过钩子函数来执行响应于数据访问请求生成性能测试指令,基于性能测试指令调用硬件信息对应的目标硬件生成初始回调结果;基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果的相关步骤。
137.另外,在目标硬件为存储设备,且该存储设备是基于scsi协议进行通信的情况下,由于linux scsi子系统发送和接收的任何scsi命令都是由底层物理设备对应的驱动程序完成的,例如可以通过usb某个子设备驱动或者通过ufs驱动去实现scsi命令传输。那么,上层应用程序在访问目标存储设备时,可以通过将针对目标存储设备的数据访问请求发送至scsi子系统,并通过scsi子系统将该数据访问请求转换为scsi命令,进而将scsi命令发送至目标存储设备对应的驱动程序,以调用该目标存储设备,实现对目标存储设备的数据访问。
138.参考图10所示,其示出了一种通过scsi中间层即scsi子系统来实现对底层存储设备的数据读写访问的流程结构示意图。其中,scsi中间层所接收到的数据读写请求(即io)可以包括两种,一种为从scsi中间层下发的io,如扫盘io,可以称之为passthrough io,如从图10中的scsi passthrough中下发的sg命令;另一种为从通用块层block下发的io称为普通io,通用块层block下发的io为上层应用程序发出的数据访问请求,如从图10中的文件系统、raw设备或者底层块设备访问层下发的bio请求。
139.针对两种不同方式所接收到的数据访问请求,scsi中间层均对该数据访问请求进行命令转换,生成scsi命令;并发送至底层存储设备进行动作处理,生成第一次回调结果,即上述初始回调结果。需要说明的是,在进行性能测试时,这里的scsi命令可以作为上述性能测试指令,且在该scsi命令中可以包括模拟硬件故障信息和测试标识信息;相应地,在该第一次回调结果中同样也包括模拟硬件故障信息和测试标识信息。
140.接着,针对该第一次回调结果,根据该第一次回调结果中的测试标识信息,判断是否对该第一次回调结果进行修改,若是,则向第一次回调结果中注入模拟硬件故障信息,生成第二次回调结果;并将该第二次回调结果进行返回。
141.示例性地,在该scsi命令中还可以包括命令描述块(command descriptor block,cdb)、感测数据缓存(sense buffer)、io超时时间等与scsi相关的信息和scsi子系统处理命令需要的一些其他信息,如回调函数等。其中,命令描述块中可以包括目标存储设备的标识信息、待访问数据信息等;感测数据缓存中可以包括目标存储设备对scsi命令的执行结果,即数据访问结果等;io超时时间可以用于表示目标存储设备对scsi命令的响应时长,若目标存储设备对scsi命令的响应时长超过该io超时时间后,scsi中间层还未接收到目标存储设备返回的回调结果,则可以确定该目标存储设备出现了故障。
142.另外,对于感测数据缓存,其中可以包括用于表示目标存储设备对scsi命令的执行结果的标识信息,例如:可以通过至少一个标识参数来组成该标识信息,如通过四个标识参数(statuscode,key,asc,ascq)的不同数据组合来表示不同的执行结果。在进行性能测试时,可以通过systemtap测试工具修改内核执行scsi命令时的第一次回调结果来达到模拟硬件故障信息的注入。例如:将标识信息(statuscode,key,asc,ascq)中的各个标识参数的参数值修改为(0x02,0x02,0x04,0x01),用于表示目标存储设备未就绪,以模拟访问延时故障;此时需要重新发送数据访问请求,进而重新向目标存储设备发送scsi命令,从而延迟返回给上层应用的io调用者,模拟硬件层产生了一定的访问时延。
143.示例性地,在scsi命令中还可以包括scsi命令的重复次数,即延时访问时数据访问的循环次数,通过对该循环次数的判断来达到循环指定次数后就正常返回的效果;一般单条scsi命令的执行耗时都在ms级,通过对scsi命令的简单循环执行模仿cpu层面的空指令循环,来达到注入特定时延的目的。
144.其行为类似内核锁中的自旋锁,通过对本次io的自旋等待来达到陷入内核的目的,而因为scsi命令的执行循环本身在重试命令时会恢复抢占,所以不会造成该cpu线程核上的内核软狗因长时间无法被调度而引起softlockup故障。
145.本实施例中的性能测试方法,通过类似自旋锁的模式将scsi命令按照设定次数在内核驱动层进行循环等待,通过计算系统整体压力和单条scsi指令执行时间来设置不同循环次数达到模拟io时延的效果,精度可达到ms级,并支持10s以上的大时延。
146.再者,采用本实施例中的性能测试方法,还能实现对指定盘进行读写延时注入;对指定盘的特定块进行读写延时注入;对指定盘进行读写硬件故障注入;对指定盘的特定块进行读写硬件故障注入;对指定盘的特定块进行指定次数(即延时时长不同)的延时注入;对指定盘的特定块进行fix(修复)注入;白名单(即待测试应用程序)设定等功能。
147.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
148.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的性能测试方法的性能测试装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个性能测试装置实施例中的具体限定可以参见上文中
对于性能测试方法的限定,在此不再赘述。
149.在一个实施例中,如图11所示,提供了一种性能测试装置,包括:接收模块1101、生成模块1102和测试模块1103,其中:
150.接收模块1101,用于接收数据访问请求;数据访问请求中携带了待访问目标硬件的硬件信息。
151.生成模块1102,用于响应于数据访问请求生成性能测试指令,基于性能测试指令调用硬件信息对应的目标硬件生成初始回调结果;性能测试指令中携带了目标硬件的模拟硬件故障信息。
152.测试模块1103,用于基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果,根据目标回调结果进行性能测试。
153.在其中一个实施例中,测试模块1103包括获取单元和修改单元;其中,获取单元,用于从初始回调结果中,获取基于数据访问请求对目标硬件执行数据访问所生成的初始访问结果;修改单元,用于基于性能测试指令中的模拟硬件故障信息,对初始访问结果进行修改,生成目标回调结果。
154.在其中一个实施例中,模拟硬件故障信息中包括模拟硬件故障类型,修改单元,用于根据模拟硬件故障类型及预设对应关系,确定模拟硬件故障类型对应的目标访问结果;将初始回调结果中的初始访问结果修改为目标访问结果,生成目标回调结果;其中,预设对应关系包括不同的模拟硬件故障类型与访问结果之间的对应关系。
155.在其中一个实施例中,模拟硬件故障类型包括访问延时故障,模拟硬件故障信息中还包括与访问延时故障对应的延时时长;测试模块1103还包括测试单元;该测试单元,用于基于目标回调结果,接收新的数据访问请求,响应于新的数据访问请求生成新的性能测试指令,基于新的性能测试指令调用目标硬件生成新的初始回调结果;判断生成新的初始回调结果的循环次数是否大于或等于预设循环次数,若否,则基于新的性能测试指令向新的初始回调结果中注入模拟硬件故障信息,生成新的目标回调结果;将新的目标回调结果作为目标回调结果进行迭代计算,直至生成新的初始回调结果的循环次数大于或等于预设循环次数为止,根据新的初始回调结果进行性能测试;预设循环次数为根据延时时长所确定。
156.在其中一个实施例中,若性能测试指令中携带了测试标识信息,且测试标识信息用于表征是否向初始回调结果中注入模拟硬件故障信息,则该装置还包括:获取模块和确定模块;其中,获取模块,用于从性能测试指令中获取测试标识信息;确定模块,用于根据测试标识信息确定是否执行基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果的步骤。
157.在其中一个实施例中,测试标识信息包括第一类测试标识信息和第二类测试标识信息,上述生成模块1102,包括获取单元、判断单元和生成单元;其中,获取单元,用于响应于数据访问请求,获取性能测试信息;性能测试信息中包括待测试硬件信息;判断单元,用于判断待访问目标硬件的硬件信息与待测试硬件信息是否一致;生成单元,用于在待访问目标硬件的硬件信息与待测试硬件信息一致的情况下,生成第一类测试标识信息,并根据第一类测试标识信息生成性能测试指令;第一类测试标识信息用于表征向初始回调结果中注入模拟硬件故障信息;该生成单元,还用于在待访问目标硬件的硬件信息与待测试硬件
信息不一致的情况下,生成第二类测试标识信息,并根据第二类测试标识信息生成性能测试指令;第二类测试标识信息用于表征禁止向初始回调结果中注入模拟硬件故障信息。
158.其中一个实施例中,数据访问请求中还携带了目标测试应用信息,性能测试信息还包括待测试应用信息;生成单元,用于判断目标测试应用信息与待测试应用信息是否一致;若目标测试应用信息与待测试应用信息一致,则生成第一类测试标识信息。
159.上述性能测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
160.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图12所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、移动蜂窝网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种性能测试方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
161.本领域技术人员可以理解,图12中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
162.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述任一实施例中的性能测试方法的步骤。
163.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例中的性能测试方法的步骤。
164.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一实施例中的性能测试方法的步骤。
165.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
166.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,
ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
167.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
168.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。

技术特征:
1.一种性能测试方法,其特征在于,所述方法包括:接收数据访问请求;所述数据访问请求中携带了待访问目标硬件的硬件信息;响应于所述数据访问请求生成性能测试指令,基于所述性能测试指令调用所述硬件信息对应的所述目标硬件生成初始回调结果;所述性能测试指令中携带了所述目标硬件的模拟硬件故障信息;基于所述性能测试指令向所述初始回调结果中注入所述模拟硬件故障信息,生成目标回调结果,根据所述目标回调结果进行性能测试。2.根据权利要求1所述的方法,其特征在于,所述基于所述性能测试指令向所述初始回调结果中注入所述模拟硬件故障信息,生成目标回调结果,包括:从所述初始回调结果中,获取基于所述数据访问请求对所述目标硬件执行数据访问所生成的初始访问结果;基于所述性能测试指令中的所述模拟硬件故障信息,对所述初始访问结果进行修改,生成目标回调结果。3.根据权利要求2所述的方法,其特征在于,所述模拟硬件故障信息中包括模拟硬件故障类型,所述基于所述性能测试指令中的所述模拟硬件故障信息,对所述初始访问结果进行修改,生成目标回调结果,包括:根据所述模拟硬件故障类型及预设对应关系,确定所述模拟硬件故障类型对应的目标访问结果;所述预设对应关系包括不同的模拟硬件故障类型与访问结果之间的对应关系;将所述初始回调结果中的所述初始访问结果修改为所述目标访问结果,生成所述目标回调结果。4.根据权利要求3所述的方法,其特征在于,所述模拟硬件故障类型包括访问延时故障,所述模拟硬件故障信息中还包括与所述访问延时故障对应的延时时长;所述根据所述目标回调结果进行性能测试,包括:基于所述目标回调结果,接收新的数据访问请求,响应于所述新的数据访问请求生成新的性能测试指令,基于所述新的性能测试指令调用所述目标硬件生成新的初始回调结果;判断生成所述新的初始回调结果的循环次数是否大于或等于预设循环次数,若否,则基于所述新的性能测试指令向所述新的初始回调结果中注入所述模拟硬件故障信息,生成新的目标回调结果;将所述新的目标回调结果作为所述目标回调结果进行迭代计算,直至生成所述新的初始回调结果的循环次数大于或等于所述预设循环次数为止,根据新的初始回调结果进行性能测试;所述预设循环次数为根据所述延时时长所确定。5.根据权利要求1至4中任一项所述的方法,其特征在于,若所述性能测试指令中携带了测试标识信息,且所述测试标识信息用于表征是否向所述初始回调结果中注入所述模拟硬件故障信息,则所述方法还包括:从所述性能测试指令中获取所述测试标识信息;根据所述测试标识信息确定是否执行基于所述性能测试指令向所述初始回调结果中注入所述模拟硬件故障信息,生成目标回调结果的步骤。6.根据权利要求5所述的方法,其特征在于,所述测试标识信息包括第一类测试标识信
息和第二类测试标识信息,所述响应于所述数据访问请求生成性能测试指令,包括:响应于所述数据访问请求,获取性能测试信息;所述性能测试信息中包括待测试硬件信息;判断所述待访问目标硬件的硬件信息与所述待测试硬件信息是否一致;若是,则生成所述第一类测试标识信息,根据所述第一类测试标识信息生成所述性能测试指令;所述第一类测试标识信息用于表征向所述初始回调结果中注入所述模拟硬件故障信息;若否,则生成所述第二类测试标识信息,根据所述第二类测试标识信息生成所述性能测试指令;所述第二类测试标识信息用于表征禁止向所述初始回调结果中注入所述模拟硬件故障信息。7.根据权利要求6所述的方法,其特征在于,所述数据访问请求中还携带了目标测试应用信息,所述性能测试信息还包括待测试应用信息;所述生成所述第一类测试标识信息,包括:判断所述目标测试应用信息与所述待测试应用信息是否一致;若所述目标测试应用信息与所述待测试应用信息一致,则生成所述第一类测试标识信息。8.一种性能测试装置,其特征在于,所述装置包括:接收模块,用于接收数据访问请求;所述数据访问请求中携带了待访问目标硬件的硬件信息;生成模块,用于响应于所述数据访问请求生成性能测试指令,基于所述性能测试指令调用所述硬件信息对应的所述目标硬件生成初始回调结果;所述性能测试指令中携带了所述目标硬件的模拟硬件故障信息;测试模块,用于基于所述性能测试指令向所述初始回调结果中注入所述模拟硬件故障信息,生成目标回调结果,根据所述目标回调结果进行性能测试。9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。

技术总结
本申请涉及一种性能测试方法、装置、计算机设备和可读存储介质。该方法包括:接收数据访问请求;数据访问请求中携带了待访问目标硬件的硬件信息;响应于数据访问请求生成性能测试指令,基于性能测试指令调用硬件信息对应的目标硬件生成初始回调结果;性能测试指令中携带了目标硬件的模拟硬件故障信息;基于性能测试指令向初始回调结果中注入模拟硬件故障信息,生成目标回调结果,根据目标回调结果进行性能测试。即采用本申请实施例的方法,即使SCSI子系统中没有定时器,也能通过向初始回调结果中注入模拟硬件故障信息的方式来实现硬件故障的注入,从而实现模拟硬件故障,实现对分布式数据存储系统的性能测试,提高性能测试的可实施性和可靠性。的可实施性和可靠性。的可实施性和可靠性。


技术研发人员:熊元元 陈建春 杨鹏 郭兆斌 马照云
受保护的技术使用者:曙光信息产业股份有限公司
技术研发日:2023.04.27
技术公布日:2023/8/9
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐