掌桥专利:专业的专利平台
掌桥专利
首页

改进存储子系统中的步调

文献发布时间:2023-06-19 19:13:14


改进存储子系统中的步调

技术领域

本发明涉及计算机系统,并且具体地但不排他地涉及改进数据通信设备中的输入/输出性能。

背景技术

固态驱动器(SSD)是大容量存储设备,它使用集成电路存储器(通常是基于NAND的闪存)来存储数据,同时提供模拟传统硬盘驱动器(HDD)的接口。与HDD相比,SSD提供更快的访问速度、更低的延迟和更强的抗环境干扰能力。因此,SSD在许多存储应用中逐渐取代HDD。

由于SSD最初是为取代HDD而设计的,因此它们通常使用与HDD相同类型的输入/输出(I/O)总线和协议,例如SATA、SAS和光纤信道。随后,可以使用直接连接到主机外围组件接口总线的SSD,例如PCI

高级网络接口控制器(NIC)被设计为支持远程直接存储器访问(RDMA)操作,其中NIC通过直接存储器访问将数据从一台计算机的存储器传输到另一台计算机的存储器,而不涉及计算机的中央处理单元(CPU)目标计算机。尽管RDMA通常用于将数据传输到主机存储器(RAM)和从主机存储器(RAM)传输数据,但专利文献中已经描述了许多适配RDMA的功能以直接从SSD读取数据和从SSD写入数据的尝试。

例如,美国专利申请公布2008/0313364描述了一种用于对固态存储设备进行远程直接存储器访问的方法,据说该方法允许在通过网络连接到这种设备的客户端的存储器之间进行直接访问。类似地,美国专利申请公布2011/0246597描述了一种系统,其中服务器的网络接口组件可以通过绕过服务器的中央处理单元(CPU)和服务器的主存储器的网络存储访问链路访问服务器的固态存储模块。

