公开/公告号CN114780311A
专利类型发明专利
公开/公告日2022-07-22
原文格式PDF
申请/专利权人 深圳忆联信息系统有限公司;
申请/专利号CN202210363304.9
申请日2022-04-07
分类号G06F11/22;
代理机构深圳市精英专利事务所;
代理人丁宇龙
地址 518067 广东省深圳市南山区蛇口街道蛇口后海大道东角头厂房D24/F-02
入库时间 2023-06-19 16:04:54
法律状态公告日
法律状态信息
法律状态
2022-07-22
公开
发明专利申请公布
技术领域
本发明涉及固态硬盘技术领域,特别是涉及一种基于Linux系统的D3hot状态进退测试方法、装置、计算机设备和存储介质。
背景技术
笔记本电脑都非常注重续航能力,提高笔记本电脑的续航能力的主要途径是在进入睡眠模式下尽可能的降低器件各自的功耗,作为三大件之一的SSD,降低SSD的功耗对提高续航能力至关重要。
其中,“D3hot”是PCIe协议定义的一种设备电源状态,主要是PCIe设备为了节能所使用的一种电源状态。系统可以通过对PCIe NVMe SSD设置对应的配置空间里的功耗状态寄存器的值,让SSD进入D3hot的状态。笔记本电脑进入睡眠模式后让SSD降低功耗的方法有多种,有的会让SSD进入D3hot的模式来降低功耗。
目前,测试SSD进入和退出D3hot的方法一:1、先确认所测试用的笔记本电脑进入睡眠模式后SSD是进入D3hot的模式;2、确认平台后,安装好操作系统,在操作系统设置进入睡眠模式;3、进入睡眠模式后再唤醒笔记本电脑;4、唤醒后拷贝文件到SSD;5、最后观察是否发生操作系统异常,如蓝屏、程序卡住、系统报错等现象。方法二:购买专门的测试工具来做SSD进入和退出D3hot的测试。
上述的方法有如下不足:方法一,挑选符合条件的笔记本电脑困难,由于所测试用的笔记本电脑进入睡眠模式后SSD是否会进入D3hot,这个信息一般是不会提供给用户,所以通常是需要借助PCIe协议分析仪器抓取进入睡眠模式时主机发送给SSD的数据包才能确认。方法二,增加了测试的成本。
发明内容
基于此,有必要针对上述技术问题,提供一种可以实现提高SSD读性能的的基于Linux系统的D3hot状态进退测试方法、装置、计算机设备和存储介质。
一种基于Linux系统的D3hot状态进退测试方法,所述方法包括:
获取基于Linux系统的D3hot状态进退测试请求并运行测试脚本;
通过lspci工具查看SSD对应的Bus:Device:Function地址;
通过setpci工具设置SSD配置空间里功耗状态寄存器,以使所述SSD进入D3hot状态;
通过dd工具对SSD进行读写操作,判断读写操作是否失败;
若读写操作失败,则进一步判断SSD是否支持退出D3hot状态不用重新初始化;
如果SSD支持退出D3hot状态不用重新初始化,则使用setpci工具设置SSD配置空间里功耗状态寄存器,以使所述SSD退出D3hot状态。
在其中一个实施例中,在所述若读写操作失败,则进一步判断SSD是否支持退出D3hot状态不用重新初始化步骤之后还包括:
如果SSD不支持退出D3hot状态不用重新初始化,则使用nvme-cli工具对SSD重新初始化,以使所述SSD退出D3hot状态。
在其中一个实施例中,在所述如果SSD不支持退出D3hot状态不用重新初始化,则使用nvme-cli工具对SSD重新初始化,以使所述SSD退出D3hot状态的步骤之后还包括:
通过dd工具再次对所述SSD进行读写操作,判断读写操作是否成功;
若读写操作成功则测试通过,若读写操作失败则测试失败。
在其中一个实施例中,在所述通过dd工具对SSD进行读写操作,判断读写操作是否失败的步骤之后还包括:
若读写操作没有失败则测试失败。
一种基于Linux系统的D3hot状态进退测试装置,所述基于Linux系统的D3hot状态进退测试装置包括:
获取模块,所述获取模块用于获取基于Linux系统的D3hot状态进退测试请求并运行测试脚本;
查看模块,所述查看模块用于通过lspci工具查看SSD对应的Bus:Device:Function地址;
第一设置模块,所述第一设置模块用于通过setpci工具设置SSD配置空间里功耗状态寄存器,以使所述SSD进入D3hot状态;
第一判断模块,所述第一判断模块用于通过dd工具对SSD进行读写操作,判断读写操作是否失败;
第二判断模块,所述第二判断模块用于若读写操作失败,则进一步判断SSD是否支持退出D3hot状态不用重新初始化;
第二设置模块,所述第二设置模块用于如果SSD支持退出D3hot状态不用重新初始化,则使用setpci工具设置SSD配置空间里功耗状态寄存器,以使所述SSD退出D3hot状态。
在其中一个实施例中,所述装置还包括第三设置模块,所述第三设置模块用于:
如果SSD不支持退出D3hot状态不用重新初始化,则使用nvme-cli工具对SSD重新初始化,以使所述SSD退出D3hot状态。
在其中一个实施例中,所述装置还包括第三判断模块,所述第三判断模块用于:
通过dd工具再次对所述SSD进行读写操作,判断读写操作是否成功;
若读写操作成功则测试通过,若读写操作失败则测试失败。
在其中一个实施例中,所述第一判断模块还用于:
若读写操作没有失败则测试失败。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
上述基于Linux系统的D3hot状态进退测试方法、装置、计算机设备和存储介质,其中所用到的lspci、setpci、dd工具一般是Linux系统自带,因此不需安装,此外,nvme-cli工具是开源的工具,安装便利也无需费用。整个测试流程可通过编写脚本实现自动化测试,可有效地提高测试效率,且节省了购买专门的测试工具的费用,节省了测试成本。
附图说明
图1为一个实施例中基于Linux系统的D3hot状态进退测试方法的流程示意图;
图2为另一个实施例中基于Linux系统的D3hot状态进退测试方法的流程示意图;
图3为再一个实施例中基于Linux系统的D3hot状态进退测试方法的流程示意图;
图4为一个实施例中基于Linux系统的D3hot状态进退测试装置的结构框图;
图5为另一个实施例中基于Linux系统的D3hot状态进退测试装置的结构框图;
图6为再一个实施例中基于Linux系统的D3hot状态进退测试装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
目前,测试SSD进入和退出D3hot的方法一:1、先确认所测试用的笔记本电脑进入睡眠模式后SSD是进入D3hot的模式;2、确认平台后,安装好操作系统,在操作系统设置进入睡眠模式;3、进入睡眠模式后再唤醒笔记本电脑;4、唤醒后拷贝文件到SSD;5、最后观察是否发生操作系统异常,如蓝屏、程序卡住、系统报错等现象。方法二:购买专门的测试工具来做SSD进入和退出D3hot的测试。上述的方法有如下不足:方法一,挑选符合条件的笔记本电脑困难,由于所测试用的笔记本电脑进入睡眠模式后SSD是否会进入D3hot,这个信息一般是不会提供给用户,所以通常是需要借助PCIe协议分析仪器抓取进入睡眠模式时主机发送给SSD的数据包才能确认。方法二,增加了测试的成本。
基于此,本发明提供了一种基于Linux系统的D3hot状态进退测试方法,该方法基于Linux操作系统下使用lspci、setpci、dd和nvme-cli工具测试SSD进入和退出D3hot,适用于验证支持D3hot的SSD,该方法所用到的lspci、setpci、dd工具一般是Linux系统自带,不需安装,nvme-cli工具是开源的工具,安装便利也无需费用。整个测试流程可通过编写脚本实现自动化测试,提高了测试效率,且节省了购买专门的测试工具的费用,节省了成本。
在一个实施例中,如图1所示,提供了一种基于Linux系统的D3hot状态进退测试方法,该方法包括:
步骤102,获取基于Linux系统的D3hot状态进退测试请求并运行测试脚本;
步骤104,通过lspci工具查看SSD对应的Bus:Device:Function地址;
步骤106,通过setpci工具设置SSD配置空间里功耗状态寄存器,以使SSD进入D3hot状态;
步骤108,通过dd工具对SSD进行读写操作,判断读写操作是否失败;
步骤110,若读写操作失败,则进一步判断SSD是否支持退出D3hot状态不用重新初始化;
步骤112,如果SSD支持退出D3hot状态不用重新初始化,则使用setpci工具设置SSD配置空间里功耗状态寄存器,以使SSD退出D3hot状态。
在本实施例中,提供了一种基于Linux系统的D3hot状态进退测试方法,该方法可以通过预先写好的Shell测试脚本在Linux环境下自动执行,其具体的实现过程如下:
首先,获取基于Linux系统的D3hot状态进退测试请求并运行测试脚本。然后,通过lspci工具查看SSD对应的Bus:Device:Function地址;通过setpci工具设置SSD配置空间里功耗状态寄存器,以使SSD进入D3hot状态。
接着,通过dd工具对SSD进行读写操作,判断读写操作是否失败。这里测试的预期是读写操作失败,因此,此时若读写操作没有失败则测试失败。
此时,若读写操作失败,则进一步判断SSD是否支持退出D3hot状态不用重新初始化。这里同样可以通过lspci工具查看SSD是否支持退出D3hot状态不用重新初始化。
如果SSD支持退出D3hot状态不用重新初始化,则使用setpci工具设置SSD配置空间里功耗状态寄存器,以使SSD退出D3hot状态。
在一个实施例中,在步骤110之后还包括:如果SSD不支持退出D3hot状态不用重新初始化,则使用nvme-cli工具对SSD重新初始化,以使SSD退出D3hot状态。
在上述实施例中,其中所用到的lspci、setpci、dd工具一般是Linux系统自带,因此不需安装,此外,nvme-cli工具是开源的工具,安装便利也无需费用。整个测试流程可通过编写脚本实现自动化测试,可有效地提高测试效率,且节省了购买专门的测试工具的费用,节省了测试成本。
在一个实施例中,如图3所示,提供了一种基于Linux系统的D3hot状态进退测试方法,该方法还包括:
步骤202,通过dd工具再次对SSD进行读写操作,判断读写操作是否成功;
步骤204,若读写操作成功则测试通过,若读写操作失败则测试失败。
具体地,可参考图3所示的测试脚本的执行流程图,具体的测试环境如下:硬件需求:待测计算机为华硕Z590主板的台式计算机,对于待测计算机,本专利所述方法需要使用台式计算机,而具体型号并不做强制要求。本实施例中,优选华硕Z590主板的台式计算机作为待测计算机。具体的待测SSD为支持PCIe和NVMe协议的SSD。
软件需求:操作系统为Linux操作系统,本实施例中所述方法需要使用Linux操作系统,而具体发行版本没有强制要求。本实施例中,优选Linux的Ubuntu操作系统。测试工具包括lspci、setpci、dd、nvme-cli。测试脚本为自编写的Linux Shell测试脚本。
其具体的实施步骤如下:
1、使用lspci工具查看SSD对应的Bus:Device:Function地址。
2、使用lspci工具查看SSD是否支持退出D3hot不用重新初始化。
3、使用setpci工具设置SSD配置空间里功耗状态寄存器,让SSD进入D3hot。
4、使用dd工具对SSD进行读写操作,由于在D3hot状态SSD无法执行读写命令,预期读写失败。
5、如果SSD支持退出D3hot不用重新初始化,那么使用setpci工具设置SSD配置空间里功耗状态寄存器,让SSD退出D3hot;否则,使用nvme-cli工具对SSD重新初始化,让SSD退出D3hot。
6、使用dd工具对SSD进行读写操作,预期读写成功。
应该理解的是,虽然图1-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种基于Linux系统的D3hot状态进退测试装置400,该装置包括:
获取模块401,所述获取模块用于获取基于Linux系统的D3hot状态进退测试请求并运行测试脚本;
查看模块402,所述查看模块用于通过lspci工具查看SSD对应的Bus:Device:Function地址;
第一设置模块403,所述第一设置模块用于通过setpci工具设置SSD配置空间里功耗状态寄存器,以使所述SSD进入D3hot状态;
第一判断模块404,所述第一判断模块用于通过dd工具对SSD进行读写操作,判断读写操作是否失败;
第二判断模块405,所述第二判断模块用于若读写操作失败,则进一步判断SSD是否支持退出D3hot状态不用重新初始化;
第二设置模块406,所述第二设置模块用于如果SSD支持退出D3hot状态不用重新初始化,则使用setpci工具设置SSD配置空间里功耗状态寄存器,以使所述SSD退出D3hot状态。
在一个实施例中,如图5所示,提供了一种基于Linux系统的D3hot状态进退测试装置400,该装置还包括第三设置模块407,用于:
如果SSD不支持退出D3hot状态不用重新初始化,则使用nvme-cli工具对SSD重新初始化,以使所述SSD退出D3hot状态。
在一个实施例中,如图6所示,提供了一种基于Linux系统的D3hot状态进退测试装置400,该装置还包括第三判断模块408,用于:
通过dd工具再次对所述SSD进行读写操作,判断读写操作是否成功;
若读写操作成功则测试通过,若读写操作失败则测试失败。
在一个实施例中,第一判断模块404还用于:
若读写操作没有失败则测试失败。
关于基于Linux系统的D3hot状态进退测试装置的具体限定可以参见上文中对于基于Linux系统的D3hot状态进退测试方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于Linux系统的D3hot状态进退测试方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
机译: 压力状态下的钢容器状态测试方法及装置的工作状态测试方法
机译: 基于Linux系统的金融自服务设备的应用认证方法和装置
机译: 基于雷达的填充状态测量装置的功能测试方法