CN116662015A - 存储网关性能优化方法、装置、网络设备和存储介质 - Google Patents

存储网关性能优化方法、装置、网络设备和存储介质 Download PDF

Info

Publication number
CN116662015A
CN116662015A CN202310790466.5A CN202310790466A CN116662015A CN 116662015 A CN116662015 A CN 116662015A CN 202310790466 A CN202310790466 A CN 202310790466A CN 116662015 A CN116662015 A CN 116662015A
Authority
CN
China
Prior art keywords
read
write
queue
write request
thread
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
Application number
CN202310790466.5A
Other languages
English (en)
Inventor
刘大猷
刘壕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Cloud Technologies Co Ltd
Original Assignee
New H3C Cloud Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by New H3C Cloud Technologies Co Ltd filed Critical New H3C Cloud Technologies Co Ltd
Priority to CN202310790466.5A priority Critical patent/CN116662015A/zh
Publication of CN116662015A publication Critical patent/CN116662015A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种存储网关性能优化方法、装置、网络设备和存储介质。其中,该方法包括:为来自请求端的读写请求分配处理线程,所述处理线程注册有下发协程和回调协程;通过所述下发协程从所述处理线程的线程上下文中获取所述处理线程对应的读/写资源信息,所述读/写资源信息包括所述处理线程对应的队列标识信息和卷句柄信息;基于所述卷句柄信息,通过所述下发协程将所述读/写请求插入所述队列标识信息所指示的读写队列中;通过所述回调协程检测来自存储引擎的读/写请求的响应信息,将所述响应信息发送至所述请求端。本申请实施例可以解决相关技术中的存储网关在IO数据处理过程中存在IO时延和线程资源开销均较大的技术问题。

Description

