用于在远程直接存储器访问网络中传送数据分组的方法和系统与流程

文档序号:29032198发布日期:2022-02-24 13:55阅读:145来源:国知局
用于在远程直接存储器访问网络中传送数据分组的方法和系统与流程
用于在远程直接存储器访问网络中传送数据分组的方法和系统
1.交叉引用
2.本技术要求于2020年8月21日在印度专利局递交的印度专利申请号202041036166的优先权,其全部公开内容通过引用进行并入。
技术领域
3.本公开大体上涉及数据传输领域,并且更具体地涉及用于在感知非易失性存储器快速(nvme)的远程直接存储器访问(rdma)网络中传送数据分组的方法和系统。


背景技术:

4.在远程直接存储器访问(rdma)系统中,启用主机rdma的网络接口控制器(rnic)和目标rnic可以使用队列对来传送数据分组。主机rnic和目标rnic两者可以各自生成其自身的rdma队列对和仲裁策略。这些队列对优选地彼此对准,因此在队列对中不存在失配。随着在rdma系统上支持非易失性存储器快速(nvme)的出现,可以将感知nvme的存储器设备通过目标rnic连接到主机rnic。在这种情况下,存储器设备可以生成其自身的队列对和仲裁策略,该仲裁策略可能与主机rnic和/或目标rnic中所设置的仲裁策略不同。因此,这可能会导致主机rnic、目标rnic和/或目标存储器设备之间的仲裁策略上的失配。该部分中所公开的信息仅用于增强对一般相关技术的理解,并且不应出于审查目的而被视为对现有技术的指示。


技术实现要素:

