本发明涉及计算机存储测试技术,尤其涉及一种基于linux的nvme协议测试分析方法、装置、设备与存储介质。
背景技术:
1、市场对于nvme(non-volatile memory express)这种高速的存储协议的存储产品需求越来越大。快速的对nvme存储产品进行开发测试能提高nvme存储产品开发效率。
2、目前nvme协议分析主要通过两种方式。第一种是硬件的方式,通过购买外置的pcie/nvme协议分析仪,放置在主机和设备之间,抓取主机和设备之间的pcie总线信号来对其中的nvme协议命令进行测试分析;第二种是软件的方式,即抓取主机发送给设备的nvme协议命令并进行测试分析。现有的nvme协议的测试分析过程仍然存在测试分析成本高、通用性差等问题。
技术实现思路
1、本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种基于linux的nvme协议测试分析方法、装置、设备与存储介质。
2、本发明解决其技术问题所采用的技术方案是:一种基于linux的nvme协议测试分析方法,包括以下步骤:
3、1)设置注错配置文件和分析配置文件;
4、其中,分析配置文件用于配置是否开启nvme协议测试分析功能;注错配置文件用于设置注错类型和注错数据指导nvme协议注错;
5、2)通过测试软件发送nvme协议命令给目标存储设备,使用改进的nvme驱动模块进行nvme协议测试分析;
6、所述改进的nvme驱动模块基于nvme标准驱动模块修改获得,包括:
7、nvme标准驱动模块,用于标准nvme协议命令处理,向被测nvme目标存储设备发送命令和数据,并回收命令的状态;
8、nvme协议监控模块,用于监控和记录nvme标准驱动模块中标准nvme协议命令处理流程的所有信息;
9、nvme协议分析模块,用于实时汇总nvme协议监控模块获取的信息,然后按照nvme协议手册,将nvme协议命令返回时的数据信息进行解析,通过虚拟文件系统技术从内核输出至nvme协议分析结果文件中;
10、nvme协议注错模块,用于读取注错配置文件,根据注错配置文件中指定的注错类型、注错数据以及以及nvme协议分析模块获取的分析结果建立注错集,完成内核中的nvme协议注错;
11、nvme协议显示模块,用于实时解析nvme协议分析结果文件,将其内容显示成ui界面展示给用户,同时为用户提供nvme协议中指定的数据搜索。
12、按上述方案,所述步骤2)nvme协议分析模块中,将nvme协议命令返回时的数据信息进行解析后,对实时的nvme命令以及协议解析结果数据进行压缩后输出;压缩算法采用sequential algorithms(sa)算法,sa算法参数通过预测数据生成趋势的方式修改获得。
13、按上述方案,所述步骤2)nvme协议分析模块中,nvme协议命令返回时的数据包括opcode、dword10至15,sqid, cqid, sq door bell、cq door bell,传输数据,对应的内核时间、命令处理结果和异常错误信息。
14、按上述方案,所述步骤3)nvme协议分析模块中,建立的注错集包括命令注错集、sq注错集、sq door bell注错集、传输数据注错集、cq注错集和cq door bell注错集。
15、按上述方案,所述步骤2)中目标存储设备为物理nvme设备或仿真nvme设备。
16、按上述方案,所述nvme标准驱动模块为linux操作系统原生nvme驱动模块。
17、按上述方案,所述步骤2)nvme协议监控模块中信息监控和记录包括:
18、在内核接收nvme协议命令时,记录nvme命令接收时和返回时的opcode、dword10至15和传输数据信息和内核时间;
19、在内核分配驱动层队列资源时,记录pcie配置空间寄存器、bar寄存器,cqid、sqid、door bell信息和内核时间;
20、在内核创建完一个sq后,记录sq信息;
21、在内核更新了sq door bell寄存器后,记录更新后的sq door bell;
22、在内核完成dma数据传输后,记录传输的数据;
23、在内核读取cq并处理后,读取更新后的cq信息;
24、在内核更新完cq door bell寄存器,记录更新后的cq door bell寄存器;
25、同时记录上述内核处理每一步的内核时间戳。
26、一种基于linux的nvme协议测试分析装置,包括:
27、文件配置模块,用于设置注错配置文件和分析配置文件;
28、其中,分析配置文件用于配置是否开启nvme协议测试分析功能;注错配置文件用于设置注错类型和注错数据指导nvme协议注错;
29、nvme标准驱动模块,用于接收测试软件发送的nvme协议命令并进行标准nvme协议命令处理,向被测nvme目标存储设备发送命令和数据,并接收命令的状态;
30、nvme协议监控模块,用于监控和记录nvme标准驱动模块中标准nvme协议命令处理流程的相关信息;
31、nvme协议分析模块,用于实时汇总nvme协议监控模块获取的信息,然后按照nvme协议手册,将nvme协议命令接收时的数据信息解析出来,按照nvme协议的处理流程以及用于易于观看的数据格式通过虚拟文件系统技术从内核输出至nvme协议分析结果文件中;
32、nvme协议命令接收时的数据包括opcode、dword10至15,sqid, cqid, sq doorbell、cq door bell,传输数据,对应的内核时间、命令处理结果和异常错误信息;
33、nvme协议注错模块,用于读取注错配置文件,根据注错配置文件中指定的注错类型、注错数据以及以及nvme协议分析模块获取的分析结果建立注错集,完成内核中的nvme协议注错;注错集包括命令注错集、sq注错集、sq door bell注错集、传输数据注错集、cq注错集和cq door bell注错集;
34、nvme协议显示模块,用于实时解析nvme协议分析结果文件,将其内容显示成ui界面展示给用户,同时为用户提供nvme协议中指定的数据搜索,包括opcode,sq, cq,pcie配置寄存器,door bell、命令处理结果。
35、按上述方案,所述nvme协议监控模块中信息监控和记录包括:
36、在内核接收nvme协议命令时,记录nvme命令发送时和接收时的opcode、dword10至15和传输数据信息和内核时间;
37、在内核分配驱动层队列资源时,记录pcie配置空间寄存器、bar寄存器,cqid、sqid、door bell信息和内核时间;
38、在内核创建完一个sq后,记录sq信息;
39、在内核更新了sq door bell寄存器后,记录更新后的sq door bell;
40、在内核完成dma数据传输后,记录传输的数据;
41、在内核读取cq并处理后,读取更新后的cq信息;
42、在内核更新完cq door bell寄存器,记录更新后的cq door bell寄存器;
43、同时记录上述内核处理每一步的内核时间戳。
44、按上述方案,所述nvme协议分析模块中,将nvme协议命令返回时的数据信息进行解析后,对实时的nvme命令以及协议解析结果数据进行压缩后输出;压缩算法采用sequential algorithms(sa)算法,sa算法参数通过预测数据生成趋势的方式修改获得。
45、按上述方案,所述nvme协议分析模块中,nvme协议命令返回时的数据包括opcode、dword10至15,sqid, cqid, sq door bell、cq door bell,传输数据,对应的内核时间、命令处理结果和异常错误信息。
46、按上述方案,所述nvme协议分析模块中,建立的注错集包括命令注错集、sq注错集、sq door bell注错集、传输数据注错集、cq注错集和cq door bell注错集。
47、按上述方案,所述目标存储设备为物理nvme设备或仿真nvme设备。
48、按上述方案,所述nvme标准驱动模块采用linux操作系统原生nvme驱动模块。
49、本发明产生的有益效果是:
50、1、本发明方法基于linux原有的nvme驱动进行修改和nvme协议分析,可以分析目前市面上已有的通用测试软件以及自定义测试软件所发送的nvme协议命令,复用性强,可极大减少测试代码开发量;
51、2、本发明测试方法适用于目标设备是物理nvme设备或仿真nvme设备,通用性极强;同时进行测试分析时无需搭建任何其他测试环境,使用方便;
52、3、本发明改进的nvme驱动模块可监控分析内核对nvme协议处理的标准流程,快速定位内核处理nvme协议时异常的详细情况;同时,可在内核处理nvme协议时进行注错,来测试分析nvme设备对nvme协议的异常处理是否完善。
1.一种基于linux的nvme协议测试分析方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于linux的nvme协议测试分析方法,其特征在于,所述nvme协议分析模块中,将nvme协议命令返回时的数据信息进行解析后,对实时的nvme命令以及协议解析结果数据进行压缩后输出;压缩算法采用sequential algorithms算法。
3.根据权利要求1所述的基于linux的nvme协议测试分析方法,其特征在于,所述nvme协议分析模块中,nvme协议命令返回时的数据包括opcode、dword10至15,sqid, cqid, sqdoor bell、cq door bell,传输数据,对应的内核时间、命令处理结果和异常错误信息。
4.根据权利要求3所述的基于linux的nvme协议测试分析方法,其特征在于,所述步骤3)nvme协议分析模块中,建立的注错集包括命令注错集、sq注错集、sq door bell注错集、传输数据注错集、cq注错集和cq door bell注错集。
5.根据权利要求1所述的基于linux的nvme协议测试分析方法,其特征在于,所述步骤2)nvme协议监控模块中信息监控和记录包括:
6.根据权利要求1所述的基于linux的nvme协议测试分析方法,其特征在于,所述步骤2)中nvme标准驱动模块为linux操作系统原生nvme驱动模块。
7.一种基于linux的nvme协议测试分析装置,其特征在于,包括:
8.根据权利要求7所述的基于linux的nvme协议测试分析装置,其特征在于,所述nvme协议监控模块中,信息监控和记录包括:
9.一种电子设备,其特征在于,
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述的方法。