存储网关性能优化方法、装置、网络设备和存储介质
技术领域
本申请数据存储技术领域,具体涉及一种存储网关性能优化方法、装置、存储网关和存储介质。
背景技术
随着芯片和网络架构的演进以及人工智能、云计算等新兴技术的不断发展,对数据存储提出了更高的要求,相关技术中通常使用块存储系统来存储和管理数据。块存储系统通过存储网关来调度主机和存储引擎之间的通信数据。块存储系统中的存储网关包括块协议层和块存储服务层,块协议层的IO(读写)线程和块存储服务侧的IO线程共同处理IO数据,块协议层负责接收主机侧发送的IO请求并根据块协议解析IO,解析完成之后再重新封装IO并下发给块存储服务层,块存储服务层再将IO请求下发给存储引擎,块协议和块存储服务共用存储系统客户端IO队列和网络链接等IO相关资源。
然而,相关技术中的块存储网关中,块协议层和块存储服务层都有自己的IO处理线程,不同层中IO线程处理IO的过程中会出现线程的切换;因此,在IO数据处理过程中的IO时延和线程资源开销均较大。
发明内容
鉴于上述问题,本申请提供一种存储网关性能优化方法、装置、电子设备和存储介质,以至少解决相关技术中的存储网关在IO数据处理过程中存在IO时延和线程资源开销均较大的技术问题。
根据本申请实施例的第一方面,提供了一种存储网关性能优化方法,包括:为来自终端的读/写请求分配处理线程,上述处理线程注册有下发协程和回调协程;通过上述下发协程从上述处理线程的线程上下文中获取上述处理线程对应的读/写资源信息,上述读/写资源信息包括上述处理线程对应的队列标识信息和卷句柄信息;基于上述卷句柄信息,通过上述下发协程将上述读/写请求插入上述队列标识信息所指示的读写队列中;通过上述回调协程检测来自存储引擎的读/写请求的响应信息,将上述响应信息发送至上述终端。
根据本申请实施例的第二方面,提供了一种存储网关性能优化装置,上述存储网关性能优化装置包括:创建单元,用于为来自终端的读/写请求分配处理线程,上述处理线程注册有下发协程和回调协程;获取单元,用于通过上述下发协程从上述处理线程的线程上下文中获取上述处理线程对应的读/写资源信息,上述读/写资源信息包括上述处理线程对应的队列标识信息和卷句柄信息;插入单元,用于基于上述卷句柄信息,通过上述下发协程将上述读/写请求插入上述队列标识信息所指示的读写队列中;检测发送单元,用于通过上述回调协程检测来自存储引擎的读/写请求的响应信息,将上述响应信息发送至上述终端。
根据本申请实施例的第三方面,还提供了一种网络设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过上述计算机程序执行上述第一方面的存储网关性能优化方法。
根据本申请实施例的第四方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述第一方面的存储网关性能优化方法。
在本申请实施例中,采用了根据为来自终端的读/写请求分配处理线程,上述处理线程注册有下发协程和回调协程;通过上述下发协程从上述处理线程的线程上下文中获取上述处理线程对应的读/写资源信息,上述读/写资源信息包括上述处理线程对应的队列标识信息和卷句柄信息;基于上述卷句柄信息,通过上述下发协程将上述读/写请求插入上述队列标识信息所指示的读写队列中;通过上述回调协程检测来自存储引擎的读/写请求的响应信息,将上述响应信息发送至上述终端的方法;本申请相较于现有技术的存储网关,通过使用下发协程来下发终端的读/写请求、以及通过回调协程来接收存储引擎的读写响应信息,在处理IO请求的过程中无需进行线程切换;因此不仅能减少了IO时延和线程资源的开销,而且还提高了存储网关的处理器的利用率。
附图说明
通过阅读对下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在全部附图中,用相同的附图标号表示相同的部件。在附图中:
图1是根据相关技术中的一种可选的块存储系统的架构示意图;
图2是根据相关技术中的一种可选的存储网关的IO处理的流程示意图;
图3是根据本申请实施例的一种可选的存储网关性能优化方法的流程示意图;
图4是根据本申请实施例的一种可选的块存储系统的架构示意图;
图5是根据本申请实施例的又一种可选的块存储系统的架构示意图;
图6是根据本申请实施例的另一种可选的存储网关的IO处理的流程示意图;
图7是本申请实施例提供的一种存储网关性能优化装置的结构示意图;
图8为是本申请实施例提供的一种网络设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
如图1所示,相关技术中块存储系统中的存储网关包括块协议层和块存储服务层,块协议层的IO(读/写)线程和块存储服务侧的IO线程共同处理IO请求,块协议层负责接收主机侧发送的IO请求并根据块协议解析IO,解析完成之后再重新封装IO并下发给块存储服务层,块存储服务层再将IO请求下发给分布式存储集群中的存储引擎,块协议和块存储服务共用存储系统客户端IO队列和网络链接等IO相关资源。
然而,在块存储网关中块协议层和块存储服务层都有自己的IO处理线程,不同层中IO线程处理IO的过程中会出现线程的切换;因此,在IO数据处理过程中的IO时延和线程资源开销均较大。
为了解决上述技术问题,作为一种可选地实施方式,如图3所示,本申请实施例提供了一种存储网关性能优化方法,包括如下步骤:
S302,为来自终端的读/写请求分配处理线程,上述处理线程注册有下发协程和回调协程。
如图4所示,本申请实施例应用的块存储系统包括但不限于如下几个模块:通过网络结构连接到存储的主机(Nvme over fabric Host),与该主机相连的块存储网关,与块存储网关通过网络相连接的分布式存储引擎。块存储网关包括通过网络结构将主机连接到存储的块协议层、以及分布式块存储客户端(包括块存储服务层和存储系统客户端)。NvmExpress(简称为Nvme),或称非易失性内存主机控制器接口规范(Non Volatile MemoryHost Controller Interface Specification,NVMHCIS),Nvme是一个逻辑设备接口规范,它基于设备逻辑接口的总线传输协议规范(相当于通讯协议中的应用层),用于访问通过PCI Express(PCIe)总线附加的非易失性存储器介质(例如采用闪存的固态硬盘驱动器)。
具体地,本申请实施例中的请求端包括但不限于为手机、平板电脑、笔记本电脑、PC机,车载电子设备,可穿戴设备,或者通过网络结构连接到存储的主机等。存储网关为来自请求端的读/写请求分配处理线程,每个上述处理线程注册有下发协程和回调协程。如图5所示,来自请求端的读/写请求为Nvme读/写请求进入存储网关后,存储网关的块协议层为读/写请求(Nvme1至Nvme3)分配3个处理线程,每个处理线程在上述块协议层注册有下发协程和回调协程。
S304,通过上述下发协程从上述处理线程的线程上下文中获取上述处理线程对应的读/写资源信息,上述读/写资源信息包括上述处理线程对应的队列标识信息和卷句柄信息。
具体地,本申请实施例中的处理线程的资源信息为通过块存储服务层提供的IO资源接口来创建,然后保存到每个处理线程自身的上下文中。块存储服务层提供IO轮询接口给块协议层,块协议层通过该IO轮询接口来获取存储引擎侧完成的读/写请求。
S306,基于上述卷句柄信息,通过上述下发协程将上述读/写请求插入上述队列标识信息所指示的读写队列中。
具体地,在本申请实施例中,如图5所示,每个卷句柄对应不同的卷实例(卷LUN1或卷LUN2),卷LUN1和卷LUN2位于块存储服务层,存储块(BDEV1至BDEV3)位于块协议层,卷LUN1与BDEV1和BDEV2相映射,卷LUN2与BDEV3相映射;例如基于上述卷句柄信息为卷LUN1,通过下发协程将上述读/写请求下发至卷LUN1,然后基于块存储客户端插入上述队列标识信息所指示的读写队列中。如图6所示,基于IO下发协程1将IO处理线程1对应的读/写请求依次插入IO队列1,基于IO下发协程2将IO处理线程2对应的读/写请求依次插入IO队列2。上述IO队列1和IO队列2分别与每个处理线程相绑定;需要说明的是,本申请可以通过一个队列来存储读/写请求和与该读/写请求对应的响应信息。或者,通过两个队列分别来存储读/写请求和与该读/写请求对应的响应信息。
如图2所示,相关技术中多个IO下发线程在处理IO过程中对读写队列采用队列锁来管控多线程数据处理流程,本申请相较于相关技术中采用队列锁来管理每个IO下发线程对应的读/写请求,由于块协议层每个IO处理线程独立分配并维护下发协程所需的IO资源,避免了每个处理线程在处理IO的过程中对IO资源的竞争并减少了资源占用和锁的使用,因此提高了多线程读写存储卷的性能。
S308,通过上述回调协程检测来自存储引擎的读/写请求的响应信息,将上述响应信息发送至上述请求端。
具体地,本申请实施例中,通过存储系统客户端将读写队列中的读/写请求发送至存储引擎后,存储引擎将读/写请求的响应信息回复给存储系统客户端,然后通过上述回调协程将上述响应信息发送至上述终端。
在本申请实施例中,采用了根据为来自终端的读/写请求分配处理线程,上述处理线程注册有下发协程和回调协程;通过上述下发协程从上述处理线程的线程上下文中获取上述处理线程对应的读/写资源信息,上述读/写资源信息包括上述处理线程对应的队列标识信息和卷句柄信息;基于上述卷句柄信息,通过上述下发协程将上述读/写请求插入上述队列标识信息所指示的读写队列中;通过上述回调协程检测来自存储引擎的读/写请求的响应信息,将上述响应信息发送至上述终端的方法;本申请相较于现有技术的存储网关,通过使用下发协程来下发终端的读/写请求、通过回调协程来接收存储引擎的读写响应信息,在处理IO请求的过程中无需进行线程切换;不仅能减少了IO时延和线程资源的开销,而且还提高了存储网关的处理器的利用率。
在一个或多个实施例中,上述为来自终端的读/写请求分配处理线程之前,还包括:
为第一处理线程注册下发协程和回调协程;其中,上述第一处理线程为上述处理线程中的任一线程,上述第一处理线程与上述存储网关的逻辑处理器绑定;
确定所述第一处理线程的读/写操作对应的读/写资源信息,将上述读/写资源信息写入第一处理线程的线程上下文。
具体地,在本申请实施例中,存储网关的块协议层为每个处理线程均注册有对应的下发协程和回调协程;然后将每个处理线程对应的读/写资源信息写入该处理线程的线程上下文。需要说明的是,这里的逻辑处理器为处理器的一个逻辑核,每个处理线程与存储网关的处理器的一个逻辑核绑定,请求端中的应用程序的读/写请求从下发到完成都在同一个逻辑核上完成,如此可以更高效的利用处理器的缓存,同时也避免了多核之间的内存同步问题。
在一个或多个实施例中,上述读写队列包括下发队列,上述基于上述卷句柄信息,通过上述下发协程将上述读/写请求插入上述队列标识信息所指示的读写队列中,包括:
确定与上述卷句柄信息对应的卷实例;
基于上述下发协程将所读/写请求下发至上述卷实例;
确定与上述队列标识信息匹配的下发队列,将上述卷实例中的读/写请求插入上述下发队列中。
具体地,确定与上述卷句柄信息对应的卷实例为卷LUN1,通过下发协程将上述读/写请求下发至卷LUN1,然后基于块存储客户端插入上述队列标识信息所指示的读写队列中。如图6所示,IO下发协程1对应的队列标识为IO队列1,IO下发线程2对应的队列标识为IO队列2,基于IO下发线程1将IO处理线程对应的读/写请求依次插入IO队列1,基于IO下发线程2将IO处理线程对应的读/写请求依次插入IO队列2。
在一个或多个实施例中,上述读写队列还包括完成队列,上述通过上述回调协程检测来自存储引擎的读/写请求的响应信息,将上述响应信息发送至上述终端,包括:
确定与上述队列标识信息匹配的完成队列;其中,上述完成队列用于存储完成读写任务的读/写请求;
基于上述回调协程检测来自存储引擎的读/写请求的响应信息,基于上述响应信息确定完成读写任务的读/写请求;
将上述完成读写任务的读/写请求插入上述完成队列;将上述完成队列中的读/写请求对应的响应信息,发送至上述终端。
具体地,本申请实施例中还配置有与下发队列对应的完成队列,例如,IO队列1为下发队列时,与IO队列1对应的完成队列为完成队列1,IO队列1中的每个读/写请求发送到存储引擎后,存储引擎会返回每个读/写请求对应的响应信息,例如读写成功的结果,或返回特定的值等信息;回调协程将完成读写任务的读/写请求插入至完成队列1中;并将上述完成队列中1的读/写请求对应的响应信息,发送至上述终端。
在一个或多个实施例中,上述响应信息包括校验值和处理结果,上述基于上述回调协程检测来自存储引擎的读/写请求的响应信息,基于上述响应信息确定完成读写任务的读/写请求,包括:
基于上述回调协程检测来自存储引擎的读/写请求的校验值和处理结果,将校验值为预设校验值对应的读/写请求确定为完成读写任务的读/写请求;
将上述完成队列中的读/写请求对应的响应信息,发送至上述终端,包括:
基于上述回调协程将上述完成队列中的读/写请求对应的处理结果,发送至上述终端。
具体地,在本申请实施例中,例如上述预设校验值为零,即校验值为零时的读/写请求为任务完成的状态;若校验值为非零值,说明当前读/写请求任务出错。将校验值为零对应的读/写请求确定为完成读写任务的读/写请求。这里的处理结果包括但不限于为写入成功或读取到的结果值;假设当读/写请求为写入请求时,该写入请求对应的处理结果包括写入成功;假设当读/写请求为读取文档请求时,该读取文档对应的请求的处理结果包括该文档对应为文本数据。然后基于回调协程将上述完成队列中的读/写请求对应的处理结果,发送至上述终端。
在一个或多个实施例中,上述基于上述回调协程检测来自存储引擎的读/写请求的响应信息,包括:
基于上述回调协程中的轮询接口,轮询来自存储引擎的读/写请求的响应信息。
具体地,本申请实施例通过回调协程提供的轮询接口,轮询来自存储引擎的读/写请求的响应信息,当轮询到有非零值时,确定有完成读写任务的读/写请求。在一示例中,通过控制轮询IO接口按照预设周期来定时轮询来自存储引擎的读/写请求的响应信息。
在一个或多个实施例中,上述存储网关的性能优化方法,还包括:
配置与上述第一处理线程匹配的哈希表;根据上述哈希表查询上述第一处理线程对应的队列标识信息以及与读/写请求对应的资源信息。
具体地,在存储网关中配置哈希表,可以方便存储系统客户端通过该哈希表来查询所有处理线程对应的资源信息;例如,查询上述第一处理线程对应的队列标识信息以及与读/写请求对应的资源信息,这里的资源信息包括资源池和网络资源等。在一示例中,为每个处理线程均配置一个哈希表,可以更加方便快捷的使得存储系统客户端根据上述哈希表查询上述第一处理线程对应的队列标识信息以及目标存储引擎。而且在多个处理线程查询其对应的资源信息,无需对哈希表进行加锁处理,不仅提高了查询速度,而且提升存储网关的IO处理性能。
基于上述实施例,作为一种可选地实施方式,本申请实施例还提供了一种存储网关性能优化方法,包括如下步骤:
S1.通过网络结构连接到存储的主机,基于和存储网关建立的网络链接发送Nvme读/写请求到块协议层的网卡队列中。
S2.块协议层创建块设备,每个IO处理线程调用一次块存储服务提供的IO资源创建接口,将所需的IO资源保存到线程的上下文中,并让每个IO处理线程执行打开卷操作,将卷句柄资源同步保存到各线程的上下文。
S3.在块协议层为IO处理线程注册两个协程,IO下发协程和IO回调协程,两个协程处理流程如下:
如图5所示,IO下发协程的执行步骤包括:1.1)轮询和上述主机的网络链接,如果轮询到数据,将数据经过Nvme-of协议进行处理,解析出当前的IO信息,然后将IO信息下发给对应BDEV设备(BDEV1至BDEV3)。
1.2)BDEV设备调用块存储服务提供的异步IO接口将IO下发给存储卷(LUN1和LUN2),存储卷卷通过调用存储系统客户端的IO接口将IO请求下发到存储引擎。循环执行上述步骤1.1)-1.2)。
IO回调协程的执行步骤包括:2.1)调用块存储服务层提供的IO轮询接口,轮询存储系统客户端和存储引擎的网络链接,对轮询到的IO响应信息通过回调协程进行处理。
2.2)回调协程将IO请求对应的响应信息经过Nvme-of协议处理后返回给上述主机。循环执行上述步骤2.1)-2.2)。
通过本申请的上述技术方案,在存储网关中,将块协议层和块存储服务层的IO线程合并为块协议的IO处理线程,通过注册不同协程分别处理IO下发和IO回调,避免了存储网关的IO处理流程中出现线程切换,降低IO时延的同时提高了CPU的利用率。而且块协议层每个IO处理线程独立分配并维护下发IO所需的IO资源,避免了线程在处理IO的过程中对IO资源的竞争,并且减少了资源占用和锁的使用,提高了存储网关对于多线程读写卷的性能。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本申请实施例的另一个方面,还提供了一种用于实施上述存储网关性能优化方法的存储网关性能优化装置。如图7所示,该装置包括:
创建单元702,用于为来自请求端的读/写请求分配处理线程,上述处理线程注册有下发协程和回调协程;
获取单元704,用于通过上述下发协程从上述处理线程的线程上下文中获取上述处理线程对应的读/写资源信息,上述读/写资源信息包括上述处理线程对应的队列标识信息和卷句柄信息;
插入单元706,用于基于上述卷句柄信息,通过上述下发协程将上述读/写请求插入上述队列标识信息所指示的读写队列中;
检测发送单元708,用于通过上述回调协程检测来自存储引擎的读/写请求的响应信息,将上述响应信息发送至上述请求端。
在本申请实施例中,采用了根据为来自终端的读/写请求分配处理线程,上述处理线程注册有下发协程和回调协程;通过上述下发协程从上述处理线程的线程上下文中获取上述处理线程对应的读/写资源信息,上述读/写资源信息包括上述处理线程对应的队列标识信息和卷句柄信息;基于上述卷句柄信息,通过上述下发协程将上述读/写请求插入上述队列标识信息所指示的读写队列中;通过上述回调协程检测来自存储引擎的读/写请求的响应信息,将上述响应信息发送至上述终端的方法;本申请相较于现有技术的存储网关,通过使用下发协程来下发终端的读/写请求、通过回调协程来接收存储引擎的读写响应信息,在处理IO请求的过程中无需进行线程切换;不仅能减少了IO时延和线程资源的开销,而且还提高了存储网关的处理器的利用率。
在一个或多个实施例中,上述存储网关性能优化装置,还包括:
注册单元,用于为第一处理线程注册下发协程和回调协程;其中,上述第一处理线程为上述处理线程中的任一线程,上述第一处理线程与上述存储网关的逻辑处理器绑定;
写入单元,用于确定所述第一处理线程的读/写操作对应的读/写资源信息,将上述读/写资源信息写入第一处理线程的线程上下文。
在一个或多个实施例中,上述读写队列包括下发队列,上述插入单元706,包括:
第一确定模块,用于确定与上述卷句柄信息对应的卷实例;
下发模块,用于基于上述下发协程将所读/写请求下发至上述卷实例;
第二确定模块,用于确定与上述队列标识信息匹配的下发队列,将上述卷实例中的读/写请求插入上述下发队列中。
在一个或多个实施例中,上述读写队列还包括完成队列,上述检测发送单元708,包括:
第三确定模块,用于确定与上述队列标识信息匹配的完成队列;
检测确定模块,用于基于上述回调协程检测来自存储引擎的读/写请求的响应信息,基于上述响应信息确定完成读写任务的读/写请求。
插入模块,用于将上述完成读写任务的读/写请求插入上述完成队列;
发送模块,用于将上述完成队列中的读/写请求对应的响应信息发送至上述终端。
在一个或多个实施例中,上述检测确定模块,包括:
确定子单元,用于基于上述回调协程检测来自存储引擎的读/写请求的校验值和处理结果,将校验值为预设校验值对应的读/写请求确定为完成读写任务的读/写请求;
上述发送模块,包括:
发送子单元,用于基于上述回调协程将上述完成队列中的读/写请求对应的处理结果,发送至上述终端。
在一个或多个实施例中,上述检测确定模块,包括:
轮询子单元,用于基于上述回调协程中的轮询接口,轮询来自存储引擎的读/写请求的响应信息。
在一个或多个实施例中,上述存储网关性能优化装置,还包括:
配置单元,用于配置与上述第一处理线程匹配的哈希表;
查询单元,用于根据上述哈希表查询上述第一处理线程对应的队列标识信息以及与读/写请求对应的资源信息。
根据本申请实施例的又一个方面,还提供了一种用于实施上述存储网关性能优化方法的网络设备,该网络设备包括但不限于为存储网关。本实施例以网络设备为存储网关为例来说明。如图8所示,该存储网关包括存储器802和处理器804,该存储器802中存储有计算机程序,该处理器804被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储网关可以为计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,为来自请求端的读/写请求分配处理线程,上述处理线程注册有下发协程和回调协程;
S2,通过上述下发协程从上述处理线程的线程上下文中获取上述处理线程对应的读/写资源信息,上述读/写资源信息包括上述处理线程对应的队列标识信息和卷句柄信息;
S3,基于上述卷句柄信息,通过上述下发协程将上述读/写请求插入上述队列标识信息所指示的读写队列中;
S4,通过上述回调协程检测来自存储引擎的读/写请求的响应信息,将上述响应信息发送至上述请求端。
其中,存储器802可用于存储软件程序以及模块,如本申请实施例中的存储网关性能优化方法和装置对应的程序指令/模块,处理器804通过运行存储在存储器802内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的存储网关性能优化方法。存储器802可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器802可进一步包括相对于处理器804远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器802具体可以但不限于用于存储读/写请求。作为一种示例,如图8所示,上述存储器802中可以但不限于包括上述存储网关性能优化装置中的创建单元702、获取单元704、插入单元706和检测发送单元708。此外,还可以包括但不限于上述存储网关性能优化装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置806用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置806包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置806为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述网络设备还包括:连接总线808,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述存储网关可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
在一个或多个实施例中,本申请还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述存储网关性能优化方法。其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,为来自请求端的读/写请求分配处理线程,上述处理线程注册有下发协程和回调协程;
S2,通过上述下发协程从上述处理线程的线程上下文中获取上述处理线程对应的读/写资源信息,上述读/写资源信息包括上述处理线程对应的队列标识信息和卷句柄信息;
S3,基于上述卷句柄信息,通过上述下发协程将上述读/写请求插入上述队列标识信息所指示的读写队列中;
S4,通过上述回调协程检测来自存储引擎的读/写请求的响应信息,将上述响应信息发送至上述请求端。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。

