一种存储装置及相关指令时延统计方法与流程
未命名
09-24
阅读:76
评论:0
1.本技术涉及半导体技术领域,尤其涉及一种存储装置及相关指令时延统计方法。
背景技术:
2.当前计算机服务器的主流存储器件主要分为两种:机械硬盘(hard disk driver,hdd)和固态硬盘(solid state disk,ssd)。固态硬盘和机械硬盘本质上都是用于数据存储的硬件,其本质上的区别在于存储介质不同。传统的机械硬盘以机械磁盘作为存储介质,通过磁臂和磁头、磁盘之间的机械构造进行数据存储和读取;而固态硬盘则是以nand闪存(非易失性的存储器)作为存储介质,通过存储器内部的电荷数,即cell的通断电进行数据的读取和写入,进而实现数据存储。随着固态硬盘小型化以及其性价比不断提升,越来越多企业消费者和个人消费者采用固态硬盘进行数据的存储。
3.目前,主机访问存储设备(如ssd)的指令,主要包括写入数据指令、读取数据指令、擦除数据指令等。当存储设备接收到主机发送的指令后,需要对存储介质进行读数据、写数据或擦除数据等操作,会产生一定的响应时延。但如果硬件出现异常,如ssd中的存储块被损坏,则会导致响应异常的问题,进而影响主机的执行效率,降低用户体验。
4.因此,如何提供一种存储装置及相关的指令时延统计方法,以便于定位异常部件是亟待解决的问题。
技术实现要素:
5.本技术实施例所要解决的技术问题在于,提供一种存储装置及相关的指令时延统计方法,以便于定位异常部件,进而可对异常点进行调整,减少存储系统出现异常的概率。
6.第一方面,本技术实施案例提供一种存储装置,其特征在于,所述存储装置用于:接收主机发送的n个操作指令,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;n为大于0的整数;分别响应于所述n个操作指令,并记录所述n个操作指令中每个操作指令的操作时延,所述操作时延为所述存储装置从接收到操作指令到响应完成所产生的时延;基于所述n个操作指令的指令类型以及n个操作时延,生成时延统计表,所述时延统计表用于定位所述主机或所述存储装置的响应异常点。
7.在本发明实施例中,存储设备根据接收到主机侧发送的操作指令的时间以及响应该操作指令的时间,对接收到的操作指令进行操作时延的统计,并可基于该操作时延的统计结果排查出存储系统(包括存储设备和/或主机的系统)中的异常点,从而可对异常点进行调整,减少存储系统出现异常的概率。具体地,由于操作指令的响应时延可以作为判断存储设备是否出现异常的指标,因此当存储设备响应于接收到的多个操作指令后,会记录每条操作指令的接收时间和对应的响应完成时间,进而得到响应时延,最终基于该响应时延对接收到的操作指令进行统计得到时延统计表,从而更直观地统计出存储设备内响应时延分布情况,进而可以在主机检测到存储设备响应比较慢时,能够基于时延统计信息,定位是主机出现异常还是存储设备出现异常。而在现有技术中,仅仅是根据主机的等待时间(即主
机接收到存储设备发送的响应反馈的时间)来判断存储设备是否出现异常,但操作指令在存储设备和主机之间进行传送时,需要经过主机的硬件和存储设备的硬件,若主机硬件出现问题,同样也会增加主机的等待时间,因此该现有技术的判断结果通常不准确。综上,本方发明实施例中,存储设备对多个操作指令的时延进行统计,同时考虑了操作指令从主机侧发送到存储设备之间的时间、以及存储设备在接收到操作指令之后,响应该操作指令的时间,以使得可同时检测到主机侧的硬件情况和存储设备侧的硬件情况,避免了仅通过主机等待时间来判断存储设备是否出现异常,导致异常点定位不准确的问题,从而能够更加准确的排查出存储设备是否出现故障,进而对故障点进行调整,减少存储系统出现异常的概率。
8.在一种可能的实现方式中,所述存储装置还用于:记录所述存储装置接收到的所述n个操作指令中每个操作指令的接收时间和响应完成时间;基于每个所述操作指令对应的所述接收时间和响应完成时间,计算每个所述操作指令的所述操作时延。
9.在本发明实施例中,存储设备每接收到一条操作指令会记录下指令的接收时间t1,然后根据指令要求去执行相应的操作,在将响应结果返回给主机前,存储设备需记录响应完成时间t2,进一步地,存储设备可以基于接收时间t1和响应完成时间t2计算指令的响应时延(如响应时延为t2-t1)。由于指令的响应时延可以作为判断存储设备是否出现异常的指标,因此存储设备对多个操作指令的时延进行统计,以使得可基于统计结果排查出存储系统(包括存储设备和主机的系统)中的异常点,进而可对异常点进行调整,减少存储系统出现异常的概率。
10.在一种可能的实现方式中,所述存储装置具体用于:根据所述n个操作指令的指令类型,将所述n个操作指令划分为多个指令组;每个所述指令组中包括所述n个操作指令中的同一类型的一个或多个操作指令;针对每个所述指令组中的操作指令的操作时延的时长,将每个所述指令组中的操作指令划分至预设的m个时延分布区间中,m为大于0的整数;针对每个所述指令组中的操作指令,统计落入所述m个时延分布区间中每个时延分布区间中的目标指令的个数x,生成所述时延统计表,x为大于0的整数。
11.在本发明实施例中,可先按照指令类型,将同一类型的操作指令归为一个指令组,而后在针对每个指令组来进行时延统计。具体地,将接收到的n个操作指令按照指令类型,先划分为多个指令组,然后针对每个指令组都预设一些时延分布区间,如[0、32us)、[32us、64us)、[1s、2s)等。进一步地,根据每个指令组中的操作指令的操作时延的时长,将每个指令组中的操作指令划分至预设的多个时延分布区间中。接下来,在针对每个指令组中的操作指令,统计落入每个时延分布区间中的指令的个数,然后生成指令时延统计表,实现了在指令时延统计表记录下存储设备的响应情况,以使得可基于统计结果排查出存储系统(包括存储设备和主机的系统)中的异常点,进而可对异常点进行调整,从而减少存储系统出现异常的概率。
[0012]
在一种可能的实现方式中,所述存储装置还用于:根据每个所述时延分布区间中的目标指令的访存数据量,将每个所述时延分布区间对应的x个所述目标指令,划分至预设的s个访存数据量分布区间中,s为大于0的整数;针对每个所述时延分布区间,统计落入所述s个数据量分布区间中每个数据量分布区间中的目标指令的个数,并记录在所述时延统计表中。
[0013]
在本发明实施例中,存储设备对指令的响应时延,与指令的访存数据量有关,即访存数据量越大,指令响应时延越长。在统计操作指令的响应时延时,可针对每个时延分布区间都预设多个访存数据量分布区间,然后可针对每个时延分布区间,统计落入每个数据量分布区间中的指令的个数,并记录在时延统计表中,以便能够从访存数据量的维度识别时延的合理性,从而能够更加准确的排查出存储设备是否出现故障,进而可对故障点进行调整,减少存储系统出现异常的概率。
[0014]
在一种可能的实现方式中,所述存储装置还用于:将所述操作时延大于异常响应时延的所述操作指令确定为异常指令;所述异常响应时延为预设值;在所述时延统计表中记录所述异常指令的响应信息,所述响应信息中包括所述异常指令的所述接收时间,所述响应完成时间,所述访问数据量中的一种或多种。
[0015]
在本发明实施例中,可以根据存储设备正常情况下的响应时延,预设一个异常响应时延,然后将大于该异常响应时延的操作时延对应的指令先确定为异常指令,然后在时延统计表中记录下异常指令的详细信息,以便后续排查异常点时,能够基于更加全面的信息去分析出现异常的原因,进而可对故障点进行调整,避免存储系统出现异常。
[0016]
第二方面,本技术实施案例提供一种处理装置,其特征在于,包括主机,所述主机用于:接收存储设备发送的时延统计表;所述统计时延表为所述存储设备基于接收到的n个操作指令的指令类型以及n个操作时延生成的,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;所述操作时延为所述存储设备从接收到操作指令到响应完成所产生的时延;n为大于0的整数;基于所述时延统计表定位所述主机或所述存储设备的响应异常点。
[0017]
在本发明实施例中,存储设备根据接收到主机侧发送的操作指令的时间以及响应该操作指令的时间,对接收到的操作指令进行操作时延的统计,然后主机可基于该操作时延的统计结果排查出存储系统(包括存储设备和/或主机的系统)中的异常点,从而可对异常点进行调整,减少存储系统出现异常的概率。具体地,由于操作指令的响应时延可以作为判断存储设备是否出现异常的指标,因此当存储设备响应于接收到的多个操作指令后,会记录每条操作指令的接收时间和对应的响应完成时间,进而得到响应时延,最终基于该响应时延对接收到的操作指令进行统计得到时延统计表,从而更直观地统计出存储设备内响应时延分布情况,进而可以在主机检测到存储设备响应比较慢时,主机能够基于时延统计信息,定位是主机出现异常还是存储设备出现异常。而在现有技术中,仅仅是根据主机的等待时间(即主机接收到存储设备发送的响应反馈的时间)来判断存储设备是否出现异常,但操作指令在存储设备和主机之间进行传送时,需要经过主机的硬件和存储设备的硬件,若主机硬件出现问题,同样也会增加主机的等待时间,因此该现有技术的判断结果通常不准确。综上,本方发明实施例中,存储设备对多个操作指令的时延进行统计,同时考虑了操作指令从主机侧发送到存储设备之间的时间、以及存储设备在接收到操作指令之后,响应该操作指令的时间,以使得可同时检测到主机侧的硬件情况和存储设备侧的硬件情况,避免了仅通过主机等待时间来判断存储设备是否出现异常,导致异常点定位不准确的问题,从而能够更加准确的排查出存储设备是否出现故障,进而对故障点进行调整,减少存储系统出现异常的概率。
[0018]
第三方面,本技术实施案例提供一种指令时延统计方法,其特征在于,应用于存储
装置,所述方法包括:接收主机发送的n个操作指令,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;n为大于0的整数;分别响应于所述n个操作指令,并记录所述n个操作指令中每个操作指令的操作时延,所述操作时延为所述存储装置从接收到操作指令到响应完成所产生的时延;基于所述n个操作指令的指令类型以及n个操作时延,生成时延统计表,所述时延统计表用于定位所述主机或所述存储装置的响应异常点。
[0019]
在一种可能的实现方式中,所述方法还包括:记录所述存储装置接收到的所述n个操作指令中每个操作指令的接收时间和响应完成时间;基于每个所述操作指令对应的所述接收时间和响应完成时间,计算每个所述操作指令的所述操作时延。
[0020]
在一种可能的实现方式中,所述基于所述n个操作指令的指令类型以及n个操作时延,生成时延统计表,包括:根据所述n个操作时延的时长,将所述n个操作时延对应的所述n个操作指令划分至预设的m个时延分布区间中,m为大于0的整数;统计落入所述m个时延分布区间中每个时延分布区间中的目标指令的个数x,生成所述时延统计表,x为大于0的整数。
[0021]
在一种可能的实现方式中,所述方法还包括:根据每个所述时延分布区间中的目标指令的访存数据量,将每个所述时延分布区间对应的x个所述目标指令,划分至预设的s个访存数据量分布区间中,s为大于0的整数;针对每个所述时延分布区间,统计落入所述s个数据量分布区间中每个数据量分布区间中的目标指令的个数,并记录在所述时延统计表中。
[0022]
在一种可能的实现方式中,所述方法还包括:将所述操作时延大于异常响应时延的所述操作指令确定为异常指令;所述异常响应时延为预设值;在所述时延统计表中记录所述异常指令的响应信息,所述响应信息中包括所述异常指令的所述接收时间,所述响应完成时间,所述访问数据量中的一种或多种。
[0023]
第四方面,本技术提供了一种指令时延统计方法,其特征在于,应用于主机,所述方法包括:接收存储设备发送的时延统计表;所述统计时延表为所述存储设备基于接收到的n个操作指令的指令类型以及n个操作时延生成的,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;所述操作时延为所述存储设备从接收到操作指令到响应完成所产生的时延;n为大于0的整数;基于所述时延统计表定位所述主机或所述存储设备的响应异常点。
[0024]
第五方面,本技术提供了一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述第三方面任意一项所述的方法,或是实现上述第四方面任意一项所述的方法。
[0025]
第六方面,本技术实施例提供一种电子设备,该电子设备中包括处理器,处理器被配置为支持该电子设备实现第三方面提供的一种指令时延统计方法中相应的功能,或是实现第四方面提供的一种指令时延统计方法中相应的功能。该电子设备还可以包括存储器,存储器用于与处理器耦合,其保存该电子设备必要的程序指令和数据。该电子设备还可以包括通信接口,用于该电子设备与其他设备或通信网络通信。
[0026]
第七方面,本技术提供了一种芯片系统,该芯片系统包括处理器,用于支持电子设备实现上述第三方面中所涉及的功能,或是实现上述第四方面中所涉及的功能,例如,生成
或处理上述指令时延统计方法中所涉及的信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存电子设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
[0027]
第八方面,本技术提供一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行上述第三方面中任意一项所述的方法,执行上述第四方面中任意一项所述的方法。
附图说明
[0028]
图1为本发明实施例提供的一种主机和存储设备的结构示意图。
[0029]
图2为本发明实施例提供的一种存储系统示意图。
[0030]
图3为本发明实施例提供的一种时延统计表示意图。
[0031]
图4a为本发明实施例提供的一种读指令时延区间划分表示意图。
[0032]
图4b为本发明实施例提供的一种写指令时延区间划分表示意图。
[0033]
图4c为本发明实施例提供的一种擦除指令时延区间划分表示意图。
[0034]
图5为本发明实施例提供的另一种时延统计表示意图。
[0035]
图6为本发明实施例提供的一种时延统计的流程示意图。
[0036]
图7是本发明实施例提供的一种指令时延统计方法的流程图。
[0037]
图8是本发明实施例提供的另一种指令时延统计方法的流程图。
具体实施方式
[0038]
下面将结合本技术实施例中的附图,对本技术实施例进行描述。
[0039]
本技术的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0040]
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0041]
首先,对本技术实施例涉及的一些术语进行简单介绍。
[0042]
(1)与非闪存(not and flash,nand flash)是一种非易失性存储介质,即断电后仍能保存数据。它的发展目标就是降低每比特存储成本、提高存储容量。通常,nand flash以页(page)为单位读写,以块(block)为单位擦除(erase)。由于flash存储原理的原因,向flash中写入数据,只能把数据(bit)从1改为0;而擦除只能把所有数据(bit)从0改为1。所以修改数据或者新写入数据,都必须写到已经擦除过的空闲页,否则数据会乱掉。
[0043]
(2)固态驱动器(solid state disk或solid state drive,ssd),俗称固态硬盘,固态硬盘是用固态电子存储芯片阵列而制成的硬盘。ssd由控制单元和存储单元(flash芯片、dram芯片)组成。其中,ssd中的flash芯片通常采用上述nand flash芯片作为其存储单
元。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。被广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等诸多领域。
[0044]
(3)闪存文件系统(flash friendly file system,f2fs),是文件在操作系统上的一种存储架构,是专门为基于nand的存储设备设计的新型开源flash文件系统。f2fs支持linux操作系统。适合用于nand一类的闪存设备(例如固态硬盘、emmc和sd卡等),也就是更加适合现在的移动端设备。
[0045]
(4)物理区域(physical extent,pe)每一个物理卷被划分为称为pe的基本单元,具有唯一编号的pe是可以被逻辑盘卷管理(logical volume manager,lvm)寻址的最小单元。pe的大小是可配置的,默认为4mb。
[0046]
(5)垃圾回收(garbage collection,gc),是一种存储资源回收方法。当在操作系统(例如windows)中删除文件时,操作系统只是在其内部文件表中做标记表示该文件已删除。由于nand闪存设备不能覆盖现有数据,所以在固态硬盘ssd上,当前无效的数据仍然保留在硬盘上。这样的话就会产生大量的失效数据,也称为数据垃圾。为了提升ssd的利用效率,固态硬盘控制器会先复制所有有效数据(仍在使用中的数据)并将其写入不同数据区的空白页、擦除当前数据区中的所有数据单元,然后开始将新数据写入刚刚擦除过的数据区。
[0047]
基于上述,本发明实施例提供一种主机和存储设备。请参见图1,图1为本发明实施例提供的一种主机和存储设备的结构示意图,该主机10可以为任何产生数据的计算设备,如服务器、个人计算机、平板电脑、手机、个人数字助理、智能穿戴设备等各类设备;存储设备103可以是任何为主机10提供存储/读取数据功能的非易失性存储器。在本发明实施例中,存储设备103可以内置于主机10中,也可与主机10分别为独立的设备,还可以是存储设备103和主机10共同位于一个电子设备中,本技术对此不做具体限定。主机10或存储设备103具体可以是芯片或芯片组或搭载有芯片或者芯片组的电路板,该芯片或芯片组或搭载有芯片或芯片组的电路板可在必要的软件驱动下工作。具体地,
[0048]
主机10,可包括处理器(central processing unit,cpu)100、内存储器101。可选的,还可以包括主机控制器102,进一步地,还可以包括图1中未示出的电源、其他输入输出控制器和接口等应用处理侧的所有物理器件。其中,
[0049]
处理器100:可运行操作系统、文件系统(如闪存文件系统f2fs)或应用程序等,以控制连接到处理器100的多个硬件或软件元件,并且可处理各种数据并执行操作。处理器100可将存储设备103中存储的指令或数据加载到内存储器101中,并把需要运算的指令或数据调到处理器100中进行运算,当运算完成后处理器100再将结果临时存储在内存储器101中,并将需要长期存储的指令或数据通过主机控制器102存储至存储设备103中。处理器100可以包括一个或多个处理单元(也可称处理核),例如:处理器100可以包括中央处理单元(cpu)、应用处理单元(application processor,ap)、调制解调处理单元、图形处理单元(graphics processing unit,gpu)、图像信号处理单元(image signal processor,isp)、视频编解码单元、数字信号处理单元(digital signal processor,dsp)、基带处理单元和神经网络处理单元(neural-network processing unit,npu)等中的一个或多个。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个器件中。可选的,处理器100中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器100中的存储器为高速
缓冲存储器(cache)。所述cache可以保存处理器100刚用过或循环使用的指令或数据。如果处理器100需要再次使用该指令或数据,可从所述cache中直接调用。避免了重复存取,减少了处理器100的等待时间,因而提高了系统的效率。进一步地,处理器100还可被实现为片上系统(system on chip,soc)。
[0050]
内存储器101,通常为掉电易失性存储器,断电时会丢失其上存储的内容,也可称为内存(memory)或主存储器。本技术中的内存储器101包括可读可写的运行内存,其作用是用于暂时存放处理器100中的运算数据,以及与存储设备103或其他外部存储器交互数据,可作为操作系统或其他正在运行中的程序的临时数据的存储媒介。例如,运行于处理器100上的操作系统把需要运算的数据从内存储器101调到处理器100中进行运算,当运算完成后处理器100再将结果传送出来。
[0051]
内存储器101可以包括,动态随机存取存储器(dram)、静态随机存取存储器(sram)、同步动态随机存取存储器(sdram)等中的一种或多种。其中,dram又包括双倍速率同步动态随机存储器(double data rate synchronous dynamic random access memory,ddr sdram)简称ddr、二代双倍速率同步动态随机存储器(ddr2)、三代双倍速率同步动态随机存储器(ddr3)、四代低功耗双倍数据率同步动态随机存储器(low power double data rate 4,lpddr4)和五代低功耗双倍数据率同步动态随机存储器(low power double data rate 5,lpddr5)等。
[0052]
主机控制器102,用于管理并控制主机10与存储设备103之间的通信,并为主机10和存储设备103之间的通信提供标准化(例如通用闪存存储ufs标准)的接口。具体地,主机控制器102可以根据处理器100发出的读/写等请求,向存储设备103传递指令(例如,写入、读取、擦除等指令)及数据,以及根据存储设备103读/写数据等结果向主机10反馈事件(如指令完成事件、指令状态事件、硬件出错事件等)。对于从处理器100发出的指令或数据,主机控制器102可将指令或数据通过封装的方式转换为支持某个协议的数据包,而对于主机10接收的数据主机控制器102则进行反向操作。可选的,一个主机可以支持多个主机控制器(host controller),以支持与不同协议的存储设备之间的通信。在本发明实施例中,主机控制器102根据主机10与存储设备103之间所支持的协议(例如ufs协议)生成本技术中所涉及的写指令,读指令,或擦除指令。需要说明的是,读指令为主机10下发的一个指令,从存储设备103上指定位置读取指定长度的数据返回给主机10;写指令也为主机10下发的一个指令,将指定长度的数据写入到存储设备103内指定的位置;擦除指令(也可称为trim指令)可为存储设备103(如ssd)特有的一个指令,trim指令携带一个逻辑地址(logical block address,lba)的范围,通过这个范围告诉ssd,对应的数据是无效的数据,进一步地,ssd对这部分数据,会标记其为无效数据,并回收其占用的ftl空间,尽快将无效数据擦除掉,从而能够一定程度降低存储设备103进行gc需要搬移的数据,减少了盘内的写放大。可选的,该主机控制器102的功能也可以集成在处理器100中,即由处理器100完成主机控制器102的上述功能,此处不作具体限定。
[0053]
存储设备103,为非易失性存储器,断电后其存储的内容不会丢失。存储设备103可用于长期存储主机10运行所涉及的指令和数据,如启动程序、操作系统、应用程序和数据等。由于主机10中的处理器100不能直接读取存储设备103中的指令和数据也不能直接向存储设备103写入指令或数据,因此,处理器100在执行读(或加载)指令时,实际上是通过主机
控制器102将存储在存储设备103中的待读内容(包括指令和/或数据)先临时加载至内存储器101中,然后再由处理器100从内存储器101中读出;而在执行写(即存储)指令时,实际上是由处理器100先将待存储数据(包括指令和/或数据)临时写入至内存储器101中,然后再通过主机控制器102从内存储器101存储至存储设备103中。
[0054]
存储设备103,可以包括flash闪存(例如,nand闪存、nor闪存等)、通用闪存存储器(universal flash storage,ufs)、嵌入式多媒体卡emmc、通用闪存存储多芯片封装umcp存储器、嵌入式多媒体卡多芯片封装emcp存储器、固态驱动器(ssd)等中的一个或多个。存储设备103中的存储区域1031可包括m个块(block),每个block包括n个页(page),而每个page中又包含一定数量的单元(cell),该存储区域1031中的所有block中的所有page中的所有cell可以为单层单元(single-level cell,slc)、多层单元(multi-level cell,mlc)或三层单元(triple-level cell,tlc)中的一种或多种,在此不作限定。
[0055]
需要说明的是,page是nand flash中最小的寻址单位,即读/写的最小单位。一个block中的page数量根据不同的厂家不同的规格,数量是不一样的,page本身的大小也不一样。例如,一个block中有1024页,每页大小为(16kb+2208b),其中,16kb为数据区用于存储数据,2208b为元数据区用于存储元数据,比如16kb用于存储申请中的一个或多个目标数据,而2208b可用于存储所述一个或多个目标数据分别对应的数据类型。其中,slc和mlc的擦除性能类似,而slc闪存的读性能(包括读速度)、写性能(包括写速度)和存储性能(包括存储寿命)等均优于mlc/tlc闪存。
[0056]
存储控制器1032,是主机10与存储设备103的接口设备,其作用主要就是进行接口的转换,将主机10(例如主机10中的主机控制器102)发出的读、写、删除等指令转换成存储设备103能够识别的信号,还可以完成主机10与存储设备103之间地址译码(例如,主机10逻辑地址和存储设备103中物理地址之间的映射)、数据格式的转换(比如数据位宽)等。总之,存储控制器1032可以按照一定的时序规则对其所在的存储设备103的访问进行必要控制的设备,包括地址信号、数据信号以及各种指令信号的控制,使主机10能够根据需求使用存储设备103上的存储资源。例如,存储控制器1032接收并解析主机10中的主机控制器102发送的读指令或写指令等,并根据读指令或写指令等中携带的数据的逻辑地址,将数据的逻辑地址根据固定地址映射关系解析为物理地址,进而查找待读或者待写数据的位置,并最终向存储区域1031发出与指令对应的控制信号。在存储控制器1032响应主机10发送的指令过程中,由于存储控制器1032需要对存储介质进行读或写等操作,因此会产生一定的响应时延。
[0057]
可以理解的是,图1中的主机10或存储设备103的结构只是本发明实施例提供的一些示例性的实施方式,本发明实施例中的主机10和存储设备103的结构包括但不仅限于以上实现方式。
[0058]
还可以理解的是,处理器100与内存储器101、主机控制器和存储设备103之间可以通过系统总线的方式相互通信,也可以通过其他连接方式进行通信,本发明实施例对此不作具体限定。本发明实施例示意的结构并不构成主机10或存储设备103的具体限定。在本技术另一些实施例中,主机10或存储设备103可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0059]
下面结合本发明实施例中的附图对本发明实施例进行描述。
[0060]
请参见图2,图2为本发明实施例提供的一种存储系统示意图,下面将结合附图2对本技术实施例中的存储系统进行详细描述。如图2所示,该存储系统20包括:主机201(为处理装置)和存储设备202(为存储装置)。需要说明的是,主机201的功能可包括上述图1中的主机10的所有功能,存储设备202的功能可包括上述图1中的存储设备103的所有功能。
[0061]
其中,
[0062]
所述存储设备用于,接收主机发送的n个操作指令。
[0063]
具体地,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;n为大于0的整数。读指令为主机下发的一个指令,从存储设备上指定位置读取指定长度的数据返回给主机;写指令也为主机下发的一个指令,将指定长度的数据写入到存储设备内指定的位置;擦除指令(也可称为trim指令)可为存储设备(如ssd)特有的一个指令,trim指令携带一个逻辑地址(logical block address,lba)的范围,通过这个范围告诉ssd,对应的数据是无效的数据,进一步地,ssd对这部分数据,会标记其为无效数据,并回收其占用的ftl空间,尽快将无效数据擦除掉,从而能够一定程度降低存储设备进行gc需要搬移的数据,减少了盘内的写放大。
[0064]
所述存储设备还用于,分别响应于所述n个操作指令,并记录所述n个操作指令中每个操作指令的操作时延。
[0065]
具体地,所述操作时延为所述存储设备从接收到操作指令到响应完成所产生的时延。需要说明的是,若存储设备通过串行的方式对操作指令进行处理,则存储设备所接收的n个操作指令为主机在不同时刻发送的;若存储设备可通过并行的方式对操作指令进行处理,则存储设备所接收的n个操作指令中的部分指令可以为主机在相同时刻发送的,也可以为不同时刻发送的,在此不作限定。
[0066]
在一种可能的实现方式中,所述存储设备还用于:记录所述存储设备接收到的所述n个操作指令中每个操作指令的接收时间和响应完成时间;基于每个所述操作指令对应的所述接收时间和响应完成时间,计算每个所述操作指令的所述操作时延。具体地,存储设备每接收到一条操作指令会记录下指令的接收时间t1,然后根据指令要求去执行相应的操作,在将响应结果返回给主机前,存储设备需记录响应完成时间t2,进一步地,存储设备可以基于接收时间t1和响应完成时间t2计算指令的响应时延(如响应时延为t2-t1)。由于指令的响应时延可以作为判断存储设备是否出现异常的指标,因此存储设备对多个操作指令的响应时延进行统计,以使得可基于统计结果排查出存储系统(包括存储设备和主机的系统)中的异常点,进而可对异常点进行调整,减少存储系统出现异常的概率。
[0067]
所述存储设备还用于,基于所述n个操作指令的指令类型以及n个操作时延,生成时延统计表。具体地,所述时延统计表用于定位所述主机或所述存储设备的响应异常点,所述定位异常点包括所述存储设备的硬件异常点,或所述主机的硬件异常点。例如,首先可从时延分布维度对读指令、写指令、trim指令进行统计。可选的,统计方式是在1ms以内,每32us为一个统计范围;1ms到32ms,每1ms为一个统计范围;32ms到1s,每32ms为一个统计范围。然后,存储设备对读指令、写指令、trim指令,分别统计落到对应区域的指令的个数,得到时延统计表。
[0068]
在一种可能的实现方式中,所述存储设备具体用于:根据所述n个操作指令的指令
类型,将所述n个操作指令划分为多个指令组;每个所述指令组中包括所述n个操作指令中的同一类型的一个或多个操作指令;针对每个所述指令组中的操作指令的操作时延的时长,将每个所述指令组中的操作指令划分至预设的m个时延分布区间中,m为大于0的整数;针对每个所述指令组中的操作指令,统计落入所述m个时延分布区间中每个时延分布区间中的目标指令的个数x,生成所述时延统计表,x为大于0的整数。在本发明实施例中,先按照指令类型,将同一类型的操作指令归为一个指令组,而后在针对每个指令组来进行时延统计。具体地,将接收到的n个操作指令按照指令类型,先划分为多个指令组,然后针对每个指令组都预设一些时延分布区间,如[0、32us)、[32us、64us)、[1s、2s)等。进一步地,针对每个指令组中的操作指令的操作时延的时长,将每个指令组中的操作指令划分至预设的多个时延分布区间中。接下来,在针对每个指令组中的操作指令,统计落入每个时延分布区间中的指令的个数,然后生成指令时延统计表。例如,如图3所示,图3为本发明实施例提供的一种时延统计表示意图,假设操作指令的指令类型包括三种,分别为读指令、写指令和擦除指令,然后针对每种指令类型,还可以预设一些时延分布区间,如[0、32us)、[32us、64us)、[1s、2s)等。进一步地,存储设备每接收到一个操作指令,都可以根据其对应的指令类型和操作时延(即指令的响应时延)进行统计,如存储设备接收到一个读指令,且该读指令的响应时延为12us,因此在时延统计表中的读指令-[0、32us)对应的指令个数加一。
[0069]
需要说明的是,可以按照平均的方式划分时间段,得到多个时延分布区间;也可以按照梯度(即不平均)的方式划分时间段,得到多个时延分布区间,具体可根据实际情况进行调整,在此不作限定。
[0070]
例如,如图4a所示,图4a为本发明实施例提供的一种读指令时延区间划分表示意图,在该时延区间划分表中,可统计时延为0-1ms的读命令个数,每32us一个档位,共32个档位(共256bytes),每个档位统计数占用8bytes;可统计时延为1-32ms的读命令个数,每1ms一个档位,共31个档位(共248bytes),每个档位统计数占用8bytes;可统计时延为32ms-1s的读命令个数,每32ms一个档位,共31个档位(共248bytes),每个档位统计数占用8bytes;可统计时延为1-2s的读命令个数,只有一个档位,统计个数占用8bytes等。又例如,如图4b所示,图4b为本发明实施例提供的一种写指令时延区间划分表示意图,图中写指令的时延区间划分与读指令的时延区间划分相似,可统计时延为0-1ms的写命令个数,每32us一个档位,共32个档位(共256bytes),每个档位统计数占用8bytes;可统计时延为1-32ms的写命令个数,每1ms一个档位,共31个档位(共248bytes),每个档位统计数占用8bytes;可统计时延为32ms-1s的写命令个数,每32ms一个档位,共31个档位(共248bytes),每个档位统计数占用8bytes;可统计时延为1-2s的写命令个数,只有一个档位,统计个数占用8bytes等。又例如,如图4c所示,图4c为本发明实施例提供的一种擦除指令时延区间划分表示意图,与上述两种指令的时延区间划分相似,在该时延区间划分表中,可统计时延为0-1ms的trim命令个数,每32us一个档位,共32个档位(共256bytes),每个档位统计数占用8bytes;可统计时延为1-32ms的trim命令个数,每1ms一个档位,共31个档位(共248bytes),每个档位统计数占用8bytes;可统计时延为32ms-1s的trim命令个数,每32ms一个档位,共31个档位(共248bytes),每个档位统计数占用8bytes;可统计时延1-32s的trim命令个数,每1s一个档位,共31个档位(共248bytes),每个档位统计数占用8bytes;可统计时延大于32s的trim命令个数,只有一个档位,统计个数占用8bytes等。
[0071]
在一种可能的实现方式中,所述存储设备还用于:根据每个所述时延分布区间中的目标指令的访存数据量,将每个所述时延分布区间对应的x个所述目标指令,划分至预设的s个访存数据量分布区间中,s为大于0的整数;针对每个所述时延分布区间,统计落入所述s个数据量分布区间中每个数据量分布区间中的目标指令的个数,并记录在所述时延统计表中。具体地,存储设备对指令的响应时延,与指令的访存数据量有关,即访存数据量越大,指令响应时延越长。在统计操作指令的响应时延时,可针对每个时延分布区间都预设多个访存数据量分布区间,然后可针对每个时延分布区间,统计落入每个数据量分布区间中的指令的个数,并记录在时延统计表中,以便能够从访存数据量的维度识别时延的合理性,从而能够更加准确的排查出存储设备是否出现故障,进而可对故障点进行调整,减少存储系统出现异常的概率。例如,如图5所示,图5为本发明实施例提供的另一种时延统计表示意图,图中可按照指令类型将时延统计表划分为读指令时延统计表,写指令时延统计表、擦除指令时延统计表,每种指令类型的时延统计表的时延分布区间相同,可为[0、32us)、[32us、64us)、[1s、2s)等。针对每种指令类型的时延统计表来说,如读指令时延统计表,时延分布区间可为[0、32us)、[32us、64us)、[1s、2s)等,然后在针对每个时延分布区间(如[0、32us))都预设多个相同的访存数据量分布区间,如访存数据量分布区间为[0.5kb、4kb)、[20kb、24kb)等。进一步地,假设存储设备接收到3个操作指令,其中1个为读命令(操作时延为15us,访存数据量为2kb),1个为写命令(操作时延为59us,访存数据量为23kb),1个为擦除命令(操作时延为8us,访存数据量为3kb),因此可在读指令时延统计表的[0、32us)-[0.5kb、4kb)对应的指令个数加一;可在写指令时延统计表的[32us、64us)-[20kb、24kb)对应的指令个数加一;可在擦除指令时延统计表的[0、32us)-[0.5kb、4kb)对应的指令个数加一。
[0072]
例如,如图6所示,图6为本发明实施例提供的一种时延统计的流程示意图,图中当存储设备接收到读io(即读指令),存储设备会记录该io进入存储设备的时刻t1。而后,存储设备将该io处理完毕后,需要给主机返回结果,在将结果返回给主机之前,记录下io的时刻t2,并计算该io在盘内的时延(t2-t1)。然后,基于该io的时延,假设这个时延是1.5ms,则在时延统计的第一个维度里,找到区间[1ms,2ms),将该区间的io计数加一,基于该io的访存数据量大小,将区间[1ms,2ms)对应的第二维统计的对应区间的io计数加一(比如该io大小为5kb,则将第二维统计[4kb,8kb)对应的计数加一)进而完成统计。
[0073]
假设,第一维(即仅考虑指令类型和操作时延)的时延分布区间的个数是96个,第二维(即还考虑了访存数据量)的io大小分布区间的个数是12个,每个统计值的大小是8bytes,那么对于读指令的时延分布统计,需要的空间为9kb(96*12*8b=9kb)。写指令、擦除指令与读指令类似,在此不重复赘述。
[0074]
需要说明的是,若只关注io时延(即操作时延)大于10ms的这部分io的分布情况,可以在第一维时延统计的时候,从10ms开始统计(小于10ms的不做统计);如果只关注时延分布,不关注在某个时延分布区间内io大小的情况,也可以只做第一个时延维度的统计。
[0075]
在一种可能的实现方式中,所述存储设备还用于:将所述操作时延大于异常响应时延的所述操作指令确定为异常指令;所述异常响应时延为预设值;在所述时延统计表中记录所述异常指令的响应信息,所述响应信息中包括所述异常指令的所述接收时间,所述响应完成,所述访问数据量中的一种或多种。具体地,可以根据存储设备正常情况下的响应
时延,预设一个异常响应时延,然后将大于该异常响应时延的操作时延对应的指令先确定为异常指令,然后在时延统计表中记录下异常指令的详细信息,以便后续排查异常点时,能够基于更加全面的信息去分析出现异常的原因,进而可对故障点进行调整,从而减少存储系统出现异常的概率。例如,存储设备除了需要做以上两个维度的时延统计,还需要及时记录盘内时延分布异常的相关信息,假设io时延超过x(10ms/100ms
…
)就认为出现了异常,这时需要在时延统计表中记录出现异常的io命令的个数,记录的策略可如下:
[0076]
假设记录的周期为t(10s/30s/60s/2分钟/10分钟),每个周期结束时,分别记录在这个周期内,读io/写io/trim时延超过x的命令的个数(只需记录这个周期新增的值,不用记录累计的值)。在时延统计表中记录读io/写io/trim命令的超时信息时,可以只记录第一个维度的信息,也可以两个维度的信息都记录下来。另外,为了简化记录到时延统计表里面的信息,也可以只记录这个周期内总共新增加的超过x的命令个数(按读io/写io/trim三个命令的维度,记录三个总的统计值,表示这个周期内,这三类命令累计产生的超过x的命令的个数)。相关的统计信息记录到时延统计表里,方便后续分析和定位超时相关的问题。如果某个周期内没有时延超过x的命令,则这个周期不用在日志里面记录信息,避免记录一些无效的信息。
[0077]
在一种可能的实现方式中,所述存储系统还包括所述主机;所述主机用于,接收存储设备发送的时延统计表;所述统计时延表为所述存储设备基于接收到的n个操作指令的指令类型以及n个操作时延生成的,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;所述操作时延为所述存储设备从接收到操作指令到响应完成所产生的时延;n为大于0的整数;基于所述时延统计表定位所述主机或所述存储设备的响应异常点。具体地,存储设备根据接收到主机侧发送的操作指令的时间以及响应该操作指令的时间,对接收到的操作指令进行操作时延的统计,然后主机可基于该操作时延的统计结果排查出存储系统(包括存储设备和/或主机的系统)中的异常点,从而可对异常点进行调整,减少存储系统出现异常的概率。具体地,由于操作指令的响应时延可以作为判断存储设备是否出现异常的指标,因此当存储设备响应于接收到的多个操作指令后,会记录每条操作指令的接收时间和对应的响应完成时间,进而得到响应时延,最终基于该响应时延对接收到的操作指令进行统计得到时延统计表,从而更直观地统计出存储设备内响应时延分布情况,进而可以在主机检测到存储设备响应比较慢时,主机能够基于时延统计信息,定位是主机出现异常还是存储设备出现异常。而在现有技术中,仅仅是根据主机的等待时间(即主机接收到存储设备发送的响应反馈的时间)来判断存储设备是否出现异常,但操作指令在存储设备和主机之间进行传送时,需要经过主机的硬件和存储设备的硬件,若主机硬件出现问题,同样也会增加主机的等待时间,因此该现有技术的判断结果通常不准确。
[0078]
综上,本方发明实施例中,存储设备对多个操作指令的时延进行统计,同时考虑了操作指令从主机侧发送到存储设备之间的时间、以及存储设备在接收到操作指令之后,响应该操作指令的时间,以使得可同时检测到主机侧的硬件情况和存储设备侧的硬件情况,避免了仅通过主机等待时间来判断存储设备是否出现异常,导致异常点定位不准确的问题,从而能够更加准确的排查出存储设备是否出现故障,进而对故障点进行调整,减少存储系统出现异常的概率。
[0079]
上述详细阐述了本发明实施例的存储系统,下面提供了本发明实施例的相关方法。
[0080]
请参见图7,图7是本发明实施例提供的一种指令时延统计方法的流程图,该方法适用于上述图2中的一种存储装置以及包含所述存储装置的设备。该方法可以包括以下步骤s301-步骤s303。详细描述如下:
[0081]
步骤s301:通过所述存储设备,接收主机发送的n个操作指令。
[0082]
具体地,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;n为大于0的整数。
[0083]
步骤s302:通过所述存储设备,分别响应于所述n个操作指令,并记录所述n个操作指令中每个操作指令的操作时延。
[0084]
具体地,所述操作时延为所述存储装置从接收到操作指令到响应完成所产生的时延。
[0085]
步骤s303:通过所述存储设备,基于所述n个操作指令的指令类型以及n个操作时延,生成时延统计表。
[0086]
具体地,所述时延统计表用于定位所述主机或所述存储设备的响应异常点。
[0087]
在一种可能的实现方式中,所述方法还包括:记录所述存储装置接收到的所述n个操作指令中每个操作指令的接收时间和响应完成时间;基于每个所述操作指令对应的所述接收时间和响应完成时间,计算每个所述操作指令的所述操作时延。
[0088]
在一种可能的实现方式中,所述基于所述n个操作指令的指令类型以及n个操作时延,生成时延统计表,包括:根据所述n个操作指令的指令类型,将所述n个操作指令划分为多个指令组;每个所述指令组中包括所述n个操作指令中的同一类型的一个或多个操作指令;针对每个所述指令组中的操作指令的操作时延的时长,将每个所述指令组中的操作指令划分至预设的m个时延分布区间中,m为大于0的整数;针对每个所述指令组中的操作指令,统计落入所述m个时延分布区间中每个时延分布区间中的目标指令的个数x,生成所述时延统计表,x为大于0的整数。
[0089]
在一种可能的实现方式中,所述方法还包括:根据每个所述时延分布区间中的目标指令的访存数据量,将每个所述时延分布区间对应的x个所述目标指令,划分至预设的s个访存数据量分布区间中,s为大于0的整数;针对每个所述时延分布区间,统计落入所述s个数据量分布区间中每个数据量分布区间中的目标指令的个数,并记录在所述时延统计表中。
[0090]
在一种可能的实现方式中,所述方法还包括:将所述操作时延大于异常响应时延的所述操作指令确定为异常指令;所述异常响应时延为预设值;在所述时延统计表中记录所述异常指令的响应信息,所述响应信息中包括所述异常指令的所述接收时间,所述响应完成时间,所述访问数据量中的一种或多种。
[0091]
通过本发明实施例提供的方法,能够定位存储系统中的异常点,从而减少存储系统出现异常的概率。
[0092]
请参见图8,图8是本发明实施例提供的另一种指令时延统计方法的流程图,该方法适用于上述图2中的一种主机以及包含所述主机的设备。该方法可以包括以下步骤s401-步骤s402。详细描述如下:
[0093]
步骤s401:主机接收存储设备发送的时延统计表。
[0094]
具体地,所述统计时延表为所述存储设备基于接收到的n个操作指令的指令类型以及n个操作时延生成的,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;所述操作时延为所述存储设备从接收到操作指令到响应完成所产生的时延;n为大于0的整数。
[0095]
步骤s402:主机基于所述时延统计表定位所述主机或所述存储设备的响应异常点。
[0096]
具体地,所述定位异常点包括所述存储设备的硬件异常点,或所述操作指令传输路径上的硬件异常点。
[0097]
通过本发明实施例提供的方法,能够定位存储系统中的异常点,从而减少存储系统出现异常的概率。
[0098]
本技术提供了一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述任意一种指令时延统计方法。
[0099]
本技术实施例提供一种电子设备,该电子设备中包括处理器,处理器被配置为支持该电子设备实现上述任意一种指令时延统计方法中相应的功能。该电子设备还可以包括存储器,存储器用于与处理器耦合,其保存该电子设备必要的程序指令和数据。该电子设备还可以包括通信接口,用于该电子设备与其他设备或通信网络通信。
[0100]
本技术提供了一种芯片系统,该芯片系统包括处理器,用于支持电子设备实现上述所涉及的功能,例如,生成或处理上述一种指令时延统计方法中所涉及的信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存电子设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
[0101]
本技术提供一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行上述一种指令时延统计方法。
[0102]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0103]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
[0104]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0105]
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目
的。
[0106]
另外,在本技术各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0107]
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本技术各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:u盘、移动硬盘、磁碟、光盘、只读存储器(read-only memory,缩写:rom)或者随机存取存储器(random access memory,缩写:ram)等各种可以存储程序代码的介质。
[0108]
以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
技术特征:
1.一种存储装置,其特征在于,所述存储装置用于:接收主机发送的n个操作指令,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;n为大于0的整数;分别响应于所述n个操作指令,并记录所述n个操作指令中每个操作指令的操作时延,所述操作时延为所述存储装置从接收到操作指令到响应完成所产生的时延;基于所述n个操作指令的指令类型以及n个操作时延,生成时延统计表,所述时延统计表用于定位所述主机或所述存储装置的响应异常点。2.如权利要求1所述的装置,其特征在于,所述存储装置还用于:记录所述存储装置接收到的所述n个操作指令中每个操作指令的接收时间和响应完成时间;基于每个所述操作指令对应的所述接收时间和响应完成时间,计算每个所述操作指令的所述操作时延。3.如权利要求1或2所述的装置,其特征在于,所述存储装置具体用于:根据所述n个操作指令的指令类型,将所述n个操作指令划分为多个指令组;每个所述指令组中包括所述n个操作指令中的同一类型的一个或多个操作指令;针对每个所述指令组中的操作指令的操作时延的时长,将每个所述指令组中的操作指令划分至预设的m个时延分布区间中,m为大于0的整数;针对每个所述指令组中的操作指令,统计落入所述m个时延分布区间中每个时延分布区间中的目标指令的个数x,生成所述时延统计表,x为大于0的整数。4.如权利要求3所述的装置,其特征在于,所述存储装置还用于:根据每个所述时延分布区间中的目标指令的访存数据量,将每个所述时延分布区间对应的x个所述目标指令,划分至预设的s个访存数据量分布区间中,s为大于0的整数;针对每个所述时延分布区间,统计落入所述s个数据量分布区间中每个数据量分布区间中的目标指令的个数,并记录在所述时延统计表中。5.如权利要求1-4任意一项所述的装置,其特征在于,所述存储装置还用于:将所述操作时延大于异常响应时延的所述操作指令确定为异常指令;所述异常响应时延为预设值;在所述时延统计表中记录所述异常指令的响应信息,所述响应信息中包括所述异常指令的所述接收时间,所述响应完成时间,所述访问数据量中的一种或多种。6.一种处理装置,其特征在于,包括主机,所述主机用于:接收存储设备发送的时延统计表;所述统计时延表为所述存储设备基于接收到的n个操作指令的指令类型以及n个操作时延生成的,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;所述操作时延为所述存储设备从接收到操作指令到响应完成所产生的时延;n为大于0的整数;基于所述时延统计表定位所述主机或所述存储设备的响应异常点。7.一种指令时延统计方法,其特征在于,应用于存储装置,所述方法包括:接收主机发送的n个操作指令,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;n为大于0的整数;分别响应于所述n个操作指令,并记录所述n个操作指令中每个操作指令的操作时延,
所述操作时延为所述存储装置从接收到操作指令到响应完成所产生的时延;基于所述n个操作指令的指令类型以及n个操作时延,生成时延统计表,所述时延统计表用于定位所述主机或所述存储装置的响应异常点。8.如权利要求7所述的方法,其特征在于,所述方法还包括:记录所述存储装置接收到的所述n个操作指令中每个操作指令的接收时间和响应完成时间;基于每个所述操作指令对应的所述接收时间和响应完成时间,计算每个所述操作指令的所述操作时延。9.如权利要求7或8所述的方法,其特征在于,所述基于所述n个操作指令的指令类型以及n个操作时延,生成时延统计表,包括:根据所述n个操作指令的指令类型,将所述n个操作指令划分为多个指令组;每个所述指令组中包括所述n个操作指令中的同一类型的一个或多个操作指令;针对每个所述指令组中的操作指令的操作时延的时长,将每个所述指令组中的操作指令划分至预设的m个时延分布区间中,m为大于0的整数;针对每个所述指令组中的操作指令,统计落入所述m个时延分布区间中每个时延分布区间中的目标指令的个数x,生成所述时延统计表,x为大于0的整数。10.如权利要求9所述的方法,其特征在于,所述方法还包括:根据每个所述时延分布区间中的目标指令的访存数据量,将每个所述时延分布区间对应的x个所述目标指令,划分至预设的s个访存数据量分布区间中,s为大于0的整数;针对每个所述时延分布区间,统计落入所述s个数据量分布区间中每个数据量分布区间中的目标指令的个数,并记录在所述时延统计表中。11.如权利要求7-10任意一项所述的方法,其特征在于,所述方法还包括:将所述操作时延大于异常响应时延的所述操作指令确定为异常指令;所述异常响应时延为预设值;在所述时延统计表中记录所述异常指令的响应信息,所述响应信息中包括所述异常指令的所述接收时间,所述响应完成时间,所述访问数据量中的一种或多种。12.一种指令时延统计方法,其特征在于,应用于主机,所述方法包括:接收存储设备发送的时延统计表;所述统计时延表为所述存储设备基于接收到的n个操作指令的指令类型以及n个操作时延生成的,所述n个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;所述操作时延为所述存储设备从接收到操作指令到响应完成所产生的时延;n为大于0的整数;基于所述时延统计表定位所述主机或所述存储设备的响应异常点。13.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述权利要求7-11中任意一项所述的方法,或者实现上述权利要求12所述的方法。14.一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机或处理器执行时,使得所述计算机或处理器执行如权利要求7-11中任意一项所述的方法,或者执行如权利要求12所述的方法。
技术总结
本申请实施例公开了一种存储装置及相关指令时延统计方法,其特征在于,所述存储装置用于:接收主机发送的N个操作指令,所述N个操作指令的指令类型包括读数据指令、写数据指令,擦除数据指令中的一种或多种;N为大于0的整数;分别响应于所述N个操作指令,并记录所述N个操作指令中每个操作指令的操作时延,所述操作时延为所述存储装置从接收到操作指令到响应完成所产生的时延;基于所述N个操作指令的指令类型以及N个操作时延,生成时延统计表,所述时延统计表用于定位所述主机或所述存储装置的响应异常点。采用本申请实施例能够便于定位存储系统中的位异常部件,进而可对异常点进行调整,减少存储系统出现异常的概率。减少存储系统出现异常的概率。减少存储系统出现异常的概率。
技术研发人员:吴黎明 何江 张箭
受保护的技术使用者:华为技术有限公司
技术研发日:2022.03.16
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/