5.在本公开的实施例中,一种由感知非易失性存储器快速(nvme)的远程直接存储器访问(rdma)网络中的主机远程网络接口控制器(rnic)来发送数据分组的方法,可以包括:由主机rnic从发起主机或主机发起器接收rdma命令,其中,rdma命令包括数据分组;由主机rnic基于rdma队列对的权重和优先级来布置数据分组;由主机rnic基于rdma队列对的权重和优先级将数据分组从主机rdma队列对存储到主机队列中;以及由主机rnic通过主机rnic虚拟通道将数据分组发送到目标rnic。
6.在本公开的实施例中,一种由感知nvme的rdma网络中的目标rnic接收数据分组的方法,可以包括:由目标rnic从主机rnic接收数据分组;由目标rnic基于rdma队列对的权重和优先级来布置数据分组;由目标rnic基于rdma队列对的权重和优先级将数据分组从目标rdma队列对存储到目标rnic队列中;以及由目标rnic使用目标rnic的虚拟通道供应商仲裁格式(vlvaf)将数据分组发送到感知nvme的固态驱动器(ssd)。
7.在本公开的实施例中,一种用于在感知nvme的rdma网络中发送数据分组的主机rnic,可以包括:处理器和通信地耦合到处理器的存储器,其中,存储器存储处理器可执行的指令,该指令在被执行时使处理器:从主机发起器接收rdma命令,其中,rdma命令包括数据分组,并且还使处理器:基于rdma队列对的权重和优先级来布置数据分组;基于rdma队列
对的权重和优先级,将数据分组从主机rdma队列对存储到主机队列中;以及将数据分组通过主机虚拟通道发送到目标rnic。
8.在实施例中,本公开可以涉及一种用于在感知nvme的rdma网络中接收数据分组的目标rnic。目标rnic包括:处理器和通信地耦合到处理器的存储器,其中,存储器存储处理器可执行的指令,该指令在被执行时使处理器:从主机远程网络接口控制器(rnic)接收数据分组;基于rdma队列对的权重和优先级来布置数据分组;基于rdma队列对的权重和优先级,将数据分组从目标rdma队列对存储到目标队列中;以及将数据分组通过目标虚拟通道发送到感知nvme的固态驱动器(ssd)。
9.在本公开的实施例中,一种由远程直接存储器访问(rdma)网络中的主机远程网络接口控制器(rnic)发送数据分组的方法,包括:由主机rnic接收rdma命令,其中,rdma命令包括数据分组;由主机rnic根据仲裁格式基于rdma队列对的权重和优先级来布置数据分组;由主机rnic基于rdma队列对的权重和优先级将数据分组从主机rdma队列对存储到主机队列中;以及由主机rnic将数据分组通过主机虚拟通道发送到rdma网络。
10.在本公开的实施例中,一种由远程直接存储器访问(rdma)网络中的目标远程网络接口控制器(rnic)接收数据分组的方法,包括:由目标远程网络接口控制器(rnic)从网络接收数据分组;由目标rnic根据仲裁格式基于rdma队列对的权重和优先级来布置数据分组;由目标rnic基于rdma队列对的权重和优先级将数据分组从目标rdma队列对存储到目标队列中;以及由目标rnic基于仲裁格式使用虚拟通道将数据分组发送到远程存储器设备。
11.在本公开的实施例中,一种用于在感知非易失性存储器快速(nvme)的远程直接存储器访问(rdma)网络中发送数据分组的主机远程网络接口控制器(rnic),包括:处理器;以及存储器,通信地耦合到处理器,其中,存储器存储处理器可执行的指令,该指令在被执行时使处理器:从主机发起器接收rdma命令,其中,rdma命令包括数据分组;基于rdma队列对的权重和优先级来布置数据分组;基于rdma队列对的权重和优先级,将数据分组从主机rdma队列对存储到主机队列中;以及将数据分组通过主机虚拟通道发送到目标rnic。
12.在本公开的实施例中,一种用于在感知非易失性存储器快速(nvme)的远程直接存储器访问(rdma)网络中接收数据分组的目标远程网络接口控制器(rnic),包括:处理器;以及存储器,通信地耦合到处理器,其中,存储器存储处理器可执行的指令,该指令在被执行时使处理器:从主机远程网络接口控制器(rnic)接收数据分组;基于rdma队列对的权重和优先级来布置数据分组;基于rdma队列对的权重和优先级,将数据分组从目标rdma队列对存储到目标队列中;以及将数据分组通过目标虚拟通道发送到感知nvme的固态驱动器(ssd)。
13.前述发明内容是说明性的而非限制性的。除了上述说明性方面、实施例和特征之外,通过参考附图和下面的描述,其他方面、实施例和特征将变得清楚明白。
附图说明
14.并入本公开并构成本公开的一部分的附图示出了示例性实施例,并且与说明书一起用于说明所公开的原理。在附图中,附图标记最左的数字可以标识首次出现该附图标记的附图。在所有附图中,相同或相似的附图标记可以用于指代相同或相似的特征和组件。现在仅通过示例的方式并参考附图来描述本主题的一些示例性实施例,在附图中:
15.图1是示出了根据本公开示例性实施例的感知非易失性存储器快速(nvme)的远程直接存储器访问(rdma)网络中的主机远程网络接口控制器(rnic)和目标rnic中的远程直接存储器访问(rdma)队列的初始化的具有表格的混合示意框图;
16.图2是示出了根据本公开示例性实施例的感知nvme的rdma网络中的主机rnic和目标rnic中的rdma命令执行的混合示意框图;
17.图3是示出了根据本公开示例性实施例的感知nvme的rdma网络中的主机rnic的示例性操作的示意数据图;
18.图4是示出了根据本公开示例性实施例的由感知nvme的rdma网络中的主机rnic发送数据分组的方法的示意流程框图;以及
19.图5是示出了根据本公开示例性实施例的由感知nvme的rdma网络中的目标rnic接收数据分组的方法的示意流程框图。
20.本领域技术人员应认识到的是,本文中所描绘的框图表示具体实施本主题的原理的说明性系统的概念图。类似地,应当认识到,任意流图、流程图、状态转变图、伪码等表示可以在计算机可读介质中实质表示并由计算机或处理器执行的各种处理,而不管是否明确地示出了这种计算机或处理器。
具体实施方式
21.在本公开中,词语“示例性”在本文中用来表示“用作示例、实例或说明”。在本文中被描述为“示例性”的本主题的任何实施例或实现方式不必解释为比任何其他的实施例优选或有利,而是为了便于理解而提供的。无论是否专门使用术语“示例性”,本文中所公开的所有实施例在本质上都是示例性的而非限制性的。
22.虽然本公开的教导可修改为各种修改和替代形式,但是其具体实施例已在附图中通过示例的方式进行示出并在下面详细地进行描述。然而,应理解的是,所描述的实施例不旨在将权利要求限制为所公开的特定形式,相反地,权利要求可以涵盖落入本公开的范围和精神内的所有修改、等同形式和替代形式。
23.远程直接存储器访问(rdma)技术允许连接在网络中的计算机直接访问彼此的存储器,而无需使用诸如处理器、存储器高速缓存或操作系统之类的计算机组件。例如,感知非易失性存储器快速(nvme)的rdma网络技术允许诸如固态驱动器(ssd)的非易失性存储器设备连接到计算机的外围组件互连快速(pcie)槽,并且与连接在网络中的计算机交换数据分组。本公开的实施例涉及由感知nvme的rdma网络中的远程网络接口控制器(rnic)传送数据分组的方法和系统。在此,主机设备使用协议和队列对与目标设备传送数据分组。这些队列对具有相对的优先级和权重。基于队列对的优先级和权重,将数据分组传送到目标设备。主机设备包含被称为主机rnic的rnic,其创建队列对。类似地,目标设备包含被称为目标rnic的rnic,其也创建队列对。主机rnic和目标rnic可以是分别连接到例如包含在主机设备和目标设备中的外围组件互连(pci)槽的硬件组件。主机rnic和目标rnic可以没有限制地以用于数据传送的有线方式连接。即,实施例不限于导线且可以是全部或部分无线。在主机rnic和目标rnic处创建的队列对优选地对准,并且可以根据rdma规范标准进行设置。本公开的实施例不必限于pci或pcie,而是可以可选地应用于相似的接口,诸如但不限于:双端口sata快速(两个或更多个通道)、双端口sas(两个或更多个通道)、多链路sas(四个或更
多个通道)、四端口pcie(四个或更多个通道)等。
24.在传统rdma系统中,例如,在主机rnic与目标rnic之间传输的队列对可以使用用于队列仲裁的rnic的供应商特定的方法。然而,随着在rdma网络上支持nvme的到来,rdma传统特征可能无法理解诸如下项的高级nvme特征,例如,用于队列仲裁的加权轮询(wrr)。因此,例如,主机rnic和目标rnic中的队列对的优先级可能与感知nvme的ssd的队列对未对准。这导致了影响队列对的优先级级别的失配,进而在数据分组的执行顺序上影响数据分组。
25.本公开提供了通过将与感知nvme的ssd的队列仲裁设置相匹配的rdma队列对的队列仲裁设置存储在目标rnic和主机rnic两者的仲裁映射表中来防止上述未对准和/或失配的有效机制。在以下描述中,以下表1阐述要使用的附图标记:
26.表1
27.[0028][0029]
图1示出了根据本公开实施例的感知nvme的rdma网络中的主机rnic和目标rnic中的rdma队列的初始化。参考图1,针对涉及用包含在供应商特定的命令中的信息来填入仲裁映射表的过程说明初始化。
[0030]
如图1中所示,主机101通信地耦合到主机rnic 103,主机rnic 103通信地耦合到目标rnic 105,目标rnic 105又可以通信地耦合到nvme ssd/目标系统107。如本文中所使用的,符号“/”表示“和/或”(即,包括性的“或”)。主机101还可以被称为发起主机、主机发起器或主机设备。主机101是可以发起一般的rdma命令和供应商特定的rdma命令的设备。一般的rdma命令可以包括数据分组;并且供应商特定的rdma命令可以包括rdma队列对的优先级、rdma队列对的权重和队列标识符(qid或qip)。一般的rdma命令和供应商特定的rdma命令可以被统称为工作队列元素(wqe)。数据分组可以具有诸如下项的不同优先级,例如,高优先级、中优先级或低优先级。rnic初始化过程之前,主机101可以使用与nvme队列108相匹配的虚拟通道供应商仲裁格式(vlvaf)来读取或接收感知nvme的ssd 107的供应商特定的队列仲裁设置。例如,主机101可以以供应商特定的实现方法从用户接收供应商特定的队列仲裁设置。
[0031]
在初始化过程中,主机101可以基于感知nvme的ssd的队列仲裁设置向主机rnic 103传输作为第一信号1的供应商特定的rdma命令。更具体地,供应商特定的rdma命令可以包括rdma队列对的优先级、rdma队列对的权重和qid。主机rnic 103包括诸如下项的组件:verb处理部/rdma分组处理部109、固件/控制器111、仲裁映射表113、仲裁器115、虚拟通道117和开放系统互连(osi)模型层119。
[0032]
主机rnic 103可以接收包括从主机101发送的供应商特定的rdma命令的信号1。主机rnic 103的verb处理部/rdma分组处理部109可以从供应商特定的rdma命令中去除协议头和/或协议尾。不含协议头和协议尾的供应商特定的rdma命令可以作为信号2被verb处理部/rdma分组处理部109发送到固件/控制器111。固件/控制器111可以识别包含在供应商特定的rdma命令中的信息,诸如rdma队列对的优先级、rdma队列对的权重和qid,并且可以将这些信息作为信号3发送到仲裁映射表113。如图1中所示,仲裁映射表113可以以表格格式存储/填入rdma队列对的优先级、rdma队列对的权重和qid。在备选实施例中,应理解的是,所使用的数据结构的类型不限于表格。
[0033]
由于包含在供应商特定的rdma命令中的信息也需要发送到目标rnic 105,因此供应商特定的rdma命令可以作为信号4通过固件/控制器111发送到仲裁器115。仲裁器115可以接收供应商特定的rdma命令,并且可以将供应商特定的rdma命令作为信号5发送到虚拟
通道117。虚拟通道117还可以将供应商特定的rdma命令作为信号6发送到osi模型层119。osi模型层119可以包括用户数据报协议(udp/ip/ib)层、介质访问控制(mac)层和物理(phy)层。osi模型层119可以为供应商特定的rdma命令创建其自身的协议头和协议尾以组成网络分组,如图1中所示,该网络分组被发送到目标rnic 105。在此,osi模型层119可以被统称为物理端口。
[0034]
目标rnic 105可以从主机rnic 103接收网络分组。类似于主机rnic 103,目标rnic 105可以包括诸如下项的组件:物理端口或osi模型层121、verb处理部/rdma分组处理部123、固件/控制器125、仲裁映射表127、仲裁器129和虚拟通道131。目标rnic 105的物理端口121可以从主机rnic 103的物理端口119接收网络分组,并且作为信号7发送到目标rnic 105的verb处理部/rdma分组处理部123。处理部123可以从供应商特定的rdma命令中去除协议头和/或协议尾。不含协议头和协议尾的供应商特定的rdma命令可以作为信号8被verb处理部/rdma分组处理部123发送到固件/控制器125。固件/控制器125可以识别包含在供应商特定的rdma命令中的信息,诸如rdma队列对的优先级、rdma队列对的权重和qid,并且可以将这些信息作为信号9发送到仲裁映射表127。如图1中所示,仲裁映射表127可以以表格格式存储/填入rdma队列对的优先级、rdma队列对的权重和qid。从而,存储到目标rnic 105的仲裁映射表127中的信息可以与存储到主机rnic 103的仲裁映射表113中的信息相匹配。例如,主机rnic 103和目标rnic 105都可以具有公用映射表。一旦用包含rdma队列对的优先级、rdma队列对的权重和qid的信息来填入目标rnic的仲裁映射表127;就完成了感知nvme的rdma网络的主机rnic和目标rnic的rdma队列的初始化过程。一旦初始化,rdma命令就可以作为信号10通过固件/控制器125发送到仲裁器129。
[0035]
图2示出了根据本公开示例性实施例的感知nvme的rdma网络中的主机rnic和目标rnic中的rdma命令执行。参考图2,说明了将数据分组通过主机rnic和目标rnic从主机设备转移到目标设备。在此,目标设备是nvme ssd设备,但是本公开不限于此。例如,目标设备可以包括一个或多个硬盘驱动器或其他存储器,诸如但不限于非易失性存储器。
[0036]
如图2中所示,主机101通信地耦合到主机rnic 103,主机rnic 103通信地耦合到目标rnic 105,目标rnic 105又通信地耦合到nvme ssd/目标系统107。除了如图1中所说明的包含在主机rnic 103中的组件之外(可以省略针对它们的重复描述),主机rnic 103还可以包括诸如rdma队列201和主机队列203之类的组件。除了如图1中说明的包含在目标rnic 105中的组件之外(可以省略针对它们的重复描述),目标rnic 105还可以包括诸如rdma队列205和目标队列207之类的组件。
[0037]
主机101可以发起rdma命令,诸如rdma命令中的rdma“发送”命令。rdma命令可以包括数据分组。在命令执行过程中,主机101可以将rdma命令作为信号1传输到主机rnic 103。主机rnic 103的verb处理部/rdma分组处理部109可以接收信号1并从rdma命令中去除协议头和协议尾。不含协议头和协议尾的rdma命令可以作为信号2被verb处理部/rdma分组处理部109发送到固件/控制器111。固件/控制器111可以使用信号3将诸如数据分组的rdma命令保存/存储到rdma队列201中。然后,数据分组在rdma队列201中是可用的。同时,固件/控制器111也可以使用信号3a将rdma命令通知给仲裁器115。仲裁器115可以使用双向信号4来检查仲裁映射表113,仲裁器115可以从仲裁映射表113中得到与要考虑用于rdma队列的优先级和权重有关的信息。基于从仲裁映射表113中获得的优先级和权重,仲裁器115可以使用
双向信号5来从rdma队列201中取得数据分组,并且可以将它们作为信号6发送到主机队列203。在主机队列203中,数据分组以先进先出(fifo)格式进行布置。数据分组可以作为信号7发送到虚拟通道117。虚拟通道117可以使用信号8将数据分组发送到osi模型层119。osi模型层119可以将其自身的协议头和协议尾添加到数据分组以组成网络分组,并且可以通过接口(诸如但不限于,网络接口)将网络分组发送到目标rnic 105。
[0038]
目标rnic 105的osi模型层121可以从主机rnic 103接收网络分组,并且将它们作为信号9发送到verb处理部/rdma分组处理部123。目标rnic 105的处理部123可以从rdma命令中(诸如,从数据分组中)去除协议头和/或协议尾。不含协议头和协议尾的rdma命令可以作为信号10被verb处理部/rdma分组处理部123发送到固件/控制器125。固件/控制器125可以使用信号11将诸如数据分组的rdma命令保存/存储到rdma队列205中。现在,数据分组在rdma队列205中是可用的。同时,固件/控制器125也可以使用信号11a将rdma命令通知给仲裁器129。仲裁器129可以使用双向信号13来检查仲裁映射表127,仲裁器129可以从仲裁映射表127中得到与要考虑用于rdma队列的优先级和权重有关的信息。基于从仲裁映射表127中获得的优先级和权重,仲裁器129可以使用双向信号12来从rdma队列205中取得数据分组,并且可以将它们作为信号14发送到目标队列207。在目标队列207中,数据分组以fifo格式进行布置。数据分组可以作为信号14发送到虚拟通道131。目标rnic 105的虚拟通道131可以将接收到的数据分组作为信号16发送到nvme ssd/目标系统107。这完成了由主机101发起的rdma“发送”命令的执行。
[0039]
图3示出了根据本公开示例性实施例的感知nvme的rdma网络中的主机rnic的操作。参考图3,具有高优先级的主机应用301可以包括应用1、应用2、应用3、应用4和应用5(此后被称为1、2、3、4和5)。具有中优先级的主机应用303可以包括应用6、应用7、应用8、应用9和应用10(此后被称为6、7、8、9和10)。并且具有低优先级的主机应用305可以包括应用11、应用12、应用13、应用14和应用15(此后被称为11、12、13、14和15)。
[0040]
在此,来自应用的输入输出(io)请求可以被称为数据分组或wqe。基于应用的优先级和rdma队列对的对应优先级,将来自应用的这些数据分组提交给主机rdma队列对。例如,将诸如具有高优先级的1、2、3、4和5之类的应用布置在主机rdma队列对中的具有高优先级的qp1 307中;将具有中优先级的应用6、7、8、9和10布置在主机rdma队列对中的具有中优先级的qp2 309中,并且将具有低优先级的应用11、12、13、14和15布置在主机rdma队列对中的具有低优先级的qp3 311中。因此,这些rdma队列对使用与目标nvme队列相同的仲裁设置。
[0041]
在下一步骤中,基于rdma队列对的权重和优先级,将布置在主机rdma队列对中的数据分组存储到主机队列315中。在图3中,qp1 307具有4的权重,qp2 309具有2的权重,并且qp3 311具有1的权重。主机队列315使用fifo队列方案。基于加权轮询(wrr)选择器313和rdma队列对的优先级,使用与目标nvme队列相同的仲裁设置,主机队列315存储1、2、3、4、6、7和11。即,将高优先级的前四个、中优先级的前两个和低优先级的前一个放置在主机队列315中。在此,1、2、3和4来自qp1 307是因为qp1 307具有4的权重。类似地,6和7来自qp2 309是因为qp2 309具有2的权重;以及11来自qp3 311是因为qp3 311具有1的权重。随后,主机队列315以fifo格式将5、8、9、12、10、13、14和15存储到1、2、3、4、6、7和11之后。可以在队列203、207和315之前使用wrr选择器313的加权轮询参数,并且加权轮询参数是根据与目标系统nvme ssd 107相同的队列仲裁设置而得出的。
[0042]
在下一步骤中,基于应用的优先级和对应的主机rnic虚拟通道优先级,将存储到主机队列315中的应用存储到主机虚拟通道中。在此,主机虚拟通道包括具有高优先级的vl1 317和具有低优先级的vl2319。即,当存在比优先级级别更少的虚拟通道时,可以将通道配置为传递多个优先级的数据分组。备选实施例可以在下虚拟通道与上虚拟通道之间分发中优先级的分组。又一实施例可以将下虚拟通道用于中优先级和低优先级的分组,同时将上通道用于高优先级的分组。可以在虚拟通道117、317、319和131之后使用wrr选择器321的加权轮询参数,并且加权轮询参数也是基于与目标系统nvme ssd 107相同的队列仲裁设置而得出的。
[0043]
在示例性实施例中,主机rnic虚拟通道优先级可以使用目标rnic的虚拟通道供应商仲裁格式(vlvaf)基于不同rnic供应商的偏好而改变。在此,以该fifo顺序将具有高优先级和中优先级的应用数据分组(诸如,1、2、3、4、6、7、5、8、9和10)存储到具有较高优先级的vl1 317中,并且将具有低优先级的应用数据分组(诸如,11、12、13、14和15)存储到具有较低优先级的vl2 319中。在下一步骤中,基于主机rnic的vlvaf,将主机虚拟通道中的数据分组发送到物理端口119。在此,主机rnic的vlvaf具有wrr选择器321,使vl1 317具有权重7而vl2 319具有权重3。基于仅使用上通道、下通道和权重的该wrr选择器321,物理端口从vl1接收前七个数据分组并从vl2接收后三个数据分组,形成了1、2、3、4、6、7 5、11、12和13。在此,1、2、3、4、6、7和5来自vl1 317是因为vl1 317具有7的权重。类似地,11、12和13来自vp2 319是因为vp2 319具有3的权重。随后,在接收1、2、3、4、6、7、5、11、12和13之后,物理端口接收8、9、10、14和15。将物理端口119的输出发送到目标rnic 105。
[0044]
主机虚拟通道仲裁格式可以基于不同rnic供应商的偏好而改变。因此,高优先级和中优先级的数据分组共享一个较高优先级的虚拟通道而低优先级的数据分组专门使用另一个较低优先级的虚拟通道的实施例相对于高优先级的五个数据分组具有优选的效果,但是在传递五个低优先级的数据分组中的三个之前仅传递了五个中优先级的数据分组中的两个。然而,该方案导致在传递五个低优先级的分组中的后两个之前,传递所有的五个中优先级的分组。另外,可以基于fifo缓存器315中的数据分组的中优先级级别自适应地调整上通道与下通道之间的阈值优先级。此外,可以在主机rnic 103、目标rnic 105和目标设备107上使用相同方案。
[0045]
图4示出了根据本公开示例性实施例的由感知nvme的rdma网络中的主机rnic发送数据分组的方法的流程图。如图4中所示,方法400包括由感知nvme的rdma网络中的主机rnic发送数据分组的一个或多个步骤或功能。可以在计算机可执行指令的一般上下文中描述方法400。通常,计算机可执行指令可以包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、过程、模块和函数,并且可以至少部分地并行实现。
[0046]
并不旨在将描述方法400的顺序解释为限制,并且可以以任何顺序组合任意数量的所描述方法功能以实现该方法。另外,在不脱离本文中所描述的主题的范围的情况下,可以从备选实施例方法中删除各个功能。此外,该方法可以以任何合适的硬件、软件、固件或其组合实现。
[0047]
在功能框401处,主机rnic 103从发起主机101接收rdma命令。在此,rdma命令包括数据分组。数据分组可以具有诸如下项的优先级,例如,高优先级、中优先级和/或低优先级。
[0048]
在框403处,主机rnic 103基于rdma队列对201的权重和优先级来布置数据分组。在此,rdma队列对的优先级包括高优先级、中优先级和低优先级。
[0049]
在框405处,主机rnic 103基于rdma队列对的权重和优先级将数据分组从主机rdma队列对201存储到主机队列203中。权重可以是由wrr选择器实现的加权轮询格式。此外,主机队列203是主机fifo队列,尽管不限于此。
[0050]
在框407处,主机rnic 103将数据分组通过主机虚拟通道117发送到目标rnic 105。在此,将数据分组通过主机虚拟通道117发送到目标rnic 105包括:将数据分组从主机队列203放置到主机虚拟通道117中。所述放置基于主机rnic供应商的虚拟通道优先级。随后,由主机rnic 103基于主机rnic的vlvaf将数据分组经由物理端口119发送到目标rnic 105。
[0051]
图5示出了根据本公开示例性实施例的由感知nvme的rdma网络中的目标rnic接收数据分组的方法的流程图。如图5中所示,方法500包括由感知nvme的rdma网络中的目标rnic接收数据分组的一个或多个步骤或功能。可以在计算机可执行指令的一般上下文中描述方法500。通常,计算机可执行指令可以包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构、过程、模块和函数,并且可以至少部分地并行实现。
[0052]
并不旨在将描述方法500的顺序解释为限制,并且可以以任何顺序组合任意数量的所描述方法功能以实现该方法。另外,在不脱离本文中所描述的主题的范围的情况下,可以从该方法中删除各个功能。此外,该方法可以以任何合适的硬件、软件、固件或其组合实现。
[0053]
在框501处,目标rnic 105从主机rnic 103接收数据分组。数据分组可以具有优先级,例如,高优先级、中优先级和/或低优先级。
[0054]
在框503处,目标rnic 105基于rdma队列对205的权重和优先级来布置数据分组。在此,rdma队列对的优先级包括高优先级、中优先级和低优先级。
[0055]
在框505处,目标rnic 105基于rdma队列对的权重和优先级将数据分组从目标rdma队列对205存储到目标队列207中。该权重可以以用于wrr选择器的加权轮询格式实现。此外,目标队列207可以是目标fifo队列。
[0056]
在框507处,目标rnic 105将数据分组通过目标虚拟通道131发送到感知nvme的ssd 107。在此,将数据分组通过目标虚拟通道131发送到感知nvme的ssd 107包括:将数据分组从目标队列207存储到目标虚拟通道131中。基于由主机rnic供应商预先确定的目标rnic虚拟通道优先级来进行所述存储。随后,由目标rnic 105基于目标rnic的vlvaf将数据分组发送到感知nvme的ssd 107。
[0057]
图4和图5的所示操作示出了以特定顺序出现的特定事件。在备选实施例中,特定的操作可以以不同顺序执行、修改或去除。此外,可以对上述逻辑增加步骤且仍然符合所描述的实施例。此外,本文中所描述的操作可以顺序地出现,或者特定的操作可以被并行处理。此外,操作可以由单个处理单元或由分布式处理单元执行。
[0058]
本公开提供了通过将与感知nvme的ssd的队列仲裁设置相匹配的队列仲裁设置存储到主机rnic和目标rnic的仲裁映射表中来克服rnic与目标ssd之间的仲裁策略上的失配问题的有效机制。
[0059]
关于在本文中实质上对任何复数和/或单数术语的使用,本领域技术人员可以根
据上下文和/或应用将复数转换为单数和/或将单数转换为复数。为了清楚起见,可以在本文中明确地阐述各种单数/复数置换。
[0060]
所描述的操作可以被实现为使用标准编程和/或工程技术来产生软件、固件、硬件或其任意组合的方法、系统或制造品。所描述的操作可以被实现为保持在“非暂时性计算机可读介质”中的代码,处理器可以从该计算机可读介质中读取并执行该代码。处理器是能够处理和执行查询的微处理器或处理器中的至少一种。非暂时性计算机可读介质可以包括介质,诸如磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光学储存(cd-rom、dvd、光盘等)、易失性和非易失性存储器设备(例如,eeprom、rom、prom、ram、dram、sram、闪存、固件、可编程逻辑等)。此外,非暂时性计算机可读介质包括除暂时性以外的所有计算机可读介质。实现所描述的操作的代码还可以实现在硬件逻辑(例如,集成电路芯片、可编程门阵列(pga)、专用集成电路(asic)等)中。
[0061]
除非另外明确规定,否则术语“示例性实施例”、“实施例”、“一实施例”、“一个实施例”、“所述实施例”、“该实施例”、“一个或多个实施例”、“一些实施例”和“许多实施例”表示“本发明的一个或多个(但不是所有)实施例”。除非另外明确规定,否则术语“包括”、“包含”、“具有”及其变体表示“包括但不限于”。
[0062]
除非另外明确规定,否则项目的枚举罗列不暗指任何或所有的项目相互排斥。除非另外明确规定,否则术语“一”、“一个”和“所述”表示“一个或多个”。
[0063]
对于其中多个组件彼此通信的实施例的描述并不意味需要所有这些组件。相反,描述了多种可选组件以说明本发明的多种可能的实施例。
[0064]
当在本文中描述单个设备或物品时,将显而易见的是,可以使用多个设备/物品(无论它们是否协作)来代替单个设备/物品。类似地,在本文中描述了多个设备或物品的情况下(无论它们是否协作)的情况下,将显而易见的是,可以使用单个设备/物品来代替这多个设备或物品,或者可以使用不同数量的设备/物品来代替所示数量的设备或程序。设备的功能和/或特征可以备选地由一个或多个未被明确描述为具有这种功能/特征的其他设备具体实施。因此,本发明的其他实施例不需要包括设备本身。
[0065]
最后,本说明书中所使用的语言主要是出于可读性和指导性的目的而选择的,而并非选择来界定或限制本发明的主题。因此,本发明的范围不应受该具体实施方式的限制,而是应由基于本技术而发布的任何权利要求限制。因此,本发明的实施例的公开内容旨在说明而非限制在所附权利要求中阐述的本发明的范围。
[0066]
虽然在本文中已公开了示例性方面和实施例,但是本公开的其他方面和实施例对于相关领域的普通技术人员将是显而易见的。本文中所公开的各个方面和实施例出于说明的目的,而不旨在进行限制。本发明的全部范围和精神应由以下权利要求进行限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1