Claims (14)

1.一种存储网关性能优化方法,其特征在于,所述方法包括:
为来自请求端的读/写请求分配处理线程,所述处理线程注册有下发协程和回调协程;
通过所述下发协程从所述处理线程的线程上下文中获取所述处理线程对应的读/写资源信息,所述读/写资源信息包括所述处理线程对应的队列标识信息和卷句柄信息;
基于所述卷句柄信息,通过所述下发协程将所述读/写请求插入所述队列标识信息所指示的读写队列中;
通过所述回调协程检测来自存储引擎的读/写请求的响应信息,将所述响应信息发送至所述请求端。
2.根据权利要求1所述的方法,其特征在于,所述为来自请求端的读写请求分配处理线程之前,还包括:
为第一处理线程注册下发协程和回调协程;其中,所述第一处理线程为所述处理线程中的任一线程,所述第一处理线程与所述存储网关的逻辑处理器绑定;
确定所述第一处理线程的读/写操作对应的读/写资源信息,将所述读/写资源信息写入所述第一处理线程的线程上下文。
3.根据权利要求1或2所述的方法,其特征在于,所述读写队列包括下发队列,所述基于所述卷句柄信息,通过所述下发协程将所述读/写请求插入所述队列标识信息所指示的读写队列中,包括:
确定与所述卷句柄信息对应的卷实例;
基于所述下发协程将所述读/写请求下发至所述卷实例;
确定与所述队列标识信息匹配的下发队列,将所述卷实例中的读/写请求插入所述下发队列中。
4.根据权利要求3所述的方法,其特征在于,所述读写队列还包括完成队列,所述基于所述回调协程检测来自存储引擎的读/写请求的响应信息,将所述响应信息发送至所述请求端,包括:
确定与所述队列标识信息匹配的完成队列;
基于所述回调协程检测来自存储引擎的读/写请求的响应信息,基于所述响应信息确定完成读/写任务的读写请求;
将所述完成读/写任务的读/写请求插入所述完成队列;
将所述完成队列中的读/写请求对应的响应信息,发送至所述请求端。
5.根据权利要求4所述的方法,其特征在于,所述响应信息包括校验值和处理结果,所述基于所述回调协程检测来自存储引擎的读/写请求的响应信息,基于所述响应信息确定完成读/写任务的读写/请求,包括:
基于所述回调协程检测来自存储引擎的读/写请求的校验值和处理结果,将校验值为预设校验值对应的读写请求确定为完成读写任务的读写请求;
将所述完成队列中的读/写请求对应的响应信息,发送至所述请求端,包括:
基于所述回调协程将所述完成队列中的读/写请求对应的处理结果,发送至所述请求端。
6.根据权利要求4或5所述的方法,其特征在于,所述基于所述回调协程检测来自存储引擎的读/写请求的响应信息,包括:
基于所述回调协程中的轮询接口,轮询来自存储引擎的读/写请求的响应信息。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
配置与所述第一处理线程匹配的哈希表;
根据所述哈希表查询所述第一处理线程对应的队列标识信息以及与读/写请求对应的资源信息。
8.一种存储网关性能优化装置,其特征在于,所述装置包括:
创建单元,用于为来自请求端的读/写请求分配处理线程,所述处理线程注册有下发协程和回调协程;
获取单元,用于通过所述下发协程从所述处理线程的线程上下文中获取所述处理线程对应的读/写资源信息,所述读/写资源信息包括所述处理线程对应的队列标识信息和卷句柄信息;
插入单元,用于基于所述卷句柄信息,通过所述下发协程将所述读/写请求插入所述队列标识信息所指示的读写队列中;
检测发送单元,用于通过所述回调协程检测到来自存储引擎的读/写请求的响应信息,将所述响应信息发送至所述请求端。
9.根据权利要求8所述的装置,其特征在于,所述存储网关性能优化装置,还包括:
注册单元,用于为第一处理线程注册下发协程和回调协程;其中,所述第一处理线程为所述处理线程中的任一线程,所述第一处理线程与所述存储网关的逻辑处理器绑定;
写入单元,用于确定所述第一处理线程的读/写操作对应的读/写资源信息,将所述读/写资源信息写入第一处理线程的线程上下文。
10.根据权利要求8或9所述的装置,其特征在于,所述读写队列包括下发队列,所述插入单元,包括:
第一确定模块,用于确定与所述卷句柄信息对应的卷实例;
下发模块,用于基于所述下发协程将所述读/写请求下发至所述卷实例;
第二确定模块,用于确定与所述队列标识信息匹配的下发队列,将所述卷实例中的读/写请求插入所述下发队列中。
11.根据权利要求10所述的装置,其特征在于,所述检测发送单元,包括:
第三确定模块,用于确定与所述队列标识信息匹配的完成队列;
检测确定模块,用于基于所述回调协程检测来自存储引擎的读/写请求的响应信息,基于所述响应信息确定完成读写任务的读/写请求;
插入模块,用于将所述完成读/写任务的读/写请求插入所述完成队列;
发送模块,用于将所述完成队列中的读/写请求对应的响应信息,发送至所述请求端。
12.根据权利要求9所述的装置,其特征在于,所述装置还包括:
配置单元,用于配置与所述第一处理线程匹配的哈希表;
查询单元,用于根据所述哈希表查询所述第一处理线程对应的队列标识信息以及与读/写请求对应的资源信息。
13.一种网络设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序以实现如权利要求1-7任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行实现如权利要求1-7中任一项所述的方法。
CN202310790466.5A 2023-06-29 2023-06-29 存储网关性能优化方法、装置、网络设备和存储介质 Pending CN116662015A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310790466.5A CN116662015A (zh) 2023-06-29 2023-06-29 存储网关性能优化方法、装置、网络设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310790466.5A CN116662015A (zh) 2023-06-29 2023-06-29 存储网关性能优化方法、装置、网络设备和存储介质

Publications (1)

Publication Number Publication Date
CN116662015A true CN116662015A (zh) 2023-08-29

Family

ID=87724177

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310790466.5A Pending CN116662015A (zh) 2023-06-29 2023-06-29 存储网关性能优化方法、装置、网络设备和存储介质

Country Status (1)

Country Link
CN (1) CN116662015A (zh)

Similar Documents

Publication Publication Date Title
CN109428922B (zh) 一种订阅发布方法及服务器
US10146848B2 (en) Systems and methods for autonomous, scalable, and distributed database management
CN113965560A (zh) 数据传输方法和代理服务器、存储介质及电子装置
CN103475682B (zh) 文件迁移方法及设备
CN108319496B (zh) 资源访问方法、业务服务器、分布式系统及存储介质
CN111786998A (zh) 基于微服务调用的权限管理方法、装置及存储介质
CN110430274A (zh) 一种基于云存储的文件下载方法及系统
WO2017107463A1 (zh) 一种分发cdn地址的方法及装置
CN113127168A (zh) 服务分配方法、系统、装置、服务器及介质
CN112698838B (zh) 多云容器部署系统及其容器部署方法
CN115080479B (zh) 传输方法、服务器、设备、裸金属实例及基板管理控制器
CN111083204B (zh) 文件传输方法、装置及存储介质
CN107579929B (zh) 一种可靠连接通信队列对的设置方法、系统及相关装置
CN110035128B (zh) 一种直播调度方法、装置、直播系统及存储介质
JP7098711B2 (ja) 遠隔ノード発見、ならびに通信チャネル確認および通信チャネル接続のためのプロセッサによって実施される方法、コンピュータ・システム、およびコンピュータ・プログラム
CN111614792B (zh) 透传方法、系统、服务器、电子设备及存储介质
CN116662015A (zh) 存储网关性能优化方法、装置、网络设备和存储介质
CN109218156A (zh) 一种动态连接数据的管理方法
CN115422184A (zh) 一种数据获取方法、装置、设备及存储介质
CN112769863B (zh) 一种业务请求报文数据的处理方法、装置、电子设备及可读存储介质
CN115080771A (zh) 基于人工智能的数据处理方法及装置、介质、网关设备
CN105912477B (zh) 一种目录读取的方法、装置及系统
KR101794200B1 (ko) 리눅스 기반 패킷 프로세서를 이용하는 분산 패킷 전송 네트워크의 프로토콜 패킷 송수신 방법
CN111679918B (zh) 一种消息传输方法及装置
CN111857548B (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