此外,智能NIC(例如

发明内容

根据本公开的实施例,提供了一种数据通信装置,包括被连接至存储设备的存储子系统,以及处理电路,响应于内容传输请求,在存储子系统上利用存储设备管理内容传输,同时响应于存储子系统的备用数据容量的可用性而步调开始服务内容传输请求中的相应的内容传输请求,使得当内容传输请求中的一些正在被服务时,其他待服务的内容传输请求中的一些在至少一个待处理队列中排队,找到当前被指派存储子系统的给定数据容量以及当前被指派来服务至少一个内容传输请求的故障存储设备,以及当被指派为由故障存储设备服务的至少一个内容传输请求仍在等待由故障存储设备完成时,重新分配当前被指派给故障存储设备的存储子系统的给定数据容量以供存储设备中的至少另一个存储设备使用。

进一步根据本发明的实施例,存储子系统包括高速缓存,并且备用数据容量为备用高速缓存容量。

仍进一步根据本公开的实施例,处理电路被配置为:响应于故障存储设备花费比给定超时值更长的时间来完成对至少一个内容传输请求的服务来找到故障存储设备。

此外,根据本公开的实施例,处理电路被配置为:改变状态标志以指示故障存储设备故障。

此外,根据本公开的实施例,处理电路被配置为:在状态标志指示故障存储设备故障时,接收新的内容传输请求,以及响应于存储子系统有足够的备用数据容量来服务新的内容传输请求以及新的内容传输请求不与故障存储设备相关联,开始服务新的内容传输请求,而无需首先将新的内容传输请求添加到至少一个待处理队列。

进一步根据本公开的实施例,处理电路被配置为:在状态标志指示故障存储设备故障时,接收新的内容传输请求,以及响应于新的内容传输请求与故障存储设备相关联的,将新的内容传输请求添加到至少一个待处理队列。

更进一步地根据本公开的实施例,处理电路被配置为:响应于开始服务内容传输请求中的选定的一个内容传输请求的决定而递增计数器,计数器响应于与所选内容传输请求相关联的数据块的长度,在第一方向上前进,以及响应于服务所选定的内容传输请求的完成而递减计数器,计数器响应于与所选定的内容传输请求相关联的数据块的长度,在第二方向上前进。

另外,根据本公开的实施例,处理电路被配置为:响应于从当响应于开始服务所选定的内容传输请求的决定而递增计数器时的时间延迟之后的计数器的值,发现故障存储设备故障并且花费比给定超时值更长的时间来完成服务所选定的内容传输请求。

此外,根据本公开的实施例,处理电路被配置为:针对存储设备中的相应的不同的存储设备的内容传输请求而操作不同的计数器。

进一步根据本公开的实施例,处理电路被配置为:针对在不同时间段开始服务的内容传输请求而递增不同的计数器。

更进一步地根据本公开的实施例,处理电路被配置为:针对故障存储设备的内容传输请求而操作至少一个计数器,以及响应于针对故障存储设备操作的至少一个计数器的值,找到当前被指派给故障存储设备的高速缓存的给定数据容量以重新分配给至少其他存储设备。

根据本公开的另一个实施例,提供了一种数据通信装置,包括被连接至存储设备的存储子系统,以及处理电路,用于将相应的权重指派给存储设备,以及响应于内容传输请求,在存储子系统上利用存储设备管理内容传输的设备,同时响应于存储设备的相应的权重来步调开始服务内容传输请求中的相应的内容传输请求,使得在内容传输请求中的一些正在被服务的同时,其他待服务的内容传输请求中的一些在至少一个待处理队列中排队。

另外,根据本公开的实施例,处理电路被配置为:响应于内容传输请求,在存储子系统上利用存储设备管理内容传输,同时响应于存储子系统的备用数据容量的可用性来步调开始服务相应的内容传输请求。

此外,根据本发明的一个实施例,存储子系统包括高速缓存,并且备用数据容量为备用高速缓存容量。

进一步根据本公开的实施例,处理电路被配置为:使用加权循环选择从至少一个待处理队列中选择相应的内容传输请求以供存储子系统服务,加权循环响应于内容传输请求所针对的存储设备的权重而被加权。

更进一步根据本公开的实施例,至少一个待处理队列包括不同的存储设备特定队列,以及处理电路被配置为:响应于相应的内容传输请求所针对的相应的存储设备,将相应的内容传输请求指派给不同的存储设备特定队列,以及使用加权循环选择从存储设备特定队列中选择相应的内容传输请求用于服务,加权循环响应于存储设备的权重而被加权。

另外,根据本公开的实施例,处理电路被配置为:响应于存储设备的相应的性能将相应的权重指派给存储设备。

此外,根据本公开的实施例,处理电路被配置为:监控存储设备的相应的性能,以及响应于监控动态地更新被指派给存储设备的相应的权重。

根据本公开的另一实施例,提供了一种数据通信方法,包括响应于内容传输请求,在存储子系统上利用存储设备管理内容传输,同时响应于存储子系统的备用数据容量的可用性而步调开始服务内容传输请求中的相应的内容传输请求,使得当内容传输请求中的一些正在被服务时,其他待服务的内容传输请求在至少一个等待队列中排队,找到当前被指派存储子系统的给定数据容量以及当前被指派为服务至少一个内容传输请求中的存储设备中的故障存储设备,以及当被指派为由故障存储设备服务的至少一个内容传输请求仍在等待由故障存储设备完成时,重新分配当前被指派给故障存储设备的存储子系统的给定数据容量以供存储设备中的至少另一个存储设备使用。

根据本公开的又一实施例,还提供了一种数据通信方法,包括将相应的权重指派给存储设备,以及响应于内容传输请求,在存储子系统上利用存储设备管理内容传输,同时响应于存储设备的相应的权重而步调开始服务内容传输请求中的相应的内容传输请求,使得当内容传输请求中的一些正在被服务时,其他待服务的内容传输请求在至少一个待处理队列中排队。

附图说明

本发明将从以下结合附图的详细描述中理解,其中:

图1是根据本发明实施例构建和操作的数据通信系统的框图。

图2是包括在图1的系统中提供存储子系统拥塞控制的方法中的步骤的流程图;

图3是包括在图1的系统中执行步调(pacing)的方法中的步骤的流程图;

图4是示出图1的系统中的内容传输请求的步调的框图;

图5是包括在图1的系统中提供数据容量信用的方法中的步骤的流程图;

图6是包括在图1的系统中使用数据容量信用来执行步调的方法中的步骤的流程图;

图7是包括在图1的系统中基于数据吞吐量率执行步调的方法中的步骤的流程图;

图8是包括在图1的系统中提供数据吞吐量率信用的方法中的步骤的流程图;

图9是包括在图1的系统中使用数据吞吐量率信用来执行步调的方法中的步骤的流程图;

图10是包括在图1的系统中使用加权循环选择来选择内容传输请求的方法中的步骤的流程图;

图11是提供图10的方法的示例的框图;

图12是包括在图1的系统中动态分配权重的方法中的步骤的流程图;

图13是包括在图1的系统中从故障存储设备重新分配数据容量的方法中的步骤的流程图;

图14是包括图13的方法的子方法中的步骤以处理新的内容传输请求的流程图;

图15是包括图13的方法的子方法中的用于处理服务内容传输请求的完成的步骤的流程图;

图16是包括图13的方法的子方法中的用于查找故障存储设备并重新分配找到的故障存储设备的数据容量的步骤的流程图;

图17是示出在图13的方法中在不同时间段和选择器索引上的内容传输请求的处理的框图;

图18是示出在图13的方法中使用计数器找到故障存储设备的框图。

图19是包括图13的方法的子方法中的用于处理包括使用计数器的服务新的内容传输请求的步骤的流程图;

图20是包括图13的方法的子方法中的用于处理包括使用计数器服务内容传输请求的完成的步骤的流程图;以及

图21是包括图13的方法的子方法中的包括使用计数器找到故障存储设备并重新分配找到的故障存储设备的数据容量的步骤的流程图。

具体实施方式

概述

如前所述,一些数据通信设备,例如智能网卡(例如

根据内容传输请求的级别以及网络、存储子系统接口和本地外围存储设备的速度和带宽,存储子系统可能会遭受拥塞,从而导致系统对服务传入内容转移请求的响应变差。

例如,存储子系统可以包括随机存取存储器(RAM)(例如,双倍数据速率(DDR)存储器),用于在数据通信设备和本地外围存储设备之间传输内容,反之亦然。在某些情况下,RAM不是瓶颈,因为本地外围存储设备很慢。在其他情况下,外围存储设备足够快(例如,NVMe驱动器),RAM可能成为瓶颈,因为它比本地外围存储设备和服务于内容传输请求发起者的网络端口慢。

解决这个问题的一种方法是使用高速缓存(例如,最后一级高速缓存(LLC)),在数据通信设备和本地外围存储设备之间复制数据,反之亦然。但是,如果高速缓存变满,高速缓存条目(仍需要被使用)可能会被逐出到RAM(例如,基于最近最少使用(LRU)的基础上)。然后需要在必要时将被逐出的条目从RAM读取到高速缓存中,从而导致瓶颈。通常,可以选择高速缓存来服务网络带宽,并且如果数据通信设备成功地将所有条目(需要被使用的)保留在高速缓存中,则高速缓存可以全线路速度度服务内容传输请求。然而,一旦条目从高速缓存中被逐出到RAM,可能会形成恶性循环,其中可能需要很长时间才能恢复到最佳性能,其中没有条目(需要被使用的)被从高速缓存中逐出。

因此,在某些情况下,如果所有接收到的内容传输请求都得到了服务,那么高速缓存就会成为瓶颈,并且高速缓存条目(仍然需要被使用)被逐出到RAM。一种解决方案是请求发起者不要发送内容传输请求。但是,此解决方案通常不实用,因为发起者可能来自不同的实体或否则不一致。

在某些场景下,存储子系统中的其他接口,如PCIe接口,可能会成为传输瓶颈。例如,每个NVMe驱动器都有给定的输入/输出(I/O)速率和给定的带宽限制。如果向NVMe驱动器发送的请求过多,则NVMe驱动器上的请求可能会出现乱序,从而导致高延迟和性能下降。在这种情况下,虽然PCIe接口可以处理请求的级别,但相关的缓存区充满了数据,这些数据可以更好地被另一个I/O设备使用。

上述问题的一个解决方案是提供一种数据通信设备(例如,NIC或智能NIC),其在存储子系统上管理远程设备和本地外围存储设备(例如,NVMe驱动器)之间的内容传输,响应于从远程设备接收到的内容传输请求,同时响应于存储子系统的至少一个度量来步调开始服务内容传输请求,以便在服务一些内容传输请求时,其他待服务的内容传输请求在一个或更多个待处理队列中排队。度量可以包括高速缓存的数据容量和/或存储子系统(例如,外围接口的)的数据吞吐率。

一种可能的步调解决方案包括根据相应的I/O设备(例如,I/O接口)的I/O速率进行步调。例如,将数据吞吐量率信用指派给相应的外围接口,使得相应的外围接口的使用受限于相应的数据吞吐量率信用的可用性。例如,如果有3个外设接口,其数据吞吐量速率(例如,I/O速率)分别为XGB/秒、Y GB/秒和Z GB/秒,并且线路速度大于X加Y加Z,则内容传输请求可以根据应该将内容传输请求引导到哪个外围接口而在三个外围接口的三个相应的待处理队列中排队,并且可以为三个相应的待处理队列分别分配与X、Y和Z成比例的A、B和C信用。然后根据相应的待处理队列的可用数据吞吐率信用来处理待处理队列中的请求。但是,这种类型的步调是一种被动方法,对I/O速率的变化做出反应导致在某些情况下浪费存储子系统资源。

解决上述问题的另一种可能的步调解决方案是响应于高速缓存的备用数据容量进行步调。例如,如果高速缓存中有备用存储容量(例如,高速缓存的一部分当前未用于服务内容传输请求),则备用容量可用于服务一个或更多个新的内容传输请求(取决于备用容量的大小)。如果没有空闲容量,传入的内容传输请求将排队,直到空间容量可用。可以基于数据容量信用来执行步调。可以根据高速缓存的大小来提供信用。例如,如果高速缓存的大小为X,可以同时服务Y个传输请求,则提供Y个信用。当信用可用时,开始服务来自队列的内容传输请求。然后,信用从可用性中移除,并在内容传输请求完成以提供服务时返回可用性。

如果存储设备开始出现错误,则上述步调解决方案可能不是最佳的。例如,如果存储设备被指派了信用然后变得卡住,即使该存储设备不活动,指派给该存储设备的信用仍然保持指派给该存储设备。因此,高速缓存的数据容量实际上被浪费了,而存储设备处于非活动状态。

因此,本发明的实施例通过找到故障存储设备,以及当被指派给由故障存储设备服务的内容传输请求仍在等待故障存储设备完成时,重新分配当前被指派给故障存储设备的数据容量以供一个或更多个其他存储设备使用,从而解决上述问题。在所公开的实施例中,计数器可用于跟踪当前被指派给存储设备的高速缓存数据容量并发现被卡住或以其他方式发生故障的存储设备。

当某些存储设备的性能优于其他设备时,某些步调解决方案可能不是最佳的。在某些情况下,较低性能的存储设备占用了存储子系统的太多资源,这些资源可以被较高性能的存储设备更有效地使用。

在一些实施例中,上述问题可以通过将相应的权重指派给存储设备,并响应于内容传输请求,在存储子系统上利用存储设备管理内容传输,同时响应于存储设备的相应的权重而步调开始服务内容传输请求中的相应的内容传输请求来解决。

在一些实施例中,使用加权循环选择来选择相应的内容传输请求用于服务。加权循环响应于内容传输请求所针对的存储设备的权重而被加权。例如,可以响应于相应的内容传输请求所针对的相应的存储设备,将相应的内容传输请求指派给不同的存储设备特定队列。然后可以使用来自存储设备特定队列的加权循环选择来选择相应的内容传输请求用于服务。例如,如果存储设备A的权重为1,存储设备B的权重为2,存储设备C的权重为2,则从存储设备A的队列中选择1个内容传输请求,则从存储设备B的队列中选择2个内容传输请求,然后根据存储子系统的剩余数据容量从存储设备C的队列中选择2个内容传输请求。

系统描述

现在参考图1,它是根据本发明实施例构造和操作的数据通信系统10的框图。数据通信系统10包括数据通信装置12,其通过分组数据网络14从一个或更多个远程设备16接收内容传输请求。内容传输请求可以是仅作为示例的RDMA请求。响应于内容传输请求,数据通信装置12从连接到数据通信装置12的(本地外围)存储设备18(例如,NVMe驱动器)读取数据和/或向其写入数据。例如,数据通信装置12被配置为从远程设备16接收数据以写入本地外围存储设备18和/或将从本地外围存储设备18读取的数据发送至远程设备16。

数据通信装置12包括网络接口20、分组处理管线22、处理电路24和存储子系统26。网络接口20包括用于连接到分组数据网络14的一个或更多个端口28。处理管线22被配置为处理接收到的网络分组并处理用于通过网络14以分组形式发送的数据。分组处理管线22可以包括PHY芯片和MAC芯片以及其他组件。

处理电路24可以进一步处理接收到的分组数据,例如接收到的内容传输请求。处理电路24可以包括一个或更多个处理器,例如图块处理器或ARM处理器阵列。处理电路24的功能将参考下面图2-9更详细地描述。

在实践中,处理电路24的一些或全部功能可以组合在单个物理组件中,或者替代地,使用多个物理组件来实现。这些物理组件可以包括硬连线或可编程设备,或两者的组合。在一些实施例中,处理电路24的至少一些功能可以由可编程处理器在合适软件的控制下执行。例如,该软件可以通过网络以电子形式下载到设备。备选地或附加地,软件可以存储在有形的、非暂时性的计算机可读存储介质中,例如光学、磁性或电子存储器。

存储子系统26包括存储器子系统32和一个或更多个外围接口30。存储子系统26被配置为例如经由外围接口30(例如,PCIe接口)连接到本地外围存储设备18。存储器子系统32包括高速缓存34和随机存取存储器(RAM)36。存储器子系统32被配置为将溢出从高速缓存34逐出到RAM 36。数据由本地外围存储设备读取,并且经由高速缓存34和外围接口30从本地外围存储设备18写入。例如,在服务于特定内容传输请求时,写入到本地外围存储设备18之一或从本地外围存储设备18之一读取的数据是经由高速缓存34的部分38传输的。高速缓存34的相同部分38(例如,相同的高速缓存行或多个相同的高速缓存行)可用于一个接一个地传输与同一内容传输请求相关联的若干数据块。例如,内容传输请求的第一数据块从本地外围存储设备18中的一个读取到高速缓存34的部分38-1,然后从高速缓存34的部分38-1复制到用于通过网络14向内容传输请求的发起者发送的分组处理管线22,然后将该内容传输请求的第二数据块从相同的本地外围存储设备18读取到高速缓存34的相同部分38-1,以及然后从高速缓存34的那个部分38-1复制到分组处理管道22以通过网络14发送到内容传输请求的发起者,等等。在其他实施例中,高速缓存34的不同部分38可用于传输与同一内容传输请求相关联的不同块。

现在参考图2,其是流程图21,包括在图1的系统10中提供存储子系统拥塞控制的方法中的步骤。还参考图1。网络接口20是被配置为经由一个或更多个端口28在分组数据网络14上从远程设备16接收(框23)内容传输请求。内容传输请求由分组处理管道22处理并由处理电路接收24。

处理电路24被配置为响应于内容传输请求,管理远程设备16和本地外围存储设备18之间的内容传输(框25),同时以对存储子系统26透明的方式执行对存储子系统26的存储子系统拥塞控制。

在一些实施例中,处理电路24被配置为响应于内容传输请求,经由外围接口30和高速缓存34管理远程设备16和本地外围存储设备18之间的内容传输。框25的步骤在响应于存储子系统26的一个或更多个度量而步调(框27)开始服务内容传输请求时执行,使得在服务一些内容传输请求时,其他待服务内容传输请求在至少一个待处理队列中排队(框29)。在说明书和权利要求书中使用的术语“开始服务(commencement of serving)”被定义为处理电路24响应于内容传输请求之一而由存储子系统26发起传输所请求的数据,使得没有在该内容传输请求中的数据被传输,直到该开始内容传输请求的服务。换言之,响应于存储子系统26(例如,高速缓存34和/或外围接口30)的度量来执行内容传输请求中请求的传输数据的启动。度量可以包括高速缓存34的数据容量和/或存储子系统26(例如,外围接口30的)的数据吞吐率。

现在参考图3,其是流程图31,包括在图1的系统10中执行步调的方法中的步骤。还参考图1。处理电路24被配置为(框33)响应于高速缓存34的备用数据容量步调开始服务相应的内容传输请求。

处理电路24被配置为响应于高速缓存的大小提供(框35)数据容量信用。例如,如果高速缓存具有可用于同时服务X个相应内容传输请求的X个部分38,则处理电路24被配置为提供X个数据容量信用。参考图5更详细地描述框35的步骤。处理电路24被配置为响应于数据容量信用的可用性来步调开始服务(框37)相应的内容传输请求。参考图6更详细地描述框37的步骤。

现在参考图4和图5。图4是示出图1的系统10中的服务内容传输请求42的步调的框图40。图5是流程图50,包括提供图1的系统10中的数据容量信用46的方法中的步骤。

如前所述,高速缓存34包括相应的高速缓存部分38。处理电路24可以被配置为将相应的数据容量信用46指派(框52)给相应的高速缓存部分38,使得相应的高速缓存部分38的使用被限制为相应数据容量信用46的可用性。例如,如果高速缓存34具有n个高速缓存部分,例如S1到Sn,则处理电路24指派n个数据容量信用46,C1到Cn对应于n个高速缓存部分38。、如果数据容量信用C2可用于服务内容传输请求42之一,则高速缓存部分S2用于服务该请求。

在一些实施例中,所有内容传输请求在单个待处理队列44中排队并且该队列被指派所有可用的数据容量信用46。在一些实施例中,存在不同的待处理队列44并且处理电路24被配置为在不同的待处理队列44之间分配(框54)所提供的数据容量信用46。例如,信用C1到C5被分配给待处理队列44-1,信用C6到C10被分配给待处理队列44-2,并且信用C11到C15被分配给待处理队列44-3。例如,根据对那些队列的已知或预期需求,信用可以被平等地或不平等地分配给不同的队列。图4示出了对应于三个本地外围存储设备18的三个待处理队列44,使得每个待处理队列44服务于对应的本地外围存储设备18。例如,本地外围存储设备18-1的内容服务请求42在待处理队列44-1中排队,对本地外围存储设备18-2的内容服务请求42在待处理队列44-2中排队,等等。指派给待处理队列44-1的信用46在可用时由在待处理队列44-1中排队的内容传输请求42使用,等等。例如,当正在为待处理队列44-1中排队的内容传输请求42之一被服务时,分配给待处理队列44-1的可用数据容量信用46之一从可用性中移除,并在内容传输请求42已经完成服务时返回到可由待处理队列44-1的内容传输请求42使用,如参考图6更详细地描述的。

图4的示例示出了与每个本地外围存储设备18相关联的一个待处理队列44。在一些实施例中,每个本地外围存储设备18可以与读取和写入队列相关联。

不同的待处理队列44可以包括以下任意一种或更多种:读取待处理队列和写入待处理队列;不同的本地外围存储设备18的待处理队列;本地外围存储设备18的不同组的待处理队列;不同外围接口30的待处理队列;不同内容请求属性的待处理队列;或不同内容请求发起者的待处理队列。

不同队列44之间的信用46的初始分配可能不是最佳的。例如,如果对于不同的本地外围存储设备18有不同的队列44,并且本地外围存储设备18中的一个或更多个比其他设备18慢,那么向较慢的设备18提供较少的信用46可能更有效。另一个例子可能是驱动器出现错误。因此,在一些实施例中,处理电路24被配置为分析不同待处理队列44的信用使用情况(例如基于循环)并在不同的待处理队列44之间动态地重新分配(框56)数据容量信用46,其响应于不同待处理队列44对信用46的使用。如果信用46正在被快速使用,则表明相关联的本地外围存储设备18正在有效地工作并且应该比更慢地使用信用的较慢的外围存储设备18指派更多的信用46。

现在参考图6,其是流程图60,包括使用图1的系统10中的数据容量信用46来执行步调的方法中的步骤。还参考图4。

处理电路24被配置为从分组处理管线22(图1)接收内容传输请求42,并且响应于内容传输请求42将内容传输请求42指派给相应的待处理队列44。例如,请求从本地外围存储设备18-1读取内容或向本地外围存储设备18-1写入内容将在待处理队列44-1中排队,等等。

处理电路24被配置为响应于数据容量信用46之一可用(对于内容传输请求42在其中排队的待处理队列44)开始服务(框62)内容传输请求42之一。处理电路24被配置为响应于内容传输请求42当前正被服务而从可用中移除(框64)可用数据容量信用46。处理电路24被配置为响应于内容传输请求42完成被服务而将移除的数据容量信用46返回(框66)为可用。

现在参考图7,其是流程图70,包括在图1的系统10中基于数据吞吐量率执行步调的方法中的步骤。还参考图1。处理电路24被配置为响应于相应外围接口30和网络接口20的数据吞吐量率(例如,I/O率)来步调开始服务(框72)相应的内容传输请求。

处理电路24被配置为响应于外围接口30的数据吞吐率和线路速度而提供(框74)数据吞吐率信用。如果外围接口30的累积数据吞吐率大于线路速度,则整体数据吞吐率受限于线路速度,否则整体数据吞吐率受限于外围接口30的数据吞吐率。处理电路24被配置为响应于数据吞吐量速率信用(每个待处理队列)的可用性来步调开始服务(框76)相应的内容传输请求。例如,每个固定时间段分配一个信用(或多个信用)以执行特定大小的输入/输出操作。在一些实施例中,每个固定时间段可以为不同的待处理队列分配不同数量的信用。在其他实施例中,可以将相同数量的信用分配给每个待处理队列。在一些实施例中,固定时间段或输入/输出操作的大小对于每个待处理队列可以是相同的或对于不同的待处理队列是不同的。

举例来说,使用四舍五入的数字,对于一个或更多个外围接口30的每秒200吉比特的可用数据吞吐率,允许经由外围接口30每5微秒执行128千字节的总内容传输。因此,每5微秒分析一次待处理队列,并开始为请求总计高达128KB数据传输的内容传输请求提供服务。例如,当新的信用在5或10微秒内可用时,其他请求将留在待处理队列中以供将来服务。

例如,如果存在三个外围接口30,其数据吞吐量速率(例如,I/O速率)为每秒X GB、每秒Y GB和每秒Z GB,并且线路速度大于X加上Y加上Z,则内容传输请求可以根据内容传输请求应该被引导至哪个相应的外围接口30而在三个外围接口30的三个相应的待处理队列中排队,并且(三个外围接口30的)三个相应的待处理队列可以分别按X、Y和X的比例分配A、B和C信用。

现在参考图8是流程图80,包括在图1的系统10中提供数据吞吐量率信用的方法中的步骤。还参考图1。处理电路24被配置为将相应的数据吞吐量速率信用值(间歇地,例如周期性地)指派(框82)给相应的外围接口30,从而使相应的外围接口30的使用受限于相应的数据吞吐量速率信用值的可用性。例如,指派给外围接口30之一的数据吞吐量信用供将使用该外围接口来传送数据的内容传输请求使用,等等。在一些实施例中,数据吞吐率信用可以指派给不同组的外围接口30。

在一些实施例中,处理电路24被配置为在不同的待处理队列之间分配(框84)所提供的数据吞吐量率信用(间歇地,例如周期性地)。不同的待处理队列可以包括以下任意一种或更多种:读取待处理队列和写入待处理队列;不同的本地外围存储设备18的待处理队列;本地外围存储设备18的不同组的待处理队列;不同外围接口30的待处理队列;不同内容请求属性的待处理队列;或不同内容请求发起者的待处理队列。例如,每个外围接口30可能有待处理队列,或者每个外围接口30都有待处理读取队列和待处理写入队列。

处理电路24被配置为分析不同待处理队列对信用的使用(例如,在循环的基础上)并响应于与待处理队列中的内容传输请求相关联的数据被传输的实际速率和其他度量,在不同待处理队列之间分配数据吞吐量率信用。

处理电路24被配置为根据某个“步调速率”对内容传输请求进行步调。步调通常不是固定的,并且有可能增加或减少它的反馈。该反馈可以基于数据通信装置12的不同的当前参数。

在一些实施例中,处理电路24可以测量数据通信装置12的实际实现的数据吞吐量率。如果步调速率高于测量的实现的数据吞吐量率,这将导致飞行中数据的增加并最终导致高速缓存驱逐和丢弃数据。因此,步调速率会降低以匹配实际测量的频率。然而,调整步调速率以尝试将步调速率增加到最大理论速率,因为使实际频率降低的瞬态效应可能已经过去。

在其他实施例中,处理电路24可以测量数据通信装置12中的已知飞行中数据。如果总飞行中数据正在增加,则意味着实际实现的数据吞吐量率低于当前步调速率,因此步调速率降低。当数据通信装置12中的总飞行数据减少时,可以再次增加步调速率。

现在参考图9,其是流程图90,包括在图1的系统10中使用数据吞吐量率信用来执行步调的方法中的步骤。处理电路24(图1)被配置为开始响应于数据吞吐量率信用之一可用(对于该内容传输请求在其中排队的待处理队列)来服务(框92)一个或更多个内容传输请求。处理电路24被配置为响应于当前正被服务的内容传输请求而从可用性中移除(框94)可用数据吞吐量率信用。

现在参考图10和11。图10是流程图100,包括在图1的系统10中使用加权循环选择来选择内容传输请求42的方法中的步骤。图11是提供图10的方法示例的框图。

处理电路24(图1)可以操作一个或更多个步调器以步调服务内容传输请求42。在一些实施例中,步调器可以服务于不同的存储设备18(图1),每个步调器服务于多个存储设备18。一些存储设备18可能具有比其他存储设备18更好的性能,因此选择内容传输请求42以在所有存储设备18上平等地服务可能导致存储子系统26(图1)的资源的次优使用。

因此,处理电路24被配置为向存储设备18分配(框102)相应的权重110。在一些实施例中,处理电路24被配置为响应于相应的性能(例如,性能速度、容量、传输率、平均访问时间、接口类型)向存储设备18指派相应的权重110。

处理电路24(图1)被配置为响应于内容传输请求42在存储子系统26上管理存储设备18(例如,在远程设备16(图1)和存储设备18之间)的内容传输(框104),同时响应于存储设备18的相应权重110,步调开始服务内容传输请求42中的相应的内容传输请求42,使得在内容传输请求42中的一些正在被服务的同时,其他的待处理服务的内容传输请求42中的一些在待处理队列44中排队。

在一些实施例中,处理电路24被配置为响应于内容传输请求42管理与存储设备18在存储子系统26上的内容传输,同时响应于存储子系统的备用数据容量(例如,图1的高速缓存34的备用高速缓存容量)的可用性和存储设备18的相应的权重来步调开始服务相应的内容传输请求42。可以使用在下文中参考图4描述的数据容量信用46,或使用参考图7至图9描述的数据吞吐量率信用来实现步调。

在一些实施例中,处理电路24被配置为使用来自待处理队列44的加权循环选择(框112)来选择(框108)相应的内容传输请求42以供存储子系统26服务(图4)。加权循环法响应于内容传输请求42所针对的存储设备18的权重110而被加权。

在一些实施例中,待处理队列44包括不同的存储设备特定队列44。在图11的示例中,示出了四个存储设备特定队列44,即,存储设备A的存储设备队列44-1,存储存储设备B的设备队列44-2,存储设备C的存储设备队列44-3,存储设备D的存储设备队列44-4。在图11的示例中,存储设备A被指派权重为1,存储设备B被指派权重为3,存储设备C被指派权重为2,存储设备D被指派权重为1。

处理电路24被配置为响应于相应的内容传输请求42所针对的相应的存储设备18,将相应的内容传输请求42指派(框106)到不同的存储设备特定队列44。例如,针对存储设备A的内容传输请求42(在图11中用字母“A”示出)在存储设备队列44-1中排队,等等。处理电路24被配置为使用加权循环选择(框112)从存储设备特定队列44中选择(框108)相应的内容传输请求42用于服务,其中加权循环响应于存储设备的权重110而被加权。在图11的示例中,当备用数据容量信用46变得可用时,例如,响应于存储设备A的1的权重从待处理队列44-1中选择一个内容传输请求42,然后选择三个内容传输请求42响应于存储设备B的权重3从待处理队列44-2中选择,然后响应于存储设备C的权重2从待处理队列44-3中选择两个内容传输请求42,然后选择一个内容传输请求响应于存储设备D的权重1,从待处理队列44-4中选择42,等等。然后根据存储子系统26的备用容量和排队的内容传输请求42以循环方式继续选择。因此,与较低性能的存储设备18相比,更高性能(例如,更快)的存储设备18接收更多的内容传输请求42存储设备18,由此导致通过存储子系统26传输内容的显著性能改进。故障存储设备18可以被临时指派为零的权重110,直到存储设备18不再故障。

现在参考图12,其是流程图120,包括在图1的系统10中动态指派权重110的方法中的步骤。还参考图11。处理电路24(图1)被配置为:监控(框122)存储设备18的相应的性能;并且响应于监视动态地更新(框124)指派给存储设备18的相应的权重110。

如果一个或更多个存储设备18开始出现错误,则上面参考图3-6描述的步调方法可能是次优的。例如,如果存储设备18之一被指派信用46然后变得卡住,则指派给该卡住的存储设备18的信用46保持指派给该卡住的存储设备18,即使该卡住的存储设备18是不活动的。因此,高速缓存34的数据容量实际上被浪费了,而存储设备18处于非活动状态。因此,本发明的实施例在下文中参考图13-21描述了一种系统和方法,用于找到故障存储设备18,并重新分配当前被指派给故障存储设备18的数据容量以供一个或更多个其他存储设备使用,同时被指派以由故障存储设备服务的内容传输请求仍然等待由故障存储设备18完成。在参考图17-21描述的公开的实施例中,计数器用于跟踪当前被指派给存储设备18的高速缓存数据容量并发现被卡住或以其他方式发生故障的存储设备18。

现在参考图13,其是流程图130,包括从图1的系统10中的故障存储设备18重新分配数据容量的方法中的步骤。

处理电路24(图1)被配置为响应于内容传输管理存储子系统26上与存储设备18(例如,在存储设备18和远程设备16之间)的内容传输(框132)请求42(图4),同时响应于存储子系统26的备用数据容量(例如,高速缓存34的备用高速缓存容量)的可用性来步调开始服务相应的内容传输请求42,使得同时一些内容传输请求42正在被服务,其他待服务分内容传输请求42在等待队列44中排队。

处理电路24被配置为找到(框134)故障存储设备,其当前被指派存储子系统26的给定数据容量(例如,经由一个或更多个数据容量信用46(图4))的(存储设备18中的),并且其当前被指派为服务一个或更多个内容传输请求42。参考图16和21更详细地描述查找故障存储设备18。

每个存储设备18可以与状态标志相关联。对于正确运行的存储设备18,状态标志可以等于“就绪(ready)”(或等效描述符),而对于故障存储设备18,该状态标志可以等于“故障(malfunctioning)”(或等效描述符)。

处理电路24被配置为重新分配(框136)当前被指派给找到的故障存储设备18的存储子系统26的数据容量,以供一个或更多个其他存储设备18使用,同时被指派给将由故障存储设备18服务的内容传输请求仍然/(正在)等待故障存储设备18完成。参考图16、18和21更详细地描述重新分配给定数据容量。

现在参考图14,其是流程图140,包括图13的方法的子方法中的步骤以处理新的内容传输请求42。下面描述的子方法可以在一个或更多个存储设备18发生故障(并且相关的状态标志等于“故障”)或者是否所有存储设备18都正常运行(并且具有等于“就绪”的状态标志)时执行。

处理电路24被配置为接收(框142)新的内容传输请求42。在判定框144,处理电路24被配置为检查新内容传输请求42所针对的存储设备18的状态。如果该存储设备18具有“故障”的标志状态,则处理电路24被配置为将新的内容传输请求42添加(框146)到待处理队列44或待处理队列44之一(例如,存储设备18的待处理队列44或该存储设备的待处理队列44之一)。

如果该存储设备18具有“就绪”的标志状态,则处理电路24被配置为检查(在判定框147)存储子系统26是否有足够的可用备用数据容量(例如,备用数据容量信用46)来服务新内容传输请求42。如果没有足够的可用备用数据容量来服务新内容传输请求42,则处理电路24被配置为将新内容传输请求42添加(框146)到待处理队列44或待处理队列44之一(例如,用于该存储设备18的待处理队列44或用于该存储设备的待处理队列44之一)。

如果存储子系统26有足够的可用备用数据容量来服务新的内容传输请求42,则处理电路24被配置为:指派(框148)数据容量(例如,数据容量信用46)(从备用数据容量池)到新的内容传输请求42;并且开始服务(框149)新的内容传输请求42,而无需首先将新的内容传输请求42添加到待处理队列44。

现在参考图15,其是流程图150,包括图13的方法的子方法中的步骤以处理完成服务内容传输请求42之一。处理电路24被配置为检测(框152)内容传输请求42之一已完成存储子系统26的服务(例如,响应于从存储子系统26接收到完成通知)。在判定块154,处理电路24被配置为检查与完成的内容传输请求42相关联的存储设备18的状态标志。如果状态标志等于“故障”,则子方法结束(框156)。如果状态标志等于“就绪”,则处理电路24被配置为将先前被指派给服务完成的内容传输请求42的数据容量添加(框158)回到备用数据容量池。例如,如果将X个数据容量信用46被指派给已完成的内容传输请求42,则现在将X个信用添加回备用数据容量池以指派给在待处理队列44中等待的其他内容传输请求42。

现在参考图16,其是流程图160,其包括图13的方法的子方法中的步骤以找到故障存储设备并重新分配找到的故障存储设备的数据容量。下文描述的框162-167的步骤描述了处理电路24,其被配置为响应于故障存储设备花费比给定超时值更长的时间来完成服务内容传输请求42而找到故障存储设备。

处理电路24被配置为选择存储设备18中的一个并且检查(框162)正在由所选存储设备18处理的内容传输请求42的处理定时。在判定块163,处理电路图24被配置为确定所选存储设备18是否花费比给定超时更长的时间来完成对内容传输请求42的服务。如果所选存储设备18花费比给定超时更长的时间来完成对内容传输请求42的服务,则处理电路24被配置(在判定框164)以确定所选存储设备18的状态。如果所选存储设备18的状态标志已经等于“故障”,则处理继续框165的步骤,如下所述。如果所选存储设备18的状态标志等于“就绪”,则处理电路24被配置为:改变(框166)所选存储设备18的状态标志以指示所选存储设备18发生故障;并且重新分配(框167)当前被指派给找到的故障存储设备18的存储子系统26的先前被指派的数据容量,以供一个或更多个其他存储设备18使用,同时指派以由故障存储设备18的内容传输请求仍在/(正在)等待故障存储设备18完成。

返回到判定框163,如果选择的存储设备18没有花费超过给定超时时间来完成对内容传输请求42的服务,则处理电路24被配置为(在判定框168处)确定选择的存储设备18的状态。如果选择的存储设备18的状态标志等于“就绪”,则处理继续到框165的步骤,如下所述。如果所选存储设备18的状态标志等于“故障”,从而指示所选存储设备已经开始再次操作并且已经处理了任何待处理的内容传输请求42,则处理电路24被配置为改变(框169)选择的存储设备18的状态标志为“就绪”,其指示选择的存储设备18正在正确运行,并且处理继续进行如下所述的框165的步骤。

在框165的步骤,处理电路24被配置为选择另一个存储设备18并继续处理框162的步骤。重复框165的步骤直到已经选择了所有存储设备18。周期性地重复参考图16描述的子方法。

现在参考图17,其是示出在图13的方法中在不同时间段和选择器索引170上处理内容传输请求42的框图。

图17显示了时间段T1到T4。选择器索引在连续的时间段内在0和1之间交替。例如,在时间段T1中,选择器索引被设置为0(框170-1)。在时间段T2中,选择器索引被设置为1(框170-2)。在时间段T3,选择器索引被设置为0(框170-3)。在时间段T4中,选择器索引被设置为1(框170-4)。

处理电路24使用计数器来跟踪不同时间段内发生故障的存储设备18。在一些实施例中,处理电路24使用两个计数器(针对每个存储设备18)跟踪由每个存储设备18处理的内容传输请求42,这两个计数器根据相应时间的选择器索引在交替的时间段中使用。例如,计数器0在选择器周期0激活的时间段内递增,计数器1在选择器周期1激活的时间段内递增。参考图18更详细地描述了计数器的使用。

图17示出了内容传输请求42-1在时间段T1开始由存储设备A服务,内容传输请求42-2在时间段T1开始由存储设备C服务,内容传输请求42-3在时间段T2开始由存储设备D服务,内容传输请求42-4在时间段T2开始由存储设备A服务,内容传输请求42-5在时间段T3开始由存储设备B服务,内容传输请求42-6在时间段T3开始由存储设备A服务,内容传输请求42-7在时间段T3开始由存储设备B服务,内容传输请求42-8开始由存储设备C在时间段T4。

现在参考图18,其是示出在图13的方法中使用计数器180、181来查找故障存储设备的框图。计数器180在选择器索引0的时间段内递增,并且计数器181在选择器索引1的时间段内递增。

图18示出了分别在时间段T1和时间段T2开始服务的两个内容传输请求42。在时间段T1,内容传输请求42-1开始由存储设备A服务。内容传输请求42-1具有关联的数据长度4,它表示要在存储设备A和远程设备16之一之间传输的数据量。由于时间段T1中的选择器索引等于0,计数器180递增4(从0)并且现在具有值4(框182-1)。计数器181在时间段T1中具有等于0的值(框184-1)。与内容传输请求42-1相关联的数据长度、存储设备18的ID和时间段1中的选择器索引被存储为内容传输请求42-1的元数据。

在时间段T2,内容传输请求42-4开始由存储设备A服务。内容传输请求42-4具有关联的数据长度6,其表示要在存储设备A和远程设备16之一之间传输的数据量。由于时间段T2中的选择器索引等于1,计数器181递增6(从0)并且现在具有值6(框184-2)。计数器180在时间段T2中仍然具有等于4的值(框182-2)。与内容传输请求42-4相关的数据长度、存储设备18的ID和时间段2中的选择器索引被存储为内容传输请求42-4的元数据。

当服务内容传输请求42-1完成时,检索内容传输请求42-1的元数据(以识别用于跟踪内容传输请求42-1并找到与内容传输请求42-1相关联的数据长度的计数器),并且计数器180递减内容传输请求42-1的相关数据长度,即4。类似地,当服务内容传输请求42-4完成时,检索内容传输请求42-4的元数据,并且计数器181递减传输请求42的相关数据长度4,即6。

时间段(例如,T1、T2等)的长度通常被设置为等于用于确定存储设备18是否发生故障的给定超时的大小。超时可能取决于存储设备的性能,并且可能是用户可配置的参数。该时间可能取决于连接的存储设备经历的最坏情况延迟。因此,如果存储设备A正常运行,则预计计数器180应该在计数器180递增之后的时间段内返回零。类似地,如果存储设备A正常运行,则预计计数器181应在计数器181递增之后的时间段内返回零。在图18的例子中,预计计数器180将在时间段T2内归零。

在图18的示例中,处理电路24在接近时间段T2的末尾检查计数器180,并发现计数器180非零。因此,处理电路24确定存储设备A故障。当前被指派给存储设备A的存储子系统26的数据容量(由计数器180的值(图18示例中的4)加上计数器181的值(图18示例中的6))被重新分配以供其他存储设备18使用。

现在参考图19,其是流程图190,包括图13的方法的子方法中的步骤以处理服务新内容传输请求42,包括使用计数器180、181。

处理电路24被配置为响应于开始服务所选内容传输请求42的决定,开始服务(框192)选定的内容传输请求42并且递增(框194)计数器180、181之一(取决于计数器递增的时间段的选择器索引)。计数器180在选择器索引0的时间段内递增,并且计数器181在选择器索引1的时间段内递增。计数器180、181响应于与所选内容传输请求42相关联的数据块的长度而在第一方向上前进。

因此,处理电路24被配置为针对与不同选择器索引相关联的不同时间段开始服务的内容传输请求42递增不同计数器180、181。处理电路24被配置为针对相应的不同存储设备18(故障和/或正常运行的存储设备18)的内容传输请求42操作不同的计数器180、181。例如,可以使用两个计数器来跟踪每个存储设备18。例如,存储设备A可能有两个计数器(一个在选择器索引为0的时间段内递增,并且一个在选择器索引为1的时间段内递增),存储设备B可能有两个计数器(一个在选择器索引为0的时间段内递增,并且一个在选择器索引为1的时间段内递增),依此类推。

现在参考图20,其是流程图200,包括图13的方法的子方法中的步骤以处理服务内容传输请求的完成,包括使用计数器。

处理电路24被配置为检测(框202)内容传输请求42之一已经完成由存储子系统26提供的服务(例如,响应于从存储子系统26接收到完成通知)。处理电路24被配置为从完成的内容传输请求42的元数据中检索(框203)存储设备ID、选择器索引和数据长度。处理电路24被配置为响应于服务内容传输请求的完成而递减(框204)计数器(响应于检索到的选择器索引和检索到的存储设备ID从计数器180或计数器181中选择)。响应于与完成的内容传输请求42相关联的数据块的长度(从元数据中检索),计数器在第二方向(与图19的框194的步骤中使用的第一方向相反)前进。

在判定框206,处理电路24被配置为检查与完成的内容传输请求42相关联的存储设备18的状态标志。如果状态标志等于“故障”,则子方法结束(框207)。如果状态标志等于“就绪”,则处理电路24被配置为基于数据块(从元数据中检索)的长度将先前被指派给服务完成的内容传输请求42的数据容量添加(框208)回至备用数据容量池。例如,如果最初将X个数据容量信用46指派给已完成的内容传输请求42,则现在将X个信用添加回备用数据容量池以指派给在待处理队列44中等待的其他内容传输请求42。

现在参考图21,其是流程图210,包括图13的方法的子方法中的步骤,以找到故障存储设备并重新分配找到的故障存储设备的数据容量,包括使用计数器180、181。

下文描述的框212-220的步骤描述了处理电路24被配置为找到存储设备18之一发生故障并且响应于当响应于开始服务所选内容传输请求42的决定而递增计数器的时间延迟之后的计数器(计数器180或计数器181)的值而花费比给定超时值更长的时间来完成对所选内容传输请求42的服务。下面描述的框220的步骤还描述了处理电路24是被配置为响应于为故障存储设备18操作的计数器180、181的值而找到当前被指派给故障存储设备18的高速缓存的给定数据容量,以重新分配给其他存储设备18。

现在更详细地描述框212-230的步骤。

框212-230的步骤通常在将选择器索引更新为下一个选择器索引之前执行。例如,如果当前选择器索引等于0,那么下一个选择器索引将等于1,如果当前选择器索引等于1,那么下一个选择器索引将等于0。

处理电路24被配置为选择存储设备18中的一个并且针对下一个选择器索引(即,下一个时间段的选择器索引)检查(框212)所选存储设备18的计数器的计数器值。在判定框214,处理电路24被配置为确定(下一个选择器索引的计数器的)检查的计数器值是否等于0。如果检查的计数器值不等于零(例如,大于零),指示所选存储设备18花费比给定超时更长的时间来完成对所选内容传输请求42的服务,则配置处理电路24(在判定框216)以确定选定存储设备18的状态。如果选定存储设备18的状态标志已经等于“故障”,则处理继续进行框220的步骤,如下所述。如果所选存储设备18的状态标志等于“就绪”,则处理电路24被配置为改变(框218)所选存储设备18的状态标志以指示所选存储设备18发生故障并基于所选择的存储设备的两个计数器180、181的值重新分配(框220)当前指派给找到的故障存储设备18的存储子系统26的先前指派的数据容量,将其返回到备用数据容量池以供一个或更多个其他存储设备18使用。例如,如果计数器180的值等于4并且计数器181的值等于6,则10个单元被重新分配回备用数据容量池。

返回到判定框214,如果检查的计数器值等于0,则处理电路24被配置为(在判定框222)确定所选存储设备18的状态。如果所选存储设备18的状态标志等于“就绪”,则处理继续到框220的步骤,如下所述。如果所选存储设备18的状态标志等于“故障”,则处理器被配置为(在判定框224)检查当前选择器索引的计数器是否等于0。如果当前选择器索引的计数器的值不等于0,则处理继续进行到块220的步骤,如下所述。如果当前选择器索引的计数器的值等于零(以及在判定框214确定的下一个选择器索引的计数器的值等于零),从而指示所选存储设备18已经再次开始操作并且已经处理了任何待处理的内容传输请求42,处理电路24被配置为将所选存储设备18的状态标志改变(框226)为“就绪”,指示所选存储设备18正在正确操作并且处理继续到框220的步骤,如下所述。

在框220的步骤,处理电路24被配置为确定是否有更多存储设备18要被选择用于图21的子方法。如果有一个或更多个存储设备18要选择,则处理电路24被配置为选择下一个存储设备18(框228)并继续处理块212的步骤。如果没有更多的存储设备18被选择,则处理电路24被配置为从当前选择器索引开始推进(框230)选择器索引,从而开始下一个时间段。参考图21描述的子方法在每个时间段结束时重复。

为了清楚起见,在单独实施例的上下文中描述的本发明的各种特征也可以在单个实施例中组合地提供。相反,为了简洁起见,在单个实施例的上下文中描述的本发明的各种特征也可以单独提供或以任何合适的子组合提供。

上述实施例是作为示例引用的,并且本发明不受上文具体示出和描述的内容的限制。而是,本发明的范围包括上文描述的各种特征的组合和子组合,以及本领域技术人员在阅读上述描述后会想到并且在现有技术中未公开的变化和修改。

相关技术
  • 汇总核对子系统的异步调用过程中的数据传输方法及装置
  • 汇总核对子系统的异步调用过程中的数据传输方法及装置
技术分类

06120115836307