CN116627754A - 一种命令超时监控方法、存储设备、电子设备及存储介质 - Google Patents
一种命令超时监控方法、存储设备、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116627754A CN116627754A CN202310483817.8A CN202310483817A CN116627754A CN 116627754 A CN116627754 A CN 116627754A CN 202310483817 A CN202310483817 A CN 202310483817A CN 116627754 A CN116627754 A CN 116627754A
- Authority
- CN
- China
- Prior art keywords
- command
- node
- command node
- timeout
- index information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 121
- 238000000034 method Methods 0.000 title claims abstract description 99
- 238000012545 processing Methods 0.000 claims abstract description 179
- 230000008569 process Effects 0.000 claims abstract description 40
- 239000002243 precursor Substances 0.000 claims description 43
- 230000015654 memory Effects 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 12
- 230000009467 reduction Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 12
- 239000007787 solid Substances 0.000 description 7
- 230000002457 bidirectional effect Effects 0.000 description 4
- 230000001934 delay Effects 0.000 description 4
- 238000012806 monitoring device Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种命令超时监控方法、存储设备、电子设备及存储介质。本公开的至少一个实施例中,通过创建命令节点来记录待处理的命令的标识和时间戳,为监控命令提供依据,进而基于命令节点中记录的时间戳,将已创建的各命令节点按时间戳排序,可以确定时间戳最早的命令节点所对应命令,仅监控时间戳最早的命令节点对应命令的处理延时,根据命令的处理延时确定是否发生超时,代替对所有待处理命令独立监控,减少监控操作对命令处理过程引入的延时,提高监控效率。
Description
技术领域
本公开实施例涉及计算机技术领域,具体涉及一种命令超时监控方法、存储设备、电子设备及存储介质。
背景技术
随着硬盘技术的发展,固态硬盘(Solid State Disk,SSD)逐渐替代机械硬盘(Hard Disk Drive,HDD),以提升数据存储稳定性和数据读取效率。
SSD具有高吞吐量,多核,高并发等特点,因此,多线程独立的输入输出(InputOutput,IO)命令可能同时竞争固态硬盘上有限的资源。
由于SSD的缓存资源有限,如果多条独立命令无序地对固态硬盘的缓存资源进行竞争,可能出现有的命令一直抢占不到缓存资源,导致命令超时,进而导致主机系统超时。
发明内容
本公开的至少一个实施例提供了一种命令超时监控方法、存储设备、电子设备及存储介质,以解决主机系统超时的问题。
第一方面,本公开实施例提出一种命令超时监控方法,该方法包括:
获取待处理的命令,并确定获取命令时的时间戳;
创建命令节点,在命令节点中记录命令的标识和时间戳;
将已创建的各命令节点按时间戳排序;
监控时间戳最早的命令节点所对应命令,根据命令的处理延时确定是否发生超时。
在一些实施例中,所述监控时间戳最早的命令节点所对应命令,根据命令的处理延时确定是否发生超时,包括:
基于创建的每个命令节点中记录的时间戳,确定最早时间戳对应的命令节点为头部命令节点;
监控所述头部命令节点对应命令的处理延时,若所述处理延时大于或等于预设的处理延时阈值,则确定所述头部命令节点对应的命令超时。
在一些实施例中,所述命令节点中还记录有:所述命令节点的上一命令节点的索引信息以及所述命令节点的下一命令节点的索引信息;所述方法还包括:
基于处理完成的命令的标识,查找对应的目标命令节点;
删除所述目标命令节点,并调整所述目标命令节点的上一命令节点中记录的下一命令节点的索引信息,以及调整所述目标命令节点的下一命令节点中记录的上一命令节点的索引信息。
在一些实施例中,所述命令节点中记录的时间戳晚于所述命令节点的上一命令节点中记录的时间戳,且所述命令节点中记录的时间戳早于所述命令节点的下一命令节点中记录的时间戳;
所述基于创建的每个命令节点中记录的时间戳,确定最早时间戳对应的命令节点为头部命令节点,包括:将上一命令节点的索引信息为空的命令节点确定为头部命令节点。
在一些实施例中,所述创建命令节点包括:
在双向链表中创建命令节点,所述命令节点的上一命令节点的索引信息为指向前驱节点地址的指针,所述命令节点的下一命令节点的索引信息为指向后继节点地址的指针;
或者,在表格或数组中创建命令节点,从命令标识池中为所述命令分配目标标识,将所述目标标识作为所述命令节点的索引信息,所述命令节点的上一命令节点的索引信息为上一命令节点对应的命令标识,所述命令节点的下一命令节点的索引信息为下一命令节点对应的命令标识;
或者,在单向链表中创建命令节点,在所述命令节点中记录所述时间戳和所述命令节点的下一命令节点的索引信息,在哈希表中以所述命令的标识为键,以所述命令节点的上一命令节点的索引信息为值,构建索引所述命令节点的键值对。
在一些实施例中,所述方法还包括:创建命令处理任务和命令监控任务;
以第一频率调度所述命令处理任务,以使所述命令处理任务处理一个或多个命令;以第二频率调度所述命令监控任务,以使所述命令监控任务监控所述头部命令节点对应命令的处理延时;其中,所述第一频率高于所述第二频率。
在一些实施例中,所述方法还包括:
若任一命令由多个处理器协同处理,每个所述处理器处理所述命令的不同阶段任务,则处理所述命令的第一阶段任务的目标处理器创建所述命令对应的命令节点;所述目标处理器以所述第一频率调度所述目标处理器创建的命令处理任务,以使所述命令处理任务处理所述命令的第一阶段任务;
若所述命令的所有阶段任务均完成处理,则所述目标处理器删除所述命令对应的命令节点。
在一些实施例中,所述确定所述头部命令节点对应的命令超时后,所述方法还包括:降低对新命令的获取能力,直至所述头部命令节点对应的命令处理完成,且新的头部命令节点对应的命令不超时,则恢复对新命令的获取能力。
在一些实施例中,所述降低对新命令的获取能力包括:暂停获取新命令;或者,降低对新命令的获取能力的指标值、对资源申请进行排队和/或限流、降低资源的并发申请数量以及暂停获取部分新命令中的一种或多种组合。
在一些实施例中,所述恢复对新命令的获取能力包括:恢复获取新命令;或者,提升对新命令的获取能力的指标值、取消对资源申请的排队和/或限流、提升资源的并发申请数量以及恢复获取部分新命令中的一种或多种组合。
在一些实施例中,所述降低对新命令的获取能力之前,所述方法还包括:确定所述头部命令节点对应命令的目标超时等级;基于超时等级与降低策略之间的预设对应关系,确定所述目标超时等级对应的目标降低策略;
所述降低对新命令的获取能力,包括:基于所述目标降低策略降低对新命令的获取能力。
在一些实施例中,所述确定所述头部命令节点对应命令的目标超时等级包括:
若处理延时大于或等于预设时长,则确定目标超时等级为严重超时;
若处理延时小于所述预设时长且大于或等于所述处理延时阈值,则确定目标超时等级为非严重超时,其中,所述预设时长大于所述处理延时阈值;
所述基于超时等级与降低策略之间的预设对应关系,确定所述目标超时等级对应的目标降低策略包括:
若目标超时等级为严重超时,则对应的目标降低策略为:暂停获取新命令;
若目标超时等级为非严重超时,则对应的目标降低策略为:降低对新命令的获取能力的指标值、对资源申请进行排队和/或限流、降低资源的并发申请数量以及暂停获取部分新命令中的一种或多种组合。
第二方面,本公开实施例还提出一种命令超时监控装置,该装置包括:
获取单元,用于获取待处理的命令,并确定获取命令时的时间戳;
创建单元,用于创建命令节点,在命令节点中记录命令的标识和时间戳;
排序单元,用于将已创建的各命令节点按时间戳排序;
监控单元,用于监控时间戳最早的命令节点所对应命令,根据命令的处理延时确定是否发生超时。
第三方面,本公开实施例还提出一种电子设备,其中,包括存储器、处理器以及存储在所述存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现如第一方面所述命令超时监控方法的步骤。
第四方面,本公开实施例还提出一种存储设备,其中,控制部件与NVM芯片,所述控制部件执行如第一方面所述命令超时监控方法的步骤。
第五方面,本公开实施例还提出一种计算机可读存储介质,其中,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如第一方面所述命令超时监控方法的步骤。
第六方面,本公开实施例还提供一种计算机程序产品,其中,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,计算机的至少一个处理器从所述计算机可读存储介质中读取并执行该计算机程序,使得所述计算机执行如第一方面所述命令超时监控方法的步骤。
可见,本公开的至少一个实施例中,通过创建命令节点来记录待处理的命令的标识和时间戳,为监控命令提供依据,进而基于命令节点中记录的时间戳,将已创建的各命令节点按时间戳排序,可以确定时间戳最早的命令节点所对应命令,仅监控时间戳最早的命令节点对应命令的处理延时,根据命令的处理延时确定是否发生超时,代替对所有待处理命令独立监控,减少监控操作对命令处理过程引入的延时,提高监控效率。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为一种多处理器、多线程并发处理IO命令的场景示意图;
图2为本公开实施例提供的一种命令超时监控方法的流程示意图;
图3为本公开实施例提供的一种删除命令节点的流程示意图;
图4为本公开实施例提供的一种在表格中创建命令节点的示意图;
图5为本公开实施例提供的一种基于哈希表与单向链表创建命令节点的示意图;
图6为本公开实施例提供的另一种命令超时监控方法的流程示意图;
图7为本公开实施例提供的一种多处理器协同处理同一命令的场景下的命令超时监控方法流程;
图8为本公开实施例提供的一种降低对新命令的获取能力的流程示意图;
图9为本公开实施例提供的一种命令超时监控场景的示意图;
图10为本公开实施例提供的一种命令超时监控装置的示意图;
图11为本公开实施例提供的一种电子设备的示例性框图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不受限于在此阐述的那些顺序,而是除了必须以特定的顺序发生的操作之外,可如在理解本申请的公开之后将是清楚地那样被改变。此外,为了增加的清楚和简明,可省略在理解本申请的公开之后已知的特征的描述。
在此描述的特征可以以不同的形式来实现,而不应被解释为受限于在此描述的示例。相反,已提供在此描述的示例,以仅示出在理解本申请的公开之后将是清楚的实现在此描述的方法、设备和/或系统的许多可行方式中的一些可行方式。
在此使用的术语仅用于描述各种示例,并将不用于限制公开。除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。术语“包含”、“包括”和“具有”说明存在陈述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其它特征、数量、操作、构件、元件和/或它们的组合。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与基于本申请的公开的理解和本公开所属领域的普通技术人员通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如在通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文和本申请的公开中的含义一致的含义,并且不应被理想化或过于形式化地解释。在此关于示例或实施例的术语“可”的使用(例如,关于示例或实施例可包括或实现什么)表示存在包括或实现这样的特征的至少一个示例或实施例,而所有示例不限于此。
目前的解决方案通常是针对具体情况做针对性的处理,比如在设计之初就限制命令并发数量,或者进行资源申请的排队。但是在某些场景下,不容易实现资源申请的排队,或者限制并发很难兼顾各种应用场景对吞吐量的需求。
图1为一种多处理器(Central Processing Unit,CPU)、多线程并发处理IO命令的场景示意图,在图1中,主机(HOST)系统下发命令给固态硬盘,固态硬盘中包括两个处理器:CPU_X和CPU_Y,CPU_X获取待处理的命令记为cmd(command,命令)XA,cmd XB,cmd XC;CPU_Y获取待处理的命令记为cmd YM,cmd YN,cmd YP。CPU_X与CPU_Y并发地处理这些命令。CPU_X和CPU_Y处理命令时,均会申请固态硬盘的公共资源R,公共资源R包括内置SRAM(StaticRandom-Access Memory,静态随机存取存储器)和/或外置DDR(Double Data Rate,双倍速率同步动态随机存储器),内置SRAM和/或外置DDR共同为处理读命令的缓存资源。CPU_X和CPU_Y中的命令作为独立并发执行的任务,都有可能同时竞争申请公共资源R。作为举例,每个任务处理一个命令。
成功申请到公共资源R的任务能继续处理命令,在完成命令处理后,释放公共资源R。公共资源R被申请后,公共资源R减少或者消失,从而其他任务无法获得公共资源R而无法继续处理命令,因而会被挂起或等待执行,直到下次申请到公共资源R再继续处理命令。
之前成功申请到公共资源R的完成命令处理并释放公共资源R的任务会被调度来处理新的命令。当新的命令再被接收,处理新命令的任务与其他处理老命令的任务同时参与公共资源R的竞争,这里的“老命令“是指之前已经申请公共资源R失败被挂起的命令。假设处理新命令的任务和处理老命令的任务申请到公共资源R的概率相同,那么理论上有概率出现某一条老命令的任务一直申请不到公共资源R,从而导致该命令的处理超时。超时指在指定的时间内未完成对命令的处理。通常每个命令设置有自己的超时时间。
作为举例,命令是例如主机(HOST)系统发送给存储设备的NVMe(Non-VolatileMemory express,非易失性存储器规范)命令,或者其他基于主设备-从设备模型的命令处理系统中在主设备和从设备之间传递的命令。公共资源R是例如内存中的缓存单元、用于加速数据处理过程的硬件加速器等。
在高性能、高QoS(Quality of Service,服务质量)的命令处理系统中,有效地识别命令的处理超时较困难。以SSD为例,SSD并发处理数百到数千个命令(例如NVMe命令),从SSD收到命令到命令处理完成,每个命令的处理时间大约100us(量级),而超时时间大约1ms到1s(量级)。并且在高QoS的要求下,每个命令的处理时间基本上相同(在100us(量级)被处理完成)。因而,即使个别命令的处理延时增加十几us到几十us,对QoS的劣化也是明显的,并且不可接受。
然而,为了检测命令超时,需要记录每个命令记录开始被处理的时间。并且在命令处理过程中,时常(例如周期性地)比较系统当前时间与每个命令开始被处理的时间的差值,基于差值大于或等于为命令设置的超时时长来识别命令超时。由于存在数百到数千个命令需要识别是否超时,通常以存储设备中的表结构来记录这些命令的时间戳。对于DDR接口的存储设备,从存储设备中访问表结构的1个条目耗时大约十ns至几十ns,查询数百到数千个命令的表结构条目以找到其中可能超时的命令大约需要1us,而当超时检查需要周期性地检查时,则引入了进一步的处理延时。因而,相比于命令通常的处理延时(100us),超时检查可能为命令处理过程引入1%-10%的额外延时,这对高性能的存储设备来说是不可接受的。即使不惜硬件代价而使用芯片内部的高速存储器,所引入的额外延时也可能达到1%量级。
进一步地,识别出命令超时并非最终目的,存储设备的目的在于避免出现超时,特别是避免因公共资源不足或访问冲突所引起的个别命令的处理超时。而且命令处理过程中所争夺的公共资源不只一种,命令处理场景也多样化,因而在识别出超时后以提高超时命令的处理优先级方式,并不能完全解决因公共资源短缺等原因而引起的超时,因此亟需在复杂场景下或者能兼容多种场景的超时解决方案。
本公开实施例提供了一种命令超时监控方法、装置、电子设备或存储介质,通过创建命令节点来记录待处理的命令的标识和时间戳,为监控命令提供依据,进而基于命令节点中记录的时间戳,将已创建的各命令节点按时间戳排序,可以确定时间戳最早的命令节点所对应命令,仅监控时间戳最早的命令节点对应命令的处理延时,根据命令的处理延时确定是否发生超时,代替对所有待处理命令独立监控,减少监控操作对命令处理过程引入的延时,提高监控效率。
图2为本公开实施例提供的一种命令超时监控方法的流程示意图,该命令超时监控方法的执行主体为电子设备,电子设备包括但不限于存储设备(例如固态硬盘、闪存设备等)、智能手机、掌上电脑、平板电脑、带显示屏的可穿戴设备、台式机、笔记本电脑、一体机、智能家居设备、服务器等,其中,服务器可以是独立的服务器,也可以是多个服务器的集群,可以包括搭建在本地的服务器和架设在云端的服务器。
如图2所示,该命令超时监控方法可以包括但不限于步骤201至步骤204:
在步骤201中,获取待处理的命令,并确定获取命令时的时间戳。
本实施例中,待处理的命令可以是任意命令,例如,输入输出(Input Output,IO)命令。以存储设备为例,存储设备在获取主机提供的待处理的IO命令的同时,基于当前时间为待处理的IO命令生成时间戳,将该时间戳作为处理IO命令的起始时刻,后续用于确定IO命令处理是否超时。
在步骤202中,创建命令节点,在命令节点中记录命令的标识和时间戳。
本实施例中,命令节点可以理解为用于记录命令相关信息的最小存储单元,其中,命令相关信息包括命令的标识(Identity document,ID)和处理命令的起始时刻(即步骤201中确定的获取命令时的时间戳)。其中,命令的标识用于命令处理完成时,可以在创建的多个命令节点中查找该命令对应的命令节点;命令的标识还用于后续确定命令超时后,可以基于超时命令对应的命令节点中记录的命令的标识,识别出是哪个命令超时;命令的标识还用于超时命令被处理完成后,查找到对应的命令节点以便删除该命令节点。
以存储设备为例,存储设备创建命令节点,在命令节点中记录IO命令的标识和时间戳,存储设备可以在双向链表,单向链表,或者,数组或表格中创建命令节点,在不同对象(双向链表,单向链表,或者,数组或表格)中创建命令节点,命令节点的具体实现方式不同,将在下文中具体描述。
在步骤203中,将已创建的各命令节点按时间戳排序。
本实施例中,基于已创建的各命令节点中记录的时间戳,可以实现按时间戳对各命令节点进行排序,需要说明的是,排序并不一定进行排列,也即,无需调整各命令节点之间的相对位置,只需要找出时间戳最早的命令节点用于后续命令超时监控即可。在一些实施例中,也可以按时间戳先后顺序,调整各命令节点的相对位置,便于后续进行命令超时监控时,直接获取排在第一位的命令节点作为时间戳最早的命令节点。具体采用何种方式进行排序,本领域技术人员可以基于实际需要进行设置,本实施例不做具体限定。
在步骤204中,监控时间戳最早的命令节点所对应命令,根据命令的处理延时确定是否发生超时。
本实施例中,经过步骤203的排序后,可以确定时间戳最早的命令节点,也即,该命令节点对应的命令是具有最大处理延时的命令,因此,只需要监控时间戳最早的命令节点对应的命令的处理延时,根据命令的处理延时确定是否发生超时,无需监控其他命令节点对应的命令的处理延时,即可判断当前整个系统中是否存在处理超时的命令,代替对所有待处理命令独立监控,减少监控操作对命令处理过程引入的延时,提高监控效率。
在上述实施例的基础上,图1的步骤204中“监控时间戳最早的命令节点所对应命令,根据命令的处理延时确定是否发生超时”,包括如下步骤:
基于创建的每个命令节点中记录的时间戳,确定最早时间戳对应的命令节点为头部命令节点;监控头部命令节点对应命令的处理延时,若处理延时大于或等于预设的处理延时阈值,则确定头部命令节点对应的命令超时。
本实施例中,为了便于在创建多个命令节点的场景下监控这些命令节点,利用每个命令节点中记录的时间戳,可以对这些命令节点进行排序,得到头部命令节点,也即头部命令节点中记录的时间戳为最早时间戳,其他命令节点中记录的时间戳均晚于头部命令节点中记录的时间戳。
以存储设备为例,存储设备基于创建的多个命令节点中记录的时间戳,可以确定最早时间戳对应的命令节点确定为头部命令节点,头部命令节点对应的命令为最早获取的命令。
本实施例中,在确定头部命令节点后,由于头部命令节点是已创建的所有命令节点中记录最早时间戳的节点,也即,头部命令节点对应的命令是具有最大处理延时的命令,因此,只需要监控头部命令节点对应的命令的处理延时,无需监控其他命令节点对应的命令的处理延时,即可判断当前整个系统中是否存在处理超时的命令,具体地,通过设置的处理延时阈值,当头部命令节点对应命令的处理延时大于或等于处理延时阈值,则确定头部命令节点对应的命令超时;当头部命令节点对应命令的处理延时小于处理延时阈值,则确定头部命令节点对应的命令不超时。在处理延时最大的命令都不超时的情况下,其他命令也不会超时。
以存储设备为例,存储设备监控针对的是主机发送的IO命令的处理延时,由于主机对于IO命令超时的限制在3s至30s范围内基于需要动态设置,因此,处理延时阈值在1s至10s范围内基于主机对于IO命令超时的设置而设置为秒级别的阈值,例如,处理延时阈值可以设置为3s。为了防止IO命令出现30s以上的处理延时,存储设备若监控到头部命令节点对应的IO命令的处理延时大于或等于处理延时阈值(例如3s),说明当前整个系统中的公共资源可能短缺,为了应对这种短缺,可以降低对新命令的获取能力,从而减少新命令对公共资源的竞争,提高优先处理超时命令的概率,其中,降低对新命令的获取能力的具体方式将在下文中具体描述。
此外,若存储设备中具有多个处理器,则每个处理器维护自己创建的命令节点,也即,每个处理器监控自己创建的头部命令节点对应命令的处理延时,相互独立,互不干扰。若任一处理器监控到自己创建的头部命令节点对应的命令超时,则可以确定整个系统(即整个存储设备)命令超时。
可见,本实施例中通过创建命令节点来记录待处理的命令的标识和时间戳,为监控命令提供依据,进而基于命令节点中记录的时间戳,可以确定多个命令节点中的头部命令节点,仅监控头部命令节点(时间复杂度为O(1))对应命令的处理延时,代替对所有待处理命令独立监控(时间复杂度为O(N),N为节点数量),减少监控操作对命令处理过程引入的延时,提高监控效率,当头部命令节点对应命令的处理延时大于或等于预设的处理延时阈值,则确定头部命令节点对应的命令超时,也即可以确定整个系统命令超时。可以避免出现在竞争机制下有的命令一直无法得到处理而导致过度超时的情况。
在上述实施例的基础上,为了提升命令节点的维护效率,包括新增和/或删除命令节点的效率,命令节点中还记录有:命令节点的上一命令节点的索引信息以及命令节点的下一命令节点的索引信息。其中,上一命令节点的索引信息便于快速索引到上一命令节点,下一命令节点的索引信息便于快速索引到下一命令节点。
相应地,命令超时监控方法还包括如图3所示的删除命令节点的流程,包括如下步骤301和步骤302:
在步骤301中,基于处理完成的命令的标识,查找对应的目标命令节点。
本实施例中,当任一命令处理完成,则应当删除该命令对应的命令节点,由于命令节点中记录有命令的标识,因此,基于处理完成的命令的标识,可以从多个命令节点中查找对应的目标命令节点。以存储设备为例,存储设备基于处理完成的IO命令的标识,从创建的多个命令节点中查找对应的目标命令节点。
在步骤302中,删除目标命令节点,并调整目标命令节点的上一命令节点中记录的下一命令节点的索引信息,以及调整目标命令节点的下一命令节点中记录的上一命令节点的索引信息。
本实施例中,目标命令节点的上一命令节点中记录的下一命令节点的索引信息用于索引目标命令节点,删除目标命令节点后,需要将上一命令节点中记录的下一命令节点的索引信息调整为用于索引目标命令节点的下一命令节点的索引信息;同理,目标命令节点的下一命令节点中记录的上一命令节点的索引信息用于索引目标命令节点,删除目标命令节点后,需要将目标命令节点的下一命令节点中记录的上一命令节点的索引信息调整为用于索引目标命令节点的上一命令节点的索引信息。
以存储设备为例,待删除的目标命令节点记为A、A的上一命令节点记为B,A的下一命令节点记为C,则存储设备删除A,并将B中记录的下一命令节点的索引信息调整为用于索引C的索引信息,以及将C中记录的上一命令节点的索引信息调整为用于索引B的索引信息。
可见,通过调整目标命令节点的上一命令节点中记录的下一命令节点的索引信息,以及调整目标命令节点的下一命令节点中记录的上一命令节点的索引信息,可以提升命令节点的维护效率,无需在删除命令节点后,对剩余的所有命令节点重新排序。
在一些实施例中,命令节点中记录的时间戳晚于命令节点的上一命令节点中记录的时间戳,且命令节点中记录的时间戳早于命令节点的下一命令节点中记录的时间戳。可见,通过命令节点中记录的时间戳、命令节点的上一命令节点的索引信息以及命令节点的下一命令节点的索引信息,可以实现命令节点的排序,因此,基于创建的每个命令节点中记录的时间戳,确定最早时间戳对应的命令节点为头部命令节点的一种实施方式为:将上一命令节点的索引信息为空的命令节点确定为头部命令节点;另一种实施方式为:将多个命令节点依照时间戳先后顺序进行排序,并按照排序顺序存储这多个命令节点,排在第一位的命令节点确定为头部命令节点。
在上述实施例的基础上,图1的步骤202中“创建命令节点”有不同的实施方式,以下做具体介绍:
实施方式一
在一些实施例中,图1的步骤202中“创建命令节点”包括:
在双向链表中创建命令节点,命令节点的上一命令节点的索引信息为指向前驱节点地址的指针,所述命令节点的下一命令节点的索引信息为指向后继节点地址的指针。
本实施例中,利用双向链表来记录获取命令时的时间戳,双向链表是排序链表,双向链表中的命令节点依据其记录的时间戳的值排序,因此,双向链表具有头部和尾部,具有越早时间戳的命令节点,在双向链表中的位置越靠近头部。双向链表中还包括头部指针和尾部指针,头部指针指向头部命令节点,也即,指向最早获取的命令对应的命令节点,头部命令节点中指向前驱节点地址的指针为空;尾部指针指向尾部命令节点,也即,指向最晚获取的命令对应的命令节点,尾部命令节点中指向后继节点地址的指针为空。因此,基于创建的每个命令节点中记录的时间戳,确定最早时间戳对应的命令节点为头部命令节点的一种实施方式为:将头部指针指向的命令节点确定为头部命令节点。
以存储设备为例,存储设备获取主机提供的待处理的IO命令时,基于当前时间生成时间戳,并在双向链表中创建命令节点,命令节点中记录有IO命令的标识、时间戳、前驱节点地址的指针和后继节点地址的指针,并且由双向链表的头部指针指向头部命令节点,尾部指针指向尾部命令节点。存储设备每次新创建一个命令节点,由于该命令节点记录的时间戳晚于已经入表的命令节点记录的时间戳,所以,将新创建的命令节点添加到双向链表的尾部,可见,在双向链表中添加新创建的命令节点的时间复杂度是O(1),而单向链表中每个节点中仅记录后继节点地址指针,因此,向单向链表中添加节点时,需要从头遍历定位到该节点的前驱节点,所以,在单向链表中添加节点的时间复杂度是O(N),N为链表长度,相比于单向链表,双向链表能够降低添加命令节点引入的延时。
此外,由于双向链表中的每个命令节点中都记录有前驱节点地址的指针和后继节点地址指针,所以,从双向链表中的任一个命令节点开始,都可以快速访问该命令节点的前驱节点和后继节点,对于指定的命令节点,基于该命令节点记录的指向前驱节点地址的指针,可以快速确定前驱节点;基于该命令节点记录的指向后继节点地址的指针,可以快速确定后继节点。
当任一IO命令处理完成,则应当删除该IO命令对应的命令节点,由于命令节点中记录有IO命令的标识,因此,基于处理完成的IO命令的标识,可以从双向链表记录的多个命令节点中查找对应的目标命令节点,进而将目标命令节点从双向链表中删除,并调整目标命令节点在双向链表中的相邻节点的指针,具体地,将目标命令节点的前驱节点中记录的指向后继节点地址的指针调整为指向目标命令节点的后继节点;同理,将目标命令节点的后继节点中记录的指向前驱节点地址的指针调整为指向目标命令节点的前驱节点。可见,从双向链表中查找并删除目标命令节点的时间复杂度是O(N),N为链表长度,但删除操作发生在IO命令处理完成后,因而删除操作不会增加IO命令的处理延时。由于双向链表是排序链表,虽然存储设备是乱序处理IO命令,并不能保证处理完成的IO命令所对应的命令节点总是位于双向链表的头部,但是,处理完成的IO命令大概率位于靠近头部的位置,因而,在从双向链表中删除命令节点时,从链表的头部开始查找所需要删除的命令节点,可以提高命令节点删除操作的处理延时(其时间复杂度小于O(N/2)),相比于O(N)能够减少一半。
实施方式二
在一些实施例中,图1的步骤202中“创建命令节点”包括:
在表格或数组中创建命令节点,从命令标识池中为命令分配目标标识,将目标标识作为命令节点的索引信息,命令节点的上一命令节点的索引信息为上一命令节点对应的命令标识,命令节点的下一命令节点的索引信息为下一命令节点对应的命令标识。
本实施例中,考虑到命令数量通常在数百至数千量级,而并发处理的命令数量有限,因此,通过命令标识池限定并发处理的命令数量,只有在命令标识池中申请到命令标识的命令才会被处理。
在一些实施例中,除了在表格或数组中创建命令节点,还在表格或数据中维护头部索引和尾部索引,头部索引指向最早获取的命令对应的命令节点,尾部索引指向最晚获取的命令对应的命令节点。当获取到新命令,为新命令分配了目标命令标识后,基于表格或数组的尾部索引获取当前的尾部节点,将当前的尾部节点记录的下一命令节点对应的命令标识调整为目标命令标识,并将新命令对应的命令节点记录的上一命令节点对应的命令标识调整为当前的尾部节点的命令标识,且将尾部索引调整为新命令的命令标识,新增命令节点的时间复杂度为O(1),相比直接在单向链表中新增节点的时间复杂度为O(N),本实施例可以降低新增命令节点的延时。
在一些实施例中,若某一命令被分配命令标识,当该命令被处理完成,则将该命令的命令标识释放,被释放的命令标识能够被分配给其他命令,从而确保并发处理的命令各自具有唯一命令标识,所以命令标识可以作为索引信息用于索引上一命令节点或下一命令节点。
在一些实施例中,若某一命令被分配命令标识,当该命令被处理完成,则获取该命令的命令标识,基于命令标识查找表格或数组中待删除的命令节点,基于待删除的命令节点中记录的上一命令节点对应的命令标识,获取上一命令节点,将上一命令节点中记录的下一命令节点对应的命令标识调整为待删除的命令节点的下一命令节点对应的命令标识;同理,基于待删除的命令节点中记录的下一命令节点对应的命令标识,获取下一命令节点,将下一命令节点中记录的上一命令节点对应的命令标识调整为待删除的命令节点的上一命令节点对应的命令标识。删除命令节点后,将该命令节点标记为空(NULL)。若待删除的命令节点中记录的上一命令节点为空(NULL)或待删除的命令节点为头部索引指向的节点,则确定待删除的命令节点为头部命令节点,将头部命令节点的下一命令节点中记录的上一命令节点对应的命令标识标记为空(NULL),将头部索引调整为指向待删除的命令节点的下一命令节点,并将待删除的命令节点删除后标记为空(NULL)。若待删除的命令节点中记录的下一命令节点为空(NULL)或待删除的命令节点为尾部索引指向的节点,则确定待删除的命令节点为尾部命令节点,将尾部命令节点的上一命令节点中记录的下一命令节点对应的命令标识标记为空(NULL),将尾部索引指向待删除的命令节点的上一命令节点,并将待删除的命令节点删除后标记为空(NULL)。本实施例利用命令的标识查找并删除命令节点的时间复杂度为O(1),相比从双向链表中查找并删除命令节点的时间复杂度是O(N),本实施例可以降低删除命令节点的延时。
图4为本公开实施例提供的一种在表格中创建命令节点的示意图,在图4中,若待处理的命令共有8个,从命令标识池中为这8个命令分配标识,被分配的标识记为ID(0)至ID(7)。在表格中创建这8个命令对应的命令节点,将分配的标识作为命令节点的索引信息,每个命令节点中记录有命令标识、上一命令节点(即前驱节点)的索引信息(即前驱节点ID)、下一命令节点(即后继节点)的索引信息(即后继节点ID)以及时间戳。若ID(2)对应的命令为最晚获取的命令,则ID(2)索引的命令节点为尾部命令节点,尾部索引(记为Tail)指向ID(2),因此其记录的后继节点ID为空(NULL)。若ID(5)对应的命令为最早获取的命令,则ID(5)索引的命令节点为头部命令节点,头部索引(记为Head)指向ID(5),因此其记录的前驱节点ID为空(NULL)。在图4中,ID(4)和ID(6)对应的命令处理完成,所以将ID(4)和ID(6)索引的命令节点删除后标记为空(NULL),并将ID(4)和ID(6)释放以分配给其他命令。
实施方式三
在一些实施例中,图1的步骤202中“创建命令节点”包括:
在单向链表中创建命令节点,在命令节点中记录时间戳和命令节点的下一命令节点的索引信息,在哈希表中以命令的标识为键,以命令节点的上一命令节点的索引信息为值,构建索引命令节点的键值对。
本实施例中,将单向链表和哈希表结合,替代双向链表,具体地,由于单向链表中每个命令节点只能记录下一命令节点的索引信息,因此,通过哈希表记录命令节点的上一命令节点的索引信息,且为了将哈希表与单向链表相关联,在哈希表中将命令节点对应的命令的标识记录在哈希表中作为键,命令节点的上一命令节点的索引信息在哈希表中作为值,构建索引命令节点的键值对。对哈希表的查询操作的时间复杂度为O(1),而单向链表中每个节点中仅记录后继节点地址指针,因此,从单向链表中查找或者删除目标节点时,需要从头遍历定位到目标节点的前驱节点,所以,在单向链表中查找或者删除节点的时间复杂度是O(N),N为链表长度,因此,将哈希表与单向链表结合,能够降低查找或者删除节点的延时。
在一些实施例中,除了在单向链表中创建命令节点,还在单向链表中维护头部索引和尾部索引,头部索引指向最早获取的命令对应的命令节点,尾部索引指向最晚获取的命令对应的命令节点。当获取到新命令,为该新命令分配了命令标识后创建对应的目标命令节点,基于尾部索引获取当前的尾部节点,将当前的尾部节点记录的后继节点的索引信息调整为目标命令节点的索引信息;以及,在哈希表中用分配的命令标识为键、以当前的尾部节点的索引信息为值,构建索引该新命令对应的命令节点的键值对;以及,将尾部索引调整为指向新命令对应的命令节点,可见,新增命令节点的时间复杂度为O(1),相比直接在单向链表中新增节点的时间复杂度为O(N),本实施例可以降低新增命令节点的延时。
在一些实施例中,若某一命令被处理完成,则获取该命令的命令标识,基于命令标识查询哈希表,得到待删除的命令节点的前驱节点的索引信息;进而基于前驱节点的索引信息,从单向链表中获取待删除的命令节点的前驱节点,基于前驱节点中记录的后继节点的索引信息,从单向链表中获取待删除的命令节点;将前驱节点中记录的后继节点的索引信息调整为待删除的命令节点中记录的后继节点的索引信息;同理,基于待删除的命令节点中记录的后继节点的索引信息,获取后继节点,将后继节点中记录的前驱节点的索引信息调整为待删除的命令节点中记录的前驱节点的索引信息。删除命令节点后,将该命令节点标记为空(NULL),以及,在哈希表中将该命令节点对应的条目(包括命令标识和前驱节点的索引信息)删除后标记为空(NULL)。若待删除的命令节点在哈希表中对应的条目中记录的前驱节点为空(NULL),则确定待删除的命令节点为单向链表的头部命令节点,则基于单向链表的头部索引获取头部命令节点作为待删除的命令节点,将头部命令节点的后继节点在哈希表中对应的条目中记录的前驱节点的索引信息标记为空(NULL),将头部索引调整为指向待删除的命令节点的后继节点,并将待删除的命令节点删除后标记为空(NULL)。若待删除的命令节点中记录的后继节点的索引信息为空(NULL),则确定待删除的命令节点为单向链表中的尾部命令节点,基于待删除的命令节点在哈希表中对应的条码中记录的前驱节点的索引信息,获取前驱节点,将单向链表的尾部索引调整为指向该前驱节点,且将前驱节点中记录的后继节点的索引信息标记为空(NULL)。删除命令节点的时间复杂度为O(1),相比从双向链表中查找并删除命令节点的时间复杂度是O(N),本实施例可以降低删除命令节点的延时。
图5为本公开实施例提供的一种基于哈希表与单向链表创建命令节点的示意图,在图5中,在单向链表中创建的命令节点共6个,记为节点1、节点2、节点3、节点5、节点7和节点10,其中,节点1为头部命令节点,单向链表的头部索引(记为Head)指向节点1,节点10为尾部命令节点,单向链表的尾部索引(记为Tail)指向节点10。每个命令节点中记录时间戳和下一命令节点的索引信息,例如,节点1中记录的下一命令节点的索引信息指向节点2,在图5中体现为节点1指向节点2的单向箭头。在哈希表中以命令的标识为键,以命令节点的上一命令节点(即前驱节点)的索引信息为值,构建索引命令节点的键值对,例如,图5中,Hash(5)为节点5对应的命令的标识,Hash(5)在哈希表中作为键,其对应的值为节点5的前驱节点(即节点3)索引,也即,节点5的前驱节点索引指向节点3,在图5中体现为Hash(5)对应的前驱节点索引指向节点3的单向箭头。Hash(3)为节点3对应的命令的标识,Hash(3)在哈希表中作为键,其对应的值为节点3的前驱节点(即节点2)索引,也即,节点3的前驱节点索引指向节点2,在图5中体现为Hash(3)对应的前驱节点索引指向节点2的单向箭头。Hash(1)为节点1对应的命令的标识,Hash(1)在哈希表中作为键,其对应的值为节点1的前驱节点索引,由于节点1为头部命令节点,因此,节点1的前驱节点索引为空(NULL)。Hash(10)为节点10对应的命令的标识,Hash(10)在哈希表中作为键,其对应的值为节点10的前驱节点(即节点7)索引,也即,节点10的前驱节点索引指向节点7,在图5中体现为Hash(10)对应的前驱节点索引指向节点7的单向箭头。Hash(7)为节点7对应的命令的标识,Hash(7)在哈希表中作为键,其对应的值为节点7的前驱节点(即节点5)索引,也即,节点7的前驱节点索引指向节点5,在图5中体现为Hash(7)对应的前驱节点索引指向节点5的单向箭头。Hash(2)为节点2对应的命令的标识,Hash(2)在哈希表中作为键,其对应的值为节点2的前驱节点(即节点1)索引,也即,节点2的前驱节点索引指向节点1,在图5中体现为Hash(2)对应的前驱节点索引指向节点1的单向箭头。
在上述实施例的基础上,命令超时监控方法还包括图6所示的步骤601和步骤602:
在步骤601中,创建命令处理任务和命令监控任务。
本实施例中,命令处理任务和命令监控任务是相对独立的任务,互不干扰,命令处理任务用于对待处理命令进行处理,而命令监控任务则是监控头部命令节点对应命令的处理延时。
在步骤602中,以第一频率调度命令处理任务,以使命令处理任务处理一个或多个命令;以第二频率调度命令监控任务,以使命令监控任务监控头部命令节点对应命令的处理延时;其中,第一频率高于第二频率。
本实施例中,由于命令监控任务仅需要监控一个命令节点(即头部命令节点),其时间复杂度为O(1),因此不会对命令处理过程引入明显的延时,即使多次调度命令监控任务,例如,每100us调度一次,其引入的延时也是可接受的,不会显著增加命令处理延时。为了降低命令超时监控对命令处理的干扰,以相对较高的第一频率调度命令处理任务,而以相对较低的第二频率调度命令监控任务。
本实施例中,当命令监控任务确定头部命令节点对应的命令超时,由命令监控任务降低处理器对新命令的获取能力,其中,处理器是创建命令监控任务和命令处理任务的处理器。命令监控任务基于处理超时的命令处理完成且不存在其他超时命令后,命令监控任务恢复处理器对新命令的获取能力。
以存储设备为例,若存储设备包括多个处理器,则每个处理器相互独立地维护自己创建的命令节点,且每个处理器相互独立地调度自己创建的命令处理任务和命令监控任务。
在上述实施例的基础上,图7为本公开实施例提供的一种多处理器协同处理同一命令的场景下的命令超时监控方法流程,包括如下步骤701至步骤703:
在步骤701中,若任一命令由多个处理器协同处理,每个处理器处理命令的不同阶段任务,则处理命令的第一阶段任务的目标处理器创建命令对应的命令节点。
本实施例中,多个处理器处于同一系统中,构成多核系统,多核系统中的多个处理器可以协同处理同一命令的不同阶段任务,将处理命令的第一阶段任务的目标处理器作为监控命令的处理器,而其他处理器则不监控该命令,提升监控效率,降低系统的整体工作负担。
以存储设备为例,存储设备包括多个处理器,每个处理器相互独立地维护自己创建的命令节点,对于任一处理器而言,当该处理器获取主机提供的待处理的IO命令时,创建命令节点,创建的命令节点只由该处理器维护,其他处理器不可访问该命令节点。
在步骤702中,目标处理器以第一频率调度目标处理器创建的命令处理任务,以使命令处理任务处理命令的第一阶段任务。
本实施例中,多个处理器对命令的监控相对独立,也即,每个处理器维护自己创建的命令节点,每个处理器创建自己的命令处理任务和命令监控任务。当同一命令由多个处理器协同处理,则监控该命令的目标处理器以较高频率的第一频率调度自己创建的命令处理任务,以使命令处理任务处理命令的第一阶段任务;而目标处理器以较低频率的第二频率调度自己创建的命令监控任务,以使命令监控任务监控目标处理器创建的头部命令节点对应命令的处理延时。
当命令的第一阶段任务处理完成,则目标处理器通知处理命令的第二阶段任务的处理器对该命令进行第二阶段任务处理,处理命令的第二阶段任务的处理器完成第二阶段任务处理后,通知处理命令的第三阶段任务的处理器对该命令进行第三阶段任务处理,……,依次类推,直至命令的最后阶段任务处理完成。
在步骤703中,若命令的所有阶段任务均完成处理,则目标处理器删除命令对应的命令节点。
可见,本实施例中,对于多个处理器协同处理的同一命令,由处理该命令的第一阶段任务的目标处理器创建该命令对应的命令节点,通过监控该命令对应的命令节点,实现对该命令的监控,而其他的处理则不用监控该命令,提升整个系统的监控效率。
在上述实施例的基础上,确定头部命令节点对应的命令超时后,命令超时监控方法还包括如下步骤:
降低对新命令的获取能力,直至头部命令节点对应的命令处理完成,且新的头部命令节点对应的命令不超时,则恢复对新命令的获取能力。
本实施例中,当监控到命令超时,则降低对新命令的获取能力,但不停止对已获取的命令的处理,从而缓解因降低对新命令的获取能力而引起的命令处理性能的抖动,提升服务质量(Quality of Service,QoS),随着已获取的命令被逐步处理,使得更多的公共资源被释放,逐步缓解公共资源短缺的问题,以便有更大概率获得公共资源以处理超时命令,从而解决或缓解因公共资源短缺而引起的命令无法被处理或处理超时的问题。
本实施例中,当超时命令处理完成后,删除超时命令对应的命令节点,并更新头部命令节点,若新的头部命令节点对应的命令不超时,说明已解决公共资源短缺的问题,则恢复对新命令的获取能力。
在一些实施例中,若多个处理器处于同一系统中,每个处理器相互独立地维护自己创建的命令节点,则目标处理器降低新命令的获取能力后,整个系统中其他处理器都降低新命令的获取能力,以便目标处理器有更大概率获得公共资源以处理超时命令。
在一些实施例中,降低对新命令的获取能力包括:暂停获取新命令。
本实施例中,当监控到命令超时,则直接暂停获取新命令,直至超时命令处理完成,删除超时命令对应的命令节点,并更新头部命令节点,若新的头部命令节点对应的命令不超时,则恢复对新命令的获取能力。
在一些实施例中,降低对新命令的获取能力包括:降低对新命令的获取能力的指标值、对资源申请进行排队和/或限流、降低资源的并发申请数量以及暂停获取部分新命令中的一种或多种组合。
本实施例中,当监控到命令超时,并非直接暂停获取新命令,而是降低对新命令的获取能力的指标值,获取能力的指标包括:获取新命令的速率或者带宽,随着已获取的命令被逐步处理,逐步缓解整个系统的负载(即处理的命令数量),使得更多的公共资源被释放,逐步缓解公共资源短缺的问题。本实施例中,还可以对资源申请进行排队,例如,将所有资源申请请求纳入单向列表,排队依次申请资源,排队优先已超时命令对资源申请,且可以限制排队队列的长度,优先已获取的命令的排队,而减少新命令的排队,实现间接降低对新命令的获取能力。本实施例中,还可以对资源申请进行限流,以使超时命令优先对资源申请,实现间接降低对新命令的获取能力。本实施例中,还可以降低资源的并发申请数量,实现间接降低对新命令的获取能力。
本实施例中,当监控到命令超时,还可以暂停获取部分新命令,例如,配置预设类型或预设比例的命令在存在超时命令时停止获取,当存在超时命令,则预设类型或预设比例的命令被过滤掉。例如,配置写类型的IO命令在存在超时命令时停止获取,当存在超时命令,则过滤写类型的IO命令,但可以获取读类型的IO命令,更一进步地,可以采用上述一种或多种降低获取能力的方式来获取读类型的IO命令。又例如配置60%的命令在存在超时命令时停止获取,当存在超时命令,则接收到命令数量中有60%的命令被过滤掉,而对于获取的40%的命令可以采用上述一种或多种降低获取能力的方式来获取。另外,还可以按照与预设类型结合预设比例来过滤接收的命令,如,读写命令的比例为40%和60%,则可以从60%的写命令中过滤掉一部分命令,也就是仅接收全部读命令,以及筛选后的其余写命令。
在一些实施例中,恢复对新命令的获取能力包括:恢复获取新命令。
本实施例中,当监控到命令超时,则直接暂停获取新命令,直至超时命令处理完成,删除超时命令对应的命令节点,并更新头部命令节点,若新的头部命令节点对应的命令不超时,则直接恢复获取新命令。
在一些实施例中,恢复对新命令的获取能力包括:提升对新命令的获取能力的指标值、取消对资源申请的排队和/或限流、提升资源的并发申请数量以及恢复获取部分新命令中的一种或多种组合。
本实施例中,当监控到命令超时,若降低对新命令的获取能力的指标值,获取能力的指标包括:获取新命令的速率或者带宽,则当恢复对新命令的获取能力时,提升对新命令的获取能力的指标值。本实施例中,当监控到命令超时,若对资源申请进行排队和/或限流,则当恢复对新命令的获取能力时,取消对资源申请的排队和/或限流。本实施例中,当监控到命令超时,若降低资源的并发申请数量,则当恢复对新命令的获取能力时,提升资源的并发申请数量。本实施例中,当监控到命令超时,若暂停获取部分新命令,则当恢复对新命令的获取能力时,恢复获取部分新命令。可见,本实施例中,恢复新命令的获取能力并非直接恢复,而是采用逐步恢复的方式,降低系统对新命令的获取能力的抖动,从而降低对系统的服务质量(QoS)的影响。
可见,无论采用哪种方式恢复对新命令的获取能力,都无需关注公共资源的具体使用情况,适用于各种复杂场景下,例如难以排队或者限流的场景下,解决命令超时问题。
图8为本公开实施例提供的一种降低对新命令的获取能力的流程示意图,如图8所示,包括如下步骤801至步骤803:
在步骤801中,确定头部命令节点对应命令的目标超时等级。
本实施例中,基于超时命令的处理时延划分不同的超时等级,其中,超时命令的处理时延为超时命令对应的命令节点中记录的时间戳与当前时间戳之间的时长。作为一个示例,若处理时延大于或等于预设时长,则确定目标超时等级为严重超时;若处理时延小于预设时长且大于或等于处理延时阈值,则确定目标超时等级为非严重超时,其中,预设时长大于处理延时阈值,处理延时阈值用于确定命令是否超时,具体地,当命令的处理延时大于或等于处理延时阈值,则确定命令超时。
在步骤802中,基于超时等级与降低策略之间的预设对应关系,确定目标超时等级对应的目标降低策略。
本实施例中,针对不同的超时等级,预先配置不同的降低策略,得到超时等级与降低策略之间的预设对应关系,当确定头部命令节点对应命令的目标超时等级后,可以基于该预设对应关系,确定目标超时等级对应的目标降低策略。作为一个示例,若目标超时等级为严重超时,则对应的目标降低策略为:暂停获取新命令。若目标超时等级为非严重超时,则对应的目标降低策略为:降低对新命令的获取能力的指标值、对资源申请进行排队和/或限流、降低资源的并发申请数量以及暂停获取部分新命令中的一种或多种组合。
在步骤803中,基于目标降低策略降低对新命令的获取能力。
本实施例中,若目标降低策略为暂停获取新命令,则直接暂停获取新命令;若目标降低策略为:降低对新命令的获取能力的指标值、对资源申请进行排队和/或限流、降低资源的并发申请数量以及暂停获取部分新命令中的一种或多种组合,则执行相应的降低策略降低新命令的获取能力。
在一些实施例中,可以基于实际需要划分不同的超时等级,并针对每个超时等级配置相应的降低策略,例如,超时100us、超时500us、超时2ms、超时10ms作为超时分级的切分点,得到五个超时等级,基于实际需要配置这五个超时等级各自对应的降低策略。需要说明的是,本实施例不限定超时等级的具体划分方式,也不限定每个超时等级对应的降低策略。
在上述实施例的基础上,图9为本公开实施例提供的一种命令超时监控场景的示意图,该命令超时监控场景是在图1所示场景下的命令超时监控场景,在图9中,整个系统包括两个处理器(CPU_X和CPU_Y),这两个处理器分别执行前述的命令超时监控方法以实现对各自所要处理的命令的监控,并且这两个处理器分别维护各自创建的命令节点。
在图9中,若CPU_X依次获取了待处理的三个命令:cmd XA、cmd XB和cmd XC,则CPU_X为这三个命令分别创建命令节点,命令节点中记录有命令的标识、获取命令时的时间戳、命令节点的上一命令节点的索引信息以及命令节点的下一命令节点的索引信息。例如,cmd XA对应的命令节点中记录有cmd XA的标识、获取cmd XA时的时间戳、上一命令节点的索引信息和下一命令节点的索引信息,由于cmd XA是最早获取的命令,因此cmd XA对应的命令节点为头部命令节点(记为Head),上一命令节点的索引信息为空,下一命令节点的索引信息指向cmd XB对应的命令节点。cmd XB对应的命令节点中记录有cmd XB的标识、获取cmd XB时的时间戳、上一命令节点的索引信息和下一命令节点的索引信息,由于cmd XB的获取时间晚于cmd XA且早于cmd XC,因此cmd XB对应的命令节点的上一命令节点的索引信息指向cmd XA对应的命令节点,下一命令节点的索引信息指向cmd XC对应的命令节点。cmdXC对应的命令节点中记录有cmd XC的标识、获取cmd XC时的时间戳、上一命令节点的索引信息和下一命令节点的索引信息,由于cmd XC的获取时间最晚,因此cmd XC对应的命令节点为尾部命令节点(记为Tail),上一命令节点的索引信息指向cmd XB对应的命令节点,下一命令节点的索引信息为空。cmd XA、cmd XB和cmd XC各自对应的命令节点之间的索引关系如图9中cmd XA、cmd XB和cmd XC之间的双向箭头所示,具体地,cmd XA与cmd XB之间的双向箭头表示:cmd XA对应的命令节点的下一命令节点为cmd XB对应的命令节点,cmd XB对应的命令节点的上一命令节点为cmd XA对应的命令节点;cmd XB与cmd XC之间的双向箭头表示:cmd XB对应的命令节点的下一命令节点为cmd XC对应的命令节点,cmd XC对应的命令节点的上一命令节点为cmd XB对应的命令节点。由于确定cmd XA为头部命令节点(Head),因此,CPU_X仅监控cmd XA是否超时,若cmd XA超时,则CPU_X降低整个系统对新命令的获取能力,包括降低CPU_X对新命令的获取能力和降低CPU_Y对新命令的获取能力,其中,降低CPU_Y对新命令的获取能力的方式包括但不限于:CPU_X向CPU_Y发送降低对新命令的获取能力的指示信息,以使CPU_Y接收到该指示信息后,主动降低自身对新命令的获取能力。
在图9中,若CPU_Y依次获取了待处理的三个命令:cmd YP、cmd YN和cmd YM,则CPU_Y为这三个命令分别创建命令节点,cmd YP对应的命令节点中记录有cmd YP的标识、获取cmd YP时的时间戳、上一命令节点的索引信息和下一命令节点的索引信息,由于cmd YP是最早获取的命令,因此cmd YP对应的命令节点为头部命令节点(记为Head),上一命令节点的索引信息为空,下一命令节点的索引信息指向cmd YN对应的命令节点。cmd YN对应的命令节点中记录有cmd YN的标识、获取cmd YN时的时间戳、上一命令节点的索引信息和下一命令节点的索引信息,由于cmd YN的获取时间晚于cmd YP且早于cmd YM,因此cmd YN对应的命令节点的上一命令节点的索引信息指向cmd YP对应的命令节点,下一命令节点的索引信息指向cmd YM对应的命令节点。cmd YM对应的命令节点中记录有cmd YM的标识、获取cmd YM时的时间戳、上一命令节点的索引信息和下一命令节点的索引信息,由于cmd YM的获取时间最晚,因此cmd YM对应的命令节点为尾部命令节点(记为Tail),上一命令节点的索引信息指向cmd YN对应的命令节点,下一命令节点的索引信息为空。cmd YP、cmd YN和cmd YM各自对应的命令节点之间的索引关系如图9中cmdYP、cmd YN和cmd YM之间的双向箭头所示,具体地,cmd YP与cmd YN之间的双向箭头表示:cmd YP对应的命令节点的下一命令节点为cmd YN对应的命令节点,cmd YN对应的命令节点的上一命令节点为cmd YP对应的命令节点;cmd YN与cmd YM之间的双向箭头表示:cmd YN对应的命令节点的下一命令节点为cmd YM对应的命令节点,cmd YM对应的命令节点的上一命令节点为cmd YN对应的命令节点。由于确定cmd YP为头部命令节点(Head),因此,CPU_Y仅监控cmd YP是否超时,若cmd YP超时,则CPU_Y降低整个系统对新命令的获取能力,包括降低CPU_Y对新命令的获取能力和降低CPU_X对新命令的获取能力,其中,降低CPU_X对新命令的获取能力的方式包括但不限于:CPU_Y向CPU_X发送降低对新命令的获取能力的指示信息,以使CPU_X接收到该指示信息后,主动降低自身对新命令的获取能力。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员能够理解,本公开实施例并不受所描述的动作顺序的限制,因为依据本公开实施例,某些步骤可以采用其他顺序或者同时进行。另外,本领域技术人员能够理解,说明书中所描述的实施例均属于可选实施例。
图10为本公开实施例提供的一种命令超时监控装置的示意图,本公开实施例提供的命令超时监控装置可以执行命令超时监控方法各实施例提供的处理流程,如图10所示,命令超时监控装置包括但不限于:获取单元1001、创建单元1002、确定单元1003和监控单元1004。各单元功能说明如下:
获取单元1001,用于获取待处理的命令,并确定获取命令时的时间戳;
创建单元1002,用于创建命令节点,在命令节点中记录命令的标识和时间戳;
排序单元1003,用于将已创建的各命令节点按时间戳排序;
监控单元1004,用于监控时间戳最早的命令节点所对应命令,根据命令的处理延时确定是否发生超时。
在一些实施例中,监控单元1004,包括:
确定子单元,用于基于创建的每个命令节点中记录的时间戳,确定最早时间戳对应的命令节点为头部命令节点;
监控子单元,用于监控头部命令节点对应命令的处理延时,若处理延时大于或等于预设的处理延时阈值,则确定头部命令节点对应的命令超时。
在一些实施例中,命令节点中还记录有:命令节点的上一命令节点的索引信息以及命令节点的下一命令节点的索引信息;命令超时监控装置还包括:
查找单元,用于基于处理完成的命令的标识,查找对应的目标命令节点;
删除单元,用于删除目标命令节点,并调整目标命令节点的上一命令节点中记录的下一命令节点的索引信息,以及调整目标命令节点的下一命令节点中记录的上一命令节点的索引信息。
在一些实施例中,命令节点中记录的时间戳晚于命令节点的上一命令节点中记录的时间戳,且命令节点中记录的时间戳早于命令节点的下一命令节点中记录的时间戳;
确定子单元,用于将上一命令节点的索引信息为空的命令节点确定为头部命令节点。
在一些实施例中,创建单元1002用于:在双向链表中创建命令节点,命令节点的上一命令节点的索引信息为指向前驱节点地址的指针,命令节点的下一命令节点的索引信息为指向后继节点地址的指针;
或者,在表格或数组中创建命令节点,从命令标识池中为命令分配目标标识,将目标标识作为命令节点的索引信息,命令节点的上一命令节点的索引信息为上一命令节点对应的命令标识,命令节点的下一命令节点的索引信息为下一命令节点对应的命令标识;
或者,在单向链表中创建命令节点,在命令节点中记录时间戳和命令节点的下一命令节点的索引信息,在哈希表中以命令的标识为键,以命令节点的上一命令节点的索引信息为值,构建索引命令节点的键值对。
在一些实施例中,命令超时监控装置还包括:
任务创建单元,用于创建命令处理任务和命令监控任务;
任务调度单元,用于以第一频率调度命令处理任务,以使命令处理任务处理一个或多个命令;以第二频率调度命令监控任务,以使命令监控任务监控头部命令节点对应命令的处理延时;其中,第一频率高于第二频率。
在一些实施例中,若任一命令由多个处理器协同处理,每个处理器处理命令的不同阶段任务,则处理命令的第一阶段任务的目标处理器创建命令对应的命令节点;目标处理器以第一频率调度目标处理器创建的命令处理任务,以使命令处理任务处理命令的第一阶段任务;若命令的所有阶段任务均完成处理,则目标处理器删除命令对应的命令节点。
在一些实施例中,命令超时监控装置还包括:能力调整单元,用于监控单元确定头部命令节点对应的命令超时后,降低对新命令的获取能力,直至头部命令节点对应的命令处理完成,且新的头部命令节点对应的命令不超时,则恢复对新命令的获取能力。
在一些实施例中,能力调整单元降低对新命令的获取能力包括:暂停获取新命令;或者,降低对新命令的获取能力的指标值、对资源申请进行排队和/或限流、降低资源的并发申请数量以及暂停获取部分新命令中的一种或多种组合。
在一些实施例中,能力调整单元恢复对新命令的获取能力包括:恢复获取新命令;或者,提升对新命令的获取能力的指标值、取消对资源申请的排队和/或限流、提升资源的并发申请数量以及恢复获取部分新命令中的一种或多种组合。
在一些实施例中,命令超时监控装置还包括:策略确定单元,用于确定头部命令节点对应命令的目标超时等级;基于超时等级与降低策略之间的预设对应关系,确定目标超时等级对应的目标降低策略;
能力调整单元降低对新命令的获取能力,包括:基于目标降低策略降低对新命令的获取能力。
在一些实施例中,策略确定单元确定头部命令节点对应命令的目标超时等级包括:若处理延时大于或等于预设时长,则确定目标超时等级为严重超时;若处理延时小于预设时长且大于或等于处理延时阈值,则确定目标超时等级为非严重超时,其中,预设时长大于处理延时阈值;
策略确定单元基于超时等级与降低策略之间的预设对应关系,确定目标超时等级对应的目标降低策略包括:
若目标超时等级为严重超时,则对应的目标降低策略为:暂停获取新命令。
若目标超时等级为非严重超时,则对应的目标降低策略为:降低对新命令的获取能力的指标值、对资源申请进行排队和/或限流、降低资源的并发申请数量以及暂停获取部分新命令中的一种或多种组合。
可见,本公开的至少一个命令超时监控装置实施例中,通过创建命令节点来记录待处理的命令的标识和时间戳,为监控命令提供依据,进而基于命令节点中记录的时间戳,将已创建的各命令节点按时间戳排序,可以确定时间戳最早的命令节点所对应命令,仅监控时间戳最早的命令节点对应命令的处理延时,根据命令的处理延时确定是否发生超时,代替对所有待处理命令独立监控,减少监控操作对命令处理过程引入的延时,提高监控效率。
在本申请实施例中,通过提供一种存储设备(或固态存储设备等),包括:存储器和控制器,控制器执行上述任意方法实施例中的一种命令超时监控方法,其中存储器可以是NVM(Non-Volatile Memory,非易失性存储器)芯片。
图11是本公开实施例提供的一种电子设备的示例性框图。如图11所示,该电子设备包括:存储器1101、处理器1102以及存储在所述存储器1101上的计算机程序。可以理解,本实施例中的存储器1101可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
在一些实施方式中,存储器1101存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统和应用程序。
其中,操作系统,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础任务以及处理基于硬件的任务。应用程序,包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用任务。实现本公开实施例提供的命令超时监控方法的程序可以包含在应用程序中。
在本公开实施例中,至少一个处理器1102通过调用至少一个存储器1101存储的程序或指令,具体的,可以是应用程序中存储的程序或指令,至少一个处理器1102用于执行本公开实施例提供的命令超时监控方法各实施例的步骤。
本公开实施例提供的命令超时监控方法可以应用于处理器1102中,或者由处理器1102实现。处理器1102可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1102中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1102可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本公开实施例提供的命令超时监控方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1101,处理器1102读取存储器1101中的信息,结合其硬件完成方法的步骤。
本公开实施例还提出一种计算机可读存储介质,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如命令超时监控方法各实施例的步骤,为避免重复描述,在此不再赘述。其中,计算机可读存储介质可以为非暂态计算机可读存储介质。
本公开实施例还提出一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,计算机可读存储介质可以为非暂态计算机可读存储介质。计算机的至少一个处理器从计算机可读存储介质中读取并执行该计算机程序,使得计算机执行如命令超时监控方法各实施例的步骤,为避免重复描述,在此不再赘述。
以上所描述的装置或设备实施例仅仅是示意性的,其中作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种命令超时监控方法,所述方法包括:
获取待处理的命令,并确定获取所述命令时的时间戳;
创建命令节点,在所述命令节点中记录所述命令的标识和所述时间戳;
将已创建的各命令节点按时间戳排序;
监控时间戳最早的命令节点所对应命令,根据命令的处理延时确定是否发生超时。
2.根据权利要求1所述的方法,其中,所述监控时间戳最早的命令节点所对应命令,根据命令的处理延时确定是否发生超时,包括:
基于创建的每个命令节点中记录的时间戳,确定最早时间戳对应的命令节点为头部命令节点;
监控所述头部命令节点对应命令的处理延时,若所述处理延时大于或等于预设的处理延时阈值,则确定所述头部命令节点对应的命令超时。
3.根据权利要求2所述的方法,其中,所述命令节点中还记录有:所述命令节点的上一命令节点的索引信息以及所述命令节点的下一命令节点的索引信息;所述方法还包括:
基于处理完成的命令的标识,查找对应的目标命令节点;
删除所述目标命令节点,并调整所述目标命令节点的上一命令节点中记录的下一命令节点的索引信息,以及调整所述目标命令节点的下一命令节点中记录的上一命令节点的索引信息。
4.根据权利要求3所述的方法,其中,所述命令节点中记录的时间戳晚于所述命令节点的上一命令节点中记录的时间戳,且所述命令节点中记录的时间戳早于所述命令节点的下一命令节点中记录的时间戳;
所述基于创建的每个命令节点中记录的时间戳,确定最早时间戳对应的命令节点为头部命令节点,包括:
将上一命令节点的索引信息为空的命令节点确定为头部命令节点。
5.根据权利要求3或4所述的方法,其中,所述创建命令节点包括:
在双向链表中创建命令节点,所述命令节点的上一命令节点的索引信息为指向前驱节点地址的指针,所述命令节点的下一命令节点的索引信息为指向后继节点地址的指针;
或者,在表格或数组中创建命令节点,从命令标识池中为所述命令分配目标标识,将所述目标标识作为所述命令节点的索引信息,所述命令节点的上一命令节点的索引信息为上一命令节点对应的命令标识,所述命令节点的下一命令节点的索引信息为下一命令节点对应的命令标识;
或者,在单向链表中创建命令节点,在所述命令节点中记录所述时间戳和所述命令节点的下一命令节点的索引信息,在哈希表中以所述命令的标识为键,以所述命令节点的上一命令节点的索引信息为值,构建索引所述命令节点的键值对。
6.根据权利要求1-5中任一项所述的方法,其中,所述方法还包括:
创建命令处理任务和命令监控任务;
以第一频率调度所述命令处理任务,以使所述命令处理任务处理一个或多个命令;
以第二频率调度所述命令监控任务,以使所述命令监控任务监控所述头部命令节点对应命令的处理延时;
其中,所述第一频率高于所述第二频率。
7.根据权利要求6所述的方法,其中,所述方法还包括:
若任一命令由多个处理器协同处理,每个所述处理器处理所述命令的不同阶段任务,则处理所述命令的第一阶段任务的目标处理器创建所述命令对应的命令节点;
所述目标处理器以所述第一频率调度所述目标处理器创建的命令处理任务,以使所述命令处理任务处理所述命令的第一阶段任务;
若所述命令的所有阶段任务均完成处理,则所述目标处理器删除所述命令对应的命令节点。
8.一种存储设备,其特征在于,包括:控制部件与NVM芯片,所述控制部件执行根据权利要求1至7中任一项所述命令超时监控方法的步骤。
9.一种电子设备,其中,包括存储器、处理器以及存储在所述存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现如权利要求1至7任一项所述命令超时监控方法的步骤。
10.一种计算机可读存储介质,其中,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如权利要求1至7任一项所述命令超时监控方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310483817.8A CN116627754A (zh) | 2023-04-28 | 2023-04-28 | 一种命令超时监控方法、存储设备、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310483817.8A CN116627754A (zh) | 2023-04-28 | 2023-04-28 | 一种命令超时监控方法、存储设备、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116627754A true CN116627754A (zh) | 2023-08-22 |
Family
ID=87637364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310483817.8A Pending CN116627754A (zh) | 2023-04-28 | 2023-04-28 | 一种命令超时监控方法、存储设备、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116627754A (zh) |
-
2023
- 2023-04-28 CN CN202310483817.8A patent/CN116627754A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11882054B2 (en) | Terminating data server nodes | |
US11200164B2 (en) | Coordinated garbage collection in distributed systems | |
JP5142995B2 (ja) | メモリページ管理 | |
US11132294B2 (en) | Real-time replicating garbage collection | |
WO2019062699A1 (zh) | 资源调度方法、调度服务器、云计算系统及存储介质 | |
US8141089B2 (en) | Method and apparatus for reducing contention for computer system resources using soft locks | |
WO2018018611A1 (zh) | 一种任务处理方法以及网卡 | |
US10331499B2 (en) | Method, apparatus, and chip for implementing mutually-exclusive operation of multiple threads | |
US11537453B2 (en) | Multithreaded lossy queue protocol | |
CN114116665B (zh) | 数据库中并行写入事务日志以提升处理效率的方法 | |
CN113157467B (zh) | 一种多进程数据输出方法 | |
CN111061690B (zh) | 一种基于rac的数据库日志文件读取方法和装置 | |
CN110445828A (zh) | 一种基于Redis的数据分布式处理方法及其相关设备 | |
CN111124270A (zh) | 缓存管理的方法、设备和计算机程序产品 | |
CN114063883B (zh) | 存储数据方法、电子设备和计算机程序产品 | |
Liu et al. | Optimizing shuffle in wide-area data analytics | |
CN112463073A (zh) | 一种对象存储分布式配额方法、系统、设备和存储介质 | |
US10261718B1 (en) | Adaptively controlling data copy operations that copy data in an electronic environment | |
CN108595251B (zh) | 动态图更新方法、装置、存储引擎接口和程序介质 | |
CN112363812B (zh) | 基于任务分类的数据库连接队列管理方法及存储介质 | |
WO2024119930A1 (zh) | 调度方法、装置、计算机设备和存储介质 | |
CN110413689B (zh) | 一种内存数据库的多节点数据同步方法与装置 | |
US20110302377A1 (en) | Automatic Reallocation of Structured External Storage Structures | |
CN116627754A (zh) | 一种命令超时监控方法、存储设备、电子设备及存储介质 | |
CN107832121B (zh) | 一种应用于分布式串行长事务的并发控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |