一种流控方法及装置与流程

文档序号:33883366发布日期:2023-04-20 22:13阅读:48来源:国知局
一种流控方法及装置与流程

本技术涉及存储,尤其涉及一种流控方法及装置。


背景技术:

1、在存储系统中,客户(client)端设备通常通过远程直接内存访问(remote directmemory access,rdma)操作实现对存储服务器(storage server)中数据的读写。其中,rdma是一种用于解决网络传输中数据处理延迟的传输层网络协议,且基于rdma协议的内存访问具有低时延、中央处理单元(central processing unit,cpu)占用率低的特点。

2、在客户端设备通过rdma操作对存储服务器的数据进行读写的过程中,通常会将存储服务器的存储软件的部分功能卸载至网络接口卡(network interface card,nic)中,这样在存储服务器的nic接收到客户端设备通过rdma操作发送的输入输出(in/out,io)请求后并处理该io时,可以使存储服务器的nic直接和硬盘交互,从而减少了存储服务器的存储软件和nic、以及存储软件和硬盘的交互,进而降低了客户端设备远程读写存储服务端数据的时延。

3、对于存储服务器而言,存储服务器nic中的一个队列对(queue pair,qp)可以连接多个硬盘,以实现该多个硬盘的读写。然而,当该多个硬盘中的某个硬盘读写慢时,会拖慢其他硬盘的读写,进而导致了存储系统整体性能的下降。


技术实现思路

1、本技术提供了一种流控方法及装置,能够保证存储系统的读写性能。

2、为达上述目的,本技术提供如下技术方案:

3、第一方面,本技术提供了一种流控方法,该方法应用于服务端设备。在该方法中,服务端设备接收多个客户端设备中的第一客户端设备发送的第一输入输出io请求,其中,第一io请求用于访问该服务端设备的第一硬盘,第一硬盘是该服务端设备配置的多个硬盘中的一个。在接收所述第一io请求后,服务端设备通过多个缓存区中的第一缓存区处理该第一io请求,其中,该多个缓存区分别用于缓存访问上述多个硬盘的io请求的数据,第一缓存区专用于缓存访问第一硬盘的io请求的数据。

4、通过本技术提供的流控方法,由于服务端设备的每个硬盘配置有独立专用的缓存区,因此在服务端设备接收到用于访问第一硬盘的第一io请求后,只需基于与第一硬盘唯一对应的第一缓存区来处理第一io请求。这样,即使服务端设备的第一硬盘由于故障或其他原因导致读/写慢时,也不会影响服务端设备的其他硬盘的读写速度,从而保证了服务端设备所在的存储系统的整体性能。

5、另外,由于服务端设备的每个硬盘配置有独立专用的缓存区,因此即使某一客户端设备在短时间内向服务端设备发送大量访问第一硬盘的io请求,服务端设备为处理这些io请求也只会将第一硬盘对应的缓存区占满,而不会影响其他客户端设备访问服务端设备的其他硬盘的速度。即通过本技术提供的流控方法,能够避免多个客户端设备访问服务端设备时出现的可用资源不公平的问题。

6、在一种可能的设计方式中,上述方法还包括:确定第一缓存区中已占用空间的大小满足第一预设条件。响应该确定,向第一客户端设备发送拥塞指示,该拥塞指示用于指示第一客户端设备减少发送用于访问第一硬盘的io请求的数量。

7、在另一种可能的设计方式中,上述方法还包括:接收用于访问第一硬盘的多个io请求。当确定第一缓存区中已占用空间的大小满足第一预设条件,则响应该确定,向发送该多个io请求中的至少部分io请求的客户端设备发送拥塞指示,该拥塞指示用于指示接收到拥塞指示的客户端设备减少发送用于访问第一硬盘的io请求的数量。

8、在另一种可能的设计方式中,上述方法还包括:当确定第一缓存区中已占用空间的大小满足第二预设条件,则响应该确定,向发送该多个io请求中的每个io请求的客户端设备发送拥塞指示,该拥塞指示用于指示接收到拥塞指示的客户端设备减少发送用于访问第一硬盘的io请求的数量。

9、通过该几种可能的设计,由于服务端设备的每个硬盘配置有独立专用的缓存区,因此服务端设备能够通过拥塞指示针对性的控制客户端设备减少发送用于访问每个硬盘的io请求的数量。并且,通过设置不同的第一预设条件和第二预设条件,可以实现不同程度的控制客户端设备减少发送用于访问每个硬盘的io请求的数量。这样,能够减少、甚至避免服务端设备读/写每个硬盘时的io通路的拥塞。

10、在另一种可能的设计方式中,上述的拥塞指示还用于指示第一缓存区中空闲缓存区的大小。

11、在另一种可能的设计方式中,上述方法还包括:向第一客户端设备发送io响应报文,该io响应报文用于指示第一io请求已处理完成,以及用于指示第一缓存区中空闲缓存区的大小。

12、通过该两种可能的设计,服务端设备可以控制接收到拥塞指示或io响应报文的客户端设备,基于第一缓存区中空闲缓存区的大小确定发送用于访问第一硬盘的io请求的数量和/或大小,从而实现对客户端设备发送io请求是数量和/大小的精准控制。

13、在另一种可能的设计方式中,上述方法还包括:接收多个客户端设备中的第二客户端设备发送的第二io请求,第二io请求是用于访问第一硬盘的io请求。当确定处理第二io请求所需的缓存大于第一缓存区中空闲缓存区的大小,则将第二io请求所请求处理的数据分多次缓存在第一缓存区中。

14、例如,假设第二io请求是未携带待写数据的io写请求,则当服务端设备确定处理第二io请求所需的缓存大于第一缓存区中空闲缓存区的大小,服务端设备确定将待写数据划分为多个块,并通过多次从第二客户端设备读取待写数据来实现全部待写数据的读取。在这一过程中,服务端设备即分多次将第二io请求所请求写入的待写数据缓存在第一缓存区中,应理解,第一缓存区中每次缓存的数据为一部分待写数据。再例如,假设第二io请求是io读请求,则当服务端设备确定处理第二io请求所需的缓存大于第一缓存区中空闲缓存区的大小,服务端设备确定分多次将待读数据发送至第二客户端设备。在这一过程中,服务端设备即分多次将待读数据缓存在第一缓存区中。应理解,第一缓存区中每次缓存的数据为一部分待读数据。

15、这样,通过该可能的设计,服务端设备通过主动控制读取和写入数据的大小,从而提高了io请求被顺利处理的成功率。

16、在另一种可能的设计方式中,上述第一缓存区设置于服务端设备的内存,或者,上述第一缓存区设置于第一硬盘。

17、第二方面,本技术提供了一种流控装置。

18、在一种可能的设计方式中,该流控装置用于执行上述第一方面提供的任一种方法。本技术可以根据上述第一方面提供的任一种方法,对该流控装置进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。示例性的,本技术可以按照功能将该流控装置划分为接收单元和处理单元等。上述划分的各个功能模块执行的可能的技术方案和有益效果的描述均可以参考上述第一方面或其相应的可能的设计提供的技术方案,此处不再赘述。

19、在另一种可能的设计中,该流控装置包括:传输接口和一个或多个处理器,该一个或多个处理器通过该传输接口接收或发送数据,该一个或多个处理器被配置为调用存储在存储器中的程序指令,以使得流控装置执行如第一方面及其任一种可能的设计方式提供的任一种方法。

20、第三方面,本技术提供了一种存储系统,该存储系统包括服务端设备和多个客户端设备,该服务端设备用于执行如第一方面中的任一种可能的实现方式提供的任一种方法。

21、第四方面,本技术提供了一种计算机可读存储介质,该计算机可读存储介质包括程序指令,当程序指令在计算机或处理器上运行时,使得计算机或处理器执行第一方面中的任一种可能的实现方式提供的任一种方法。

22、第五方面,本技术提供了一种计算机程序产品,当其在流控装置上运行时,使得第一方面中的任一种可能的实现方式提供的任一种方法被执行。

23、第六方面,本技术提供了一种芯片系统,包括:处理器,处理器用于从存储器中调用并运行该存储器中存储的计算机程序,执行第一方面中的实现方式提供的任一种方法。

24、可以理解的是,上述提供的任一种装置、计算机存储介质、计算机程序产品或芯片系统等均可以应用于上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。

25、在本技术中,上述服务端设备、客户端设备、流控装置、存储系统等的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本技术类似,属于本技术权利要求及其等同技术的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1