CN117951051A - 聚合小型远程存储器访问请求 - Google Patents
聚合小型远程存储器访问请求 Download PDFInfo
- Publication number
- CN117951051A CN117951051A CN202311298585.5A CN202311298585A CN117951051A CN 117951051 A CN117951051 A CN 117951051A CN 202311298585 A CN202311298585 A CN 202311298585A CN 117951051 A CN117951051 A CN 117951051A
- Authority
- CN
- China
- Prior art keywords
- nic
- requests
- queues
- destination
- packet
- 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
- 230000004931 aggregating effect Effects 0.000 title claims abstract description 18
- 239000000872 buffer Substances 0.000 claims abstract description 39
- 238000001152 differential interference contrast microscopy Methods 0.000 claims description 47
- 238000000034 method Methods 0.000 claims description 37
- 238000004891 communication Methods 0.000 claims description 36
- 230000002776 aggregation Effects 0.000 claims description 24
- 238000004220 aggregation Methods 0.000 claims description 24
- 230000003139 buffering effect Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 12
- 230000002093 peripheral effect Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 description 12
- 238000012163 sequencing technique Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及聚合小型远程存储器访问请求。网络接口卡(NIC)接收命令流,相应的命令包括存储器操作请求,每个请求与目的地NIC相关联。NIC基于目的地NIC将请求异步缓冲到队列中,每个队列特定于对应的目的地NIC。当第一队列请求达到阈值时,NIC将第一队列请求聚合成第一分组并向目的地NIC发送第一分组。NIC接收多个分组,第二分组包括存储器操作请求,每个请求与相同的目的地NIC和目的地核心相关联。NIC基于目的地核心将第二分组的请求异步缓冲到队列中,每个队列特定于对应的目的地核心。当第二队列请求达到阈值时,NIC将第二队列请求聚合成第三分组并向目的地核心发送第三分组。
Description
技术领域
当前的超级计算机执行可能需要大量的小型远程存储器操作,其中每个操作可能携带一定的网络分组开销。随着链路带宽的增加,维持如此小的分组的线路速率可能变得更加困难和昂贵。基于商品技术的系统可能效果不佳,而基于专有技术的系统可能过于昂贵。
附图说明
图1示出了根据本申请的方面的促进聚合远程存储器操作请求的架构的图解。
图2示出了根据本申请的方面的包括报头和多个存储器操作请求的NIC命令的示例性格式。
图3示出了根据本申请的方面的源NIC的图解,包括基于目的地NIC的存储器操作请求的第一排序或异步缓冲。
图4示出了根据本申请的方面的目的地NIC的图解,包括基于目的地核心的存储器操作请求的第二排序或异步缓冲。
图5A呈现了示出根据本申请的方面的促进聚合远程存储器操作请求的方法的流程图,包括由单个NIC进行的发送操作。
图5B呈现了示出根据本申请的方面的促进聚合远程存储器操作请求的方法的流程图,包括由图5A的单个NIC进行的接收操作。
图6A呈现了示出根据本申请的方面的促进聚合远程存储器操作请求的方法的流程图,包括由源NIC进行的发送操作。
图6B呈现了示出根据本申请的方面的促进聚合远程存储器操作请求的方法的流程图,包括由目的地NIC进行的接收操作。
图7示出了根据本申请的方面的促进聚合远程存储器操作请求的装置。
在附图中,相似的附图标记指代相同的附图元素。
具体实施方式
以下描述被呈现以使本领域的任何技术人员能够做出和使用这些方面和示例,并且在特定应用及其要求的上下文中被提供。对所公开的方面的各种修改对于本领域技术人员来说将是明显的,并且本文中定义的一般原理可以被应用于其他方面和应用而不脱离本公开的精神和范围。因此,本文描述的方面不限于所示的方面,而是符合与本文公开的原理和特征一致的最宽范围。
当前的超级计算机执行可能需要大量的小型远程存储器操作,其中每个操作可能携带一定的网络分组开销。随着链路带宽的增加,维持如此小的分组的线路速率可能变得更加困难和昂贵。基于商品技术的系统可能效果不佳,而基于专有技术的系统可能过于昂贵。此外,为小型远程存储器操作提供高效执行的当前解决方案可能涉及通过软件的请求的聚合。然而,通过软件的请求的聚合可能会消耗大量存储器和中央处理单元(CPU)时间,这可能引起那些资源的低效使用。
本申请所描述的方面通过提供一种系统来解决这些挑战,该系统将许多小型远程存储器操作请求聚合成较大的消息(例如,NIC命令),其中NIC(或NIC专用集成电路(ASIC))可以缓冲请求并异步处理它们,以便高效地批量服务请求。请求可以从主机流式传输到源NIC,而不是个体地从主机向源NIC发送请求。源NIC可以通过将每个请求放入与请求中指示的目的地NIC对应的源侧队列中来执行第一排序或第一异步缓冲(即,“缓冲异步”或“BA”)。当给定的源侧队列已满时,源NIC可以将满队列中的数据作为分组发送给目的地NIC。目的地NIC可以接收该分组,并通过将每个请求放入与请求中指示的目的地核心对应的目的地侧队列中来执行第二排序或第二异步缓冲。当给定的目的地侧队列已满时,目的地NIC可以将满队列中的数据作为分组发送(即流式传输)给目的地核心。
因此,所描述的方面可以将对请求进行排序的过程与由请求所携带的有效负载数据分开,这可以引起释放软件以基于给定应用的要求来提供必要的资源。具有源NIC和目的地NIC的示例性高水平架构在下面结合图1被描述,同时源(发送)NIC和目的地(接收)NIC的详细图解在下面分别结合图3和图4被描述。
术语“异步缓冲”、“缓冲异步”和“BA”在本公开中可以互换使用,并且指的是本文描述的操作,其中请求基于目的地信息(例如:请求基于第一排序中的目的地NIC)被排序或缓冲到队列中,如分别在图1和图3的请求排序单元124和排序引擎330中的;或者基于第二排序中的目的地核心,如分别在图1和图4的请求排序单元152和排序引擎440中的。这些请求后续被聚合,例如:当基于目的地NIC时,由图1的数据发送单元134以及图3的请求聚合单元350和分组发送单元352;并且当基于目的地核心时,由图1的数据流式传输单元142和图4的请求聚合单元424和分组发送单元422。
术语“端点”和“核心”在本公开中可以互换使用,并且指的是与给定NIC相关联的主机的多个端点或核心中的一个端点或核心。
术语“存储器操作请求”、“远程存储器访问请求”和“远程存储器操作”在本公开中可以互换使用,并且指的是对主机的存储器进行访问或执行操作的请求。在本公开中,这些类型的请求通常大小较小。例如,10-15个这些请求中的可能适合放进256个字节的单个NIC命令。具有多个存储器操作请求的示例性NIC命令在下面结合图2被描述。
示例性高级架构
图1示出了根据本申请的方面的促进聚合远程存储器操作请求的架构的图解100。图解100可以包括;具有核心110(包括例如核心112、114和116)的主机;NIC 120;具有核心160(包括例如核心162、164和166)的主机;和NIC 140。在示例性数据路径中,NIC 120(例如源NIC)可以通过网络102(例如高带宽网络)向NIC 140(例如目的地NIC)发送数据。NIC 120可以包括:数据接收单元122;请求排序单元124;第一多个队列126、128、130和132;以及数据发送单元134。NIC 140可以包括:数据接收单元154;请求排序单元152;第二多个队列144、146、148和150;以及数据流式传输单元142。
源NIC 120中的第一多个队列中的队列126-132各自可以特定于目的地NIC。在一些方面,第一多个队列中的队列的数目可以是4096,例如,NIC 120可以与多达4096个其他NIC通信。目的地NIC 140中的第二多个队列中的队列144-150可以各自特定于目的地核心或端点。在一些方面,第二多个队列中的队列的数目可以是256,例如NIC 140可以与具有256个核心或端点的主机相关联。源NIC 120的第一多个队列中和目的地NIC 140的第二多个队列中的队列的数目可以大于或小于这些示例性值,并且可以基于各种因素,例如特定应用或客户需求、处理器架构或设计的未来变化、以及带宽的变化。
此外,基于当前的系统设计,针对第一多个队列和第二多个队列中的每个队列的示例性大小可以是256个字节(与对应于核心的目的地NIC 140的实际队列的数目无关)。与第一和第二多个队列两者的队列的数目一样,每个队列的大小(即,队列的深度)可以大于或小于该示例性值,并且也基于各种因素,如上所述。
在操作期间,NIC 120可以通过数据接收单元122从核心110中的一个核心接收数据(经由例如通信168、169和170)。核心可以将数据作为NIC命令流式传输给数据接收单元122,而不是核心发送数据并且NIC接收数据作为许多个体的小消息或请求。这些流式传输的NIC命令可以指示有效负载要异步地被缓冲和被后续处理(使用此处描述的缓冲异步或BA方法)。相应的NIC命令还可以包括多个小型远程存储器操作请求,每个都具有报头和有效负载。每个请求可以指示目的地NIC和目的地端点或核心。示例性NIC命令在下面参考图2被描述。数据接收单元122可以向请求排序单元124传输所接收的NIC命令(经由通信172)。请求排序单元124可以通过基于与每个请求相关联或在每个请求中指示的目的地NIC(经由通信174)将请求异步缓冲到第一多个队列(例如,126-132)中来处理NIC命令中的多个请求。当被存储在给定队列中的请求的总大小达到预定阈值(例如,256个字节)时,那些请求可以被聚合成第一分组(经由通信176),并且数据发送单元134可以向所指示的目的地NIC发送第一分组(经由通过网络102的通信180)。
NIC 140可以通过数据接收单元154接收多个分组,包括第一分组,该第一分组包括先前被聚合并被存储在NIC 120的给定队列中的请求。回想一下,每个请求可以指示目的地NIC和目的地端点或核心。继续由数据接收单元154接收的第一分组的示例,该第一分组中的每个请求可以指示相同的目的地NIC以及与NIC 140相关联的目的地端点或核心。数据接收单元154可以向请求排序单元152传输所接收的分组(经由通信184)。请求排序单元152可以通过基于与每个请求相关联或在每个请求中指示的目的地端点或核心(经由通信186)将请求异步缓冲到第二多个队列(例如,144-150)中来处理第一分组中的多个请求。当被存储在给定队列中的请求的总大小达到预定阈值(例如,256个字节)时,这些请求可以被聚合成分组(经由通信188)并且数据流式传输单元142可以向所指示的目的地核心发送分组(经由例如通信190、191和192)。数据流式传输单元142因此可以流式传输目的地为每个特定核心的分组,其中每个分组是队列的大小(例如,256个字节)并且包含许多较小的远程存储器操作请求。
因此,图100示出了所描述的方面如何能够通过在源侧使用第一排序(基于目的地NIC)并进一步在目的地侧使用第二排序(基于目的地核心)将请求聚合到队列中来减少与通过高带宽网络传输大量存储器操作请求相关联的开销。
用于缓冲异步的NIC命令的示例性格式
图2示出了根据本申请的方面的包括报头和多个存储器操作请求的NIC命令200的示例性格式。NIC命令200可以由四字节的段(例如,字节0-3 210段、字节4-7 212段、字节8-11 214段和字节12-15 216段)来指示。NIC命令200可以包括BA命令报头218(由垂直交叉影线填充模式指示)作为其前16个字节,其可以指示其有效负载的长度并且该有效负载包括要异步地被缓冲和被聚合的存储器操作请求。例如,命令200的随后有效负载的长度可以是108个字节。
NIC命令200的有效负载中的存储器操作请求可以各自包括4字节的报头(由右倾斜填充模式指示)和对应的有效负载。4字节报头至少可以指示以下:针对请求的目的地NIC;针对请求的目的地核心;以及有效负载的大小或长度。例如,请求0报头220可以指示目的地NIC、目的地核心和8的有效负载长度,而请求0有效负载(字节0-7)222可以跟随。后续请求可以包括类似的格式:请求1报头224可以指示其目的地NIC、其目的地核心以及12个字节的有效负载长度,后跟请求1有效负载(字节0-11)226;请求2报头228可以指示其目的地NIC、其目的地核心以及56个字节的有效负载长度,后跟请求2有效负载(字节0-15)230、请求2有效负载(字节16-31)232、请求2有效负载(字节32-47)234,以及请求2有效负载(字节48-55)236;并且请求3报头238可以指示其目的地NIC、其目的地核心以及16个字节的有效负载长度,后跟请求3有效负载(字节0-3)240和请求3有效负载(字节4-15)242。
虽然NIC命令200仅描绘了16个字节的BA命令报头218和108个字节的后续有效负载(针对请求0、1、2和3),总共124个字节,但是NIC命令200可以包括多达任何预定值的数据,例如256个字节。存储器操作请求不能跨NIC命令边界被拆分(即不能跨越NIC命令边界)。
源/发送NIC的详细描述
图3示出了根据本申请的方面的源NIC 320的图300,包括基于目的地NIC的存储器操作请求的第一排序或异步缓冲。NIC 320可以从核心310(例如,经由通信360从核心312、314、316和318中的一个核心)接收数据。NIC 320可以包括:数据接收单元322;引擎选择单元324;多个排序引擎330(例如,八个引擎331、332、333、334、335、336、337和338);多个每目的地NIC队列340(例如,队列341、342、343、344、345、346和347);请求聚合单元350;以及分组发送单元352。
如上面关于图1所描述的,核心可以将数据作为NIC命令流式传输给数据接收单元322。这些流式传输的NIC命令可以指示有效负载要异步地被缓冲和后续被处理(使用此处描述的缓冲器异步或BA方法)。每个NIC命令还可以包括多个小型远程存储器操作请求,每个都具有报头和有效负载,如上面结合图2所描述的。每个请求(在其报头中)可以指示目的地NIC和目的地端点或者核心。
数据接收单元322可以向引擎选择单元324传输所接收的NIC命令(经由通信362)。引擎选择单元324可以基于负载平衡策略来选择第一多个引擎中的第一引擎(即,排序引擎330)并且向所选择的引擎传输给定的NIC命令(经由通信364)。排序引擎中的每个排序引擎可以在每时钟周期处理一定量的数据,例如每时钟周期16个字节。结果,给定多个(例如,8个)排序引擎,排序引擎330可以在每时钟周期缓冲和处理大约16*8=128个总字节。单个NIC命令将完全由所选引擎处理。也就是说,NIC命令将不会被进一步分割成更小的片段以供处理。每个排序引擎可以处理给定NIC命令中的请求(例如,以每时钟周期16个字节的速率)并将请求放入(队列340的)适当的每目的地NIC队列中。
例如,引擎选择单元324可以确定向排序引擎334发送给定NIC命令(经由通信366)。排序引擎334可以通过将每个存储器操作请求缓冲到正确的每目的地NIC队列中(例如,经由通信368和370缓冲到队列341-347中)来处理给定NIC命令的256个字节。
当被存储在队列340中的给定队列的请求的总大小达到预定阈值(例如,256个字节)时,那些请求可以由请求聚合单元350聚合成第一分组(经由通信378)。请求聚合单元350可以向分组发送单元352发送第一分组(经由通信380),并且分组发送单元352可以向所指示的目的地NIC发送第一分组(经由通过网络(未示出)的通信382)。
目的地/接收NIC的详细描述
图4示出了根据本申请的方面的目的地NIC 420的图400,包括基于目的地核心的存储器操作请求的第二排序或异步缓冲。NIC 420可以包括:数据接收单元452;引擎选择单元450;多个排序引擎440(例如,八个引擎441、442、443、444、445、446、447和448);多个每目的地核心队列430(例如,队列431、432、433、434、4345、436和437);请求聚合单元424;以及分组发送单元422。NIC 420可以向核心/端点410流式传输数据分组(例如,经由通信476,核心412、414、416和418中的一个核心)。
NIC 420可以从源NIC接收数据(经由网络(未示出)上的通信460)。数据可以包括分组,该分组包括多个小型远程存储器操作请求,每个小型远程存储器操作请求都具有报头和有效负载,如上面结合图2所描述的。每个请求(在其报头中)可以指示目的地NIC和目的地端点或核心。由目的地NIC 420接收的分组可以指示相同的目的地NIC(即,NIC 420)和目的地核心(即,核心410中的一个核心)。数据接收单元452可以向引擎选择单元450传输所接收的分组(经由通信462)。引擎选择单元450可以基于负载平衡策略选择第二多个引擎(即,排序引擎440)中的第二引擎,并且向所选择的引擎传输给定分组(经由通信464)。与图3所示的源NIC 320中的排序引擎330类似,排序引擎440中的每个排序引擎可以每时钟周期处理一定量的数据,例如每时钟周期16个字节。结果,给定多个(例如,8个)排序引擎,排序引擎330可以在每时钟周期缓冲和处理大约16*8=128个总字节。单个分组将完全由所选引擎处理。也就是说,分组将不会被进一步分割成更小的片段以供处理。每个排序引擎可以处理给定分组中的请求(例如,以每时钟周期16个字节的速率)并将请求放入(队列430中的)适当的每目的地核心队列中。
例如,引擎选择单元450可以确定向排序引擎445发送给定分组(经由通信466)。排序引擎445可以通过将每个存储器操作请求缓冲到正确的每目的地核心队列中(例如,经由通信468和470缓冲到队列431-437中)来处理(最高可达)256个字节的给定分组。
当被存储在队列430的给定队列中的请求的总大小达到预定阈值(例如,256个字节)时,那些请求可以由请求聚合单元424聚合成第二分组(经由通信472)。请求聚合单元424可以向分组发送单元422发送第二分组(经由通信474),并且分组发送单元422可以向所指示的目的地核心发送第二分组(经由通信476)。分组发送单元422可以是数据流式传输单元,即,流式传输目的地为目的地NIC 420的各个核心的多个分组。
用于促进远程存储器操作请求的聚合的方法
所描述的方面可以包括执行源(发送)操作和目的地(接收)操作两者的单个NIC,如下面关于图5A和5B所描绘的。图5A呈现了示出根据本申请的方面的促进聚合远程存储器操作请求的方法的流程图500,包括由单个NIC进行的发送操作。在操作期间,系统通过本地网络接口卡(NIC)接收命令流,其中相应的命令包括第一多个存储器操作请求,其中每个请求与远程目的地NIC和远程目的地核心相关联(操作502)。命令流通过本地NIC作为流而不是作为个体存储器操作请求来接收。本地NIC可以通过例如外围组件互连快速(PCIe)连接、计算快速链路(CXL)或其他主机接口或片上网络获取存储器操作请求的连续数组中的数据,包括有效负载和对应的目的地信息(目的地NIC和目的地核心)。系统基于与每个请求相关联的目的地NIC将请求异步缓冲到第一多个队列中,其中每个队列特定于对应的远程目的地NIC(操作504)。如果被存储在第一队列中的请求的总大小没有达到预定阈值(决策506),则系统可以在操作502或504处继续。
如果被存储在第一队列中的请求的总大小确实达到预定阈值(决策506),则系统将被存储在第一队列中的请求聚合成第一分组(操作508)并通过高带宽网络向远程目的地NIC发送第一分组,从而减少与通过高带宽网络传输大量存储器操作请求相关联的开销(操作510)。操作在图5B的标记A处继续。
图5B呈现了示出根据本申请的方面的促进聚合远程存储器操作请求的方法的流程图520,包括由图5A的单个NIC进行的接收操作。系统通过本地NIC接收多个分组,其中第二分组包括第二多个存储器操作请求,其中每个请求以本地NIC为目的地并且与本地目的地核心相关联(操作522)。系统基于与每个请求相关联的目的地核心将第二分组的请求异步缓冲到第二多个队列中,其中每个队列特定于对应的本地目的地核心(操作524)。如果被存储在第二多个队列中的第二队列中的请求的总大小没有达到预定阈值(决策526),则系统可以在操作522或524处继续。
如果被存储在第二多个队列中的第二队列中的请求的总大小确实达到预定阈值(决策526),则系统将被存储在第二队列中的请求聚合成第三分组(操作528)并且向本地目的地核心发送第三分组,从而进一步减少与通过高带宽网络传输大量存储器操作请求相关联的开销(操作530)。系统通过本地NIC可以确定被存储在第二多个队列中的一个或多个队列中的经聚合的请求的总大小达到预定阈值,并且可以进一步向特定于相应队列的对应本地目的地核心流式传输那些经聚合的请求(未示出)。操作返回。
所描述的方面还可以包括一种系统,该系统包括两个NIC:第一NIC(例如,源NIC或发送NIC);以及第二NIC(例如,目的地NIC或接收NIC),如下面关于图6A和6B所描述的。图6A呈现了示出根据本申请的方面的促进聚合远程存储器操作请求的方法的流程图600,包括由源NIC进行的发送操作。在操作期间,系统通过源网络接口卡(NIC)接收命令流,其中相应的命令包括第一多个存储器操作请求,其中每个请求与目的地NIC和目的地核心相关联(操作602)。系统基于与每个请求相关联的目的地NIC将请求异步缓冲到第一多个队列中,其中每个队列特定于对应的目的地NIC(操作604)。如果被存储在第一队列中的请求的总大小没有达到预定阈值(决策606),则系统可以在操作602或604处继续。
如果被存储在第一队列中的请求的总大小确实达到预定阈值(决策606),则系统将被存储在第一队列中的请求聚合成第一分组(操作608)并通过高带宽网络向目的地NIC发送第一分组,从而减少与通过高带宽网络传输大量存储器操作请求相关联的开销(操作610)。操作在图6B的标记B处继续。
图6B呈现了示出根据本申请的方面的促进聚合远程存储器操作请求的方法的流程图620,包括由目的地NIC进行的接收操作。该系统通过目的地NIC接收多个分组,包括第一分组,该第一分组包括先前被聚合并被存储在第一多个队列中的第一队列中的请求,其中每个请求与相同的目的地NIC和目的地核心相关联(操作622)。该系统通过目的地NIC基于与每个请求相关联的目的地核心将第一分组的请求异步缓冲到第二多个队列中,其中每个队列特定于对应的目的地核心(操作624)。如果被存储在第二多个队列中的第二队列中的请求的总大小没有达到预定阈值(决策626),则系统可以在操作622或624处继续。
如果被存储在第二多个队列中的第二队列中的请求的总大小未达到预定阈值(决策626),则系统通过目的地NIC将被存储在第二队列中的请求聚合成第二分组(操作628)并向目的地核心发送第二分组,从而减少与通过高带宽网络传输大量存储器操作请求相关联的开销(操作630)。操作返回。
促进聚合远程存储器操作请求的装置
图7示出了根据本申请的方面的促进聚合远程存储器操作请求的装置700。装置700可以表示网络接口卡(NIC)(诸如关于图5A和图5B的流程图500和520描述的单个NIC)并且可以包括发送单元710和接收单元720。发送单元710可以包括:第一命令单元712(其可以执行与上面分别关于图1和图3的数据接收单元122和322描述的操作类似的操作);第一排序单元714(其可以执行与上面分别关于图1和图3的请求排序单元124和排序引擎330描述的操作类似的操作);第一队列管理单元716(其可以管理和缓冲图1的队列126-132中和图3的每目的地NIC队列340中的数据);以及第一聚合通信单元718(其可以执行与上面针对图1的数据发送单元134以及图3的请求聚合单元350和分组发送单元352描述的操作类似的操作)。
接收单元720可以包括:第二命令单元722(其可以执行与上面分别关于图1和图4的数据接收单元154和452描述的操作类似的操作);第二排序单元724(其可以执行与上面分别关于图1和图4的请求排序单元152和排序引擎440描述的操作类似的操作);第二队列管理单元726(其可以管理和缓冲图1的队列144-150中和图4的每目的地核心队列430中的数据);以及第二聚合通信单元728(其可以执行与上面针对图1的数据流单元142以及图4的请求聚合单元424和分组发送单元422描述的操作类似的操作)。
一般而言,所公开的方面提供了有利的系统、方法和装置。在一个方面,该系统通过本地网络接口卡(NIC)接收命令流,其中相应的命令包括第一多个存储器操作请求,其中每个请求与远程目的地NIC和远程目的地核心相关联。该系统基于与每个请求相关联的目的地NIC将请求异步缓冲到第一多个队列中,其中每个队列特定于对应的远程目的地NIC。响应于确定被存储在第一队列中的请求的总大小达到预定阈值,系统将被存储在第一队列中的请求聚合成第一分组,并且通过高带宽网络向远程目的地NIC发送第一分组。该系统通过本地NIC接收多个分组,其中所接收的分组中的第二分组包括第二多个存储器操作请求,其中每个请求以本地NIC为目的地并且与本地目的地核心相关联。系统基于与每个请求相关联的本地目的地核心,将第二分组的请求异步缓冲到第二多个队列中,其中每个队列特定于对应的本地目的地核心。响应于确定被存储在第二多个队列中的第二队列中的请求的总大小达到预定阈值,系统将被存储在第二队列中的请求聚合成第三分组并向本地目的地核心发送第三分组。
在关于这方面的变体中,本地NIC的第一多个引擎将请求异步缓冲到第一多个队列中,并且系统基于负载平衡策略选择第一多个引擎中的第一引擎来异步缓冲来自每个命令的请求。
在关于这方面的另外的变体中,本地NIC的第二多个引擎将请求异步缓冲到第二多个队列中,并且系统基于负载平衡策略选择第二多个引擎的第二引擎来异步缓冲来自每个分组的请求。
在另外的变体中,命令流通过本地NIC作为命令流而不是作为个体存储器操作请求来接收。
在另外的变体中,本地NIC通过获取存储器操作请求的连续数组中的数据来接收命令流,该存储器操作请求包括通过外围组件互连快速(PCIe)连接的有效负载和对应的目的地信息。
在另外的变体中,系统确定被存储在第二多个队列中的一个或多个队列中的经聚合的请求的总大小达到预定阈值。系统通过本地NIC向特定于相应队列的相应的对应目的地核心流式传输被存储在第二多个队列中的一个或多个队列中的经聚合的请求。
在另外的变体中,相应的远程目的地核心对应于与远程目的地NIC相关联的多个目的地端点中的目的地端点。
在另外的变体中,相应的存储器操作请求与大小小于预定大小的有效负载相关联。
在另外的变体中,通过本地NIC接收的每个命令的大小最高可达256个字节。
在另外的变体中,第一多个队列包括4096个队列,并且第二多个队列包括256个队列。
在另外的变体中,相应的命令在报头中指示存储器操作请求要异步地被缓冲和被聚合。
在另一方面,一种装置或NIC包括:第一命令模块,用以接收命令流,其中相应的命令包括第一多个存储器操作请求,其中每个请求与远程目的地NIC和远程目的地核心相关联;第一排序模块,用以基于与每个请求相关联的目的地NIC,将请求异步缓冲到第一多个队列中,其中每个队列特定于对应的远程目的地NIC;第一聚合通信模块,用以响应于确定被存储在第一队列中的请求的总大小达到预定阈值,将被存储在第一队列中的请求聚合成第一分组并通过高带宽网络向远程目的地NIC发送第一分组;第二命令模块,用以接收多个分组,其中所接收的分组中的第二分组包括第二多个存储器操作请求,其中每个请求以本地NIC为目的地并且与本地目的地核心相关联;第二排序模块,用以基于与每个请求相关联的本地目的地核心来将第二分组的请求异步缓冲到第二多个队列中,其中每个队列特定于对应的本地目的地核心;以及第二聚合通信模块,用以响应于确定被存储在第二多个队列中的第二队列中的请求的总大小达到预定阈值,将被存储在第二队列中的请求聚合成第三分组并向本地目的地核心发送第三分组。
在又一方面,一种系统包括本地NIC(例如,源NIC)和远程NIC(例如,目的地NIC)。本地NIC包括:第一命令模块,用以接收命令流,其中相应的命令包括第一多个存储器操作请求,其中每个请求与远程目的地NIC和远程目的地核心相关联;第一排序模块,用以基于与每个请求相关联的目的地NIC来将请求异步缓冲到第一多个队列中,其中每个队列特定于对应的远程目的地NIC;以及第一聚合通信模块,用以响应于被确定存储在第一队列中的请求的总大小达到预定阈值,将被存储在第一队列中的请求聚合成第一分组并通过高带宽网络向远程目的地NIC发送第一分组。远程NIC包括:第二命令模块,用以接收包括先前被聚合并被存储在第一队列中的请求的第一分组,其中每个请求以与该远程NIC为目的地并且与远程目的地核心相关联;第二排序模块,用以基于与每个请求相关联的远程目的地核心,将第一分组的请求异步缓冲到第二多个队列中,其中每个队列特定于对应的远程目的地核心;以及第二聚合通信模块,用以响应于确定被存储在第二多个队列中的第二队列中的请求的总大小达到预定阈值,将被存储在第二队列中的请求聚合成第三分组并向远程目的地核心发送第三分组。
前述各方面的描述仅出于说明和描述的目的而已经被呈现。它们并不旨在是穷举的或将本文描述的方面限制为所公开的形式。因此,许多修改和变化对于本领域技术人员来说将是名的。另外,以上公开并不旨在限制本文所描述的方面。本文描述的各方面的范围由所附权利要求限定。
Claims (20)
1.一种计算机实现的方法,包括:
通过本地网络接口卡NIC接收命令流,其中相应的命令包括第一多个存储器操作请求,其中每个请求与远程目的地NIC和远程目的地核心相关联;
基于与每个请求相关联的所述目的地NIC,将所述请求异步缓冲到第一多个队列中,其中每个队列特定于对应的远程目的地NIC;
响应于确定被存储在第一队列中的所述请求的总大小达到预定阈值,将被存储在所述第一队列中的所述请求聚合成第一分组并通过高带宽网络向所述远程目的地NIC发送所述第一分组;
通过所述本地NIC接收多个分组,其中所接收的所述分组中的第二分组包括第二多个存储器操作请求,其中每个请求以所述本地NIC为目的地并且与本地目的地核心相关联;
基于与每个请求相关联的所述本地目的地核心,将所述第二分组的所述请求异步缓冲到第二多个队列中,其中每个队列特定于对应的本地目的地核心;以及
响应于确定被存储在所述第二多个队列中的第二队列中的所述请求的总大小达到所述预定阈值,将被存储在所述第二队列中的所述请求聚合成第三分组并向所述本地目的地核心发送所述第三分组。
2.根据权利要求1所述的方法,
其中所述本地NIC的第一多个引擎将所述请求异步缓冲到所述第一多个队列中,并且
其中所述方法还包括基于负载平衡策略选择所述第一多个引擎中的第一引擎来异步缓冲来自每个命令的所述请求。
3.根据权利要求1所述的方法,
其中所述本地NIC的第二多个引擎将所述请求异步缓冲到所述第二多个队列中,并且
其中所述方法还包括基于负载平衡策略选择所述第二多个引擎中的第二引擎来异步缓冲来自每个分组的所述请求。
4.根据权利要求1所述的方法,
其中所述命令流通过所述本地NIC作为命令流而不是作为个体存储器操作请求被接收。
5.根据权利要求1所述的方法,还包括:
其中所述本地NIC通过经由外围组件互连快速PCIe连接获取存储器操作请求的连续数组中的数据来接收所述命令流,所述存储器操作请求包括有效负载和对应的目的地信息。
6.根据权利要求1所述的方法,还包括:
确定被存储在所述第二多个队列中的一个或多个队列中的聚合的请求的总大小达到所述预定阈值;以及
通过所述本地NIC向特定于相应队列的相应的对应目的地核心流式传输被存储在所述第二多个队列中的所述一个或多个队列中的所述聚合的请求。
7.根据权利要求1所述的方法,
其中相应的远程目的地核心对应于与所述远程目的地NIC相关联的多个目的地端点中的目的地端点。
8.根据权利要求1所述的方法,
其中相应存储器操作请求与大小小于预定大小的有效负载相关联。
9.根据权利要求1所述的方法,
其中通过所述本地NIC所接收的每个命令的大小最高可达256个字节。
10.根据权利要求1所述的方法,
其中所述第一多个队列包括4096个队列,并且
其中所述第二多个队列包括256个队列。
11.根据权利要求1所述的方法,
其中所述相应的命令在报头中指示所述存储器操作请求要异步地被缓冲和被聚合。
12.一种网络接口卡NIC,包括:
第一命令模块,用以接收命令流,其中相应的命令包括第一多个存储器操作请求,其中每个请求与远程目的地NIC和远程目的地核心相关联;
第一排序模块,用以基于与每个请求相关联的所述远程目的地NIC,将所述请求异步缓冲到第一多个队列中,其中每个队列特定于对应的远程目的地NIC;
第一聚合通信模块,用以响应于确定被存储在所述第一多个队列中的第一队列中的所述请求的总大小达到预定阈值,将被存储在所述第一队列中的所述请求聚合成第一分组并通过高带宽网络向所述远程目的地NIC发送所述第一分组;
第二命令模块,用以接收多个分组,其中所接收的所述分组中的第二分组包括第二多个存储器操作请求,其中每个请求以所述NIC为目的地并且与本地目的地核心相关联;
第二排序模块,用以基于与每个请求相关联的所述本地目的地核心,将所述第二分组的所述请求异步缓冲到第二多个队列中,其中每个队列特定于对应的本地目的地核心;以及
第二聚合通信模块,用以响应于确定被存储在所述第二多个队列中的第二队列中的所述请求的总大小达到所述预定阈值,将被存储在所述第二队列中的所述请求聚合成第三分组并向所述本地目的地核心发送所述第三分组。
13.根据权利要求12所述的NIC,还包括:
第一队列管理模块,用以管理由所述第一排序模块缓冲的请求并将其存储到所述第一多个队列中;以及
第二队列管理模块,用以管理由所述第二排序模块缓冲的请求并将其存储到所述第二多个队列中。
14.根据权利要求12所述的NIC,
其中所述第一排序模块包括第一多个引擎,所述第一多个引擎将所述请求异步缓冲到所述第一多个队列中,并且
其中所述NIC还包括第一引擎选择模块,用以基于负载平衡策略选择所述第一多个引擎中的第一引擎来异步缓冲来自每个命令的所述请求。
15.根据权利要求12所述的NIC,
其中所述第二排序模块包括第二多个引擎,所述第二多个引擎将所述请求异步缓冲到所述第二多个队列中,并且
其中所述NIC还包括第二引擎选择模块,用以基于负载平衡策略选择所述第二多个引擎中的第二引擎来异步缓冲来自每个分组的所述请求。
16.根据权利要求12所述的NIC,
其中所述第一命令模块还用以通过经由外围组件互连快速PCIe连接获取存储器操作请求的连续阵列中的数据来接收所述命令流,所述存储器操作请求包括有效负载和对应的目的地信息。
17.根据权利要求12所述的NIC,
其中所述第二多个队列中的相应队列对应于与所述第一NIC相关联的多个本地目的地核心或目的地端点中的一个本地目的地核心或目的地端点。
18.根据权利要求12所述的NIC,
其中相应的存储器操作请求与大小小于预定大小的有效负载相关联,
其中由所述第一命令模块接收的每个命令和由所述第二命令模块接收的每个分组的大小最高可达256个字节,
其中所述第一多个队列包括4096个队列,并且
其中所述第二多个队列包括256个队列。
19.一种系统,包括:
本地网络接口卡NIC,包括:
第一命令模块,用以接收命令流,其中相应的命令包括第一多个存储器操作请求,其中每个请求与远程目的地NIC和远程目的地核心相关联;
第一排序模块,用以基于与每个请求相关联的所述目的地NIC将所述请求异步缓冲到第一多个队列中,其中每个队列特定于对应的远程目的地NIC;以及
第一聚合通信模块,用以响应于确定被存储在所述第一多个队列中的第一队列中的所述请求的总大小达到预定阈值,将被存储在所述第一队列中的所述请求聚合成第一分组并通过高带宽网络向所述远程目的地NIC发送所述第一分组;以及
远程NIC,包括:
第二命令模块,用以接收所述第一分组,所述第一分组包括先前被聚合并被存储在所述第一队列中的所述请求,其中每个请求以所述远程NIC为目的地并且与远程目的地核心相关联;
第二排序模块,用以基于与每个请求相关联的所述远程目的地核心将所述第一分组的所述请求异步缓冲到第二多个队列中,其中每个队列特定于对应的远程目的地核心;以及
第二聚合通信模块,用以响应于确定被存储在所述第二多个队列中的第二队列中的所述请求的总大小达到所述预定阈值,将被存储在所述第二队列中的所述请求聚合成第二分组并向所述远程目的地核心发送所述第二分组。
20.根据权利要求19所述的系统,
其中所述本地NIC还包括第一队列管理模块,所述第一队列管理模块用以管理由所述第一排序模块缓冲的请求并将其存储到所述第一多个队列中,
其中所述远程NIC还包括第二队列管理模块,所述第二队列管理模块用以管理由所述第二排序模块缓冲的请求并将其存储到所述第二多个队列中,
其中所述本地NIC的所述第一排序模块包括第一多个引擎,所述第一多个引擎将所述请求异步缓冲到所述第一多个队列中,
其中所述本地NIC还包括第一引擎选择模块,所述第一引擎选择模块用以基于负载平衡策略选择所述第一多个引擎中的第一引擎来异步缓冲来自每个命令的所述请求,
其中所述远程NIC的所述第二排序模块包括第二多个引擎,所述第二多个引擎将所述请求异步缓冲到所述第二多个队列中,并且
其中所述远程NIC还包括第二引擎选择模块,所述第二引擎选择模块用以基于负载平衡策略选择所述第二多个引擎中的第二引擎来异步缓冲来自每个分组的所述请求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/976,728 | 2022-10-28 | ||
US17/976,728 US20240143198A1 (en) | 2022-10-28 | 2022-10-28 | Aggregating small remote memory access requests |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117951051A true CN117951051A (zh) | 2024-04-30 |
Family
ID=90732040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311298585.5A Pending CN117951051A (zh) | 2022-10-28 | 2023-10-09 | 聚合小型远程存储器访问请求 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240143198A1 (zh) |
CN (1) | CN117951051A (zh) |
DE (1) | DE102023126691A1 (zh) |
-
2022
- 2022-10-28 US US17/976,728 patent/US20240143198A1/en active Pending
-
2023
- 2023-09-29 DE DE102023126691.8A patent/DE102023126691A1/de active Pending
- 2023-10-09 CN CN202311298585.5A patent/CN117951051A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102023126691A1 (de) | 2024-05-08 |
DE102023126691A8 (de) | 2024-06-27 |
US20240143198A1 (en) | 2024-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11916781B2 (en) | System and method for facilitating efficient utilization of an output buffer in a network interface controller (NIC) | |
CA2573156C (en) | Apparatus and method for supporting memory management in an offload of network protocol processing | |
US6836808B2 (en) | Pipelined packet processing | |
US7493427B2 (en) | Apparatus and method for supporting received data processing in an offload of network protocol processing | |
US7962628B2 (en) | Apparatus and method for supporting connection establishment in an offload of network protocol processing | |
US7295557B2 (en) | System and method for scheduling message transmission and processing in a digital data network | |
US6526451B2 (en) | Method and network device for creating circular queue structures in shared memory | |
US6356962B1 (en) | Network device and method of controlling flow of data arranged in frames in a data-based network | |
EP3588881A1 (en) | Technologies for reordering network packets on egress | |
US7822053B2 (en) | Apparatus and method for TCP buffer copy distributed parallel processing | |
US7124231B1 (en) | Split transaction reordering circuit | |
EP1554644A2 (en) | Method and system for tcp/ip using generic buffers for non-posting tcp applications | |
US7209489B1 (en) | Arrangement in a channel adapter for servicing work notifications based on link layer virtual lane processing | |
CN117951051A (zh) | 聚合小型远程存储器访问请求 | |
CN110661731B (zh) | 一种报文处理方法及其装置 | |
CN117834570A (zh) | 传输系统的数据包处理方法、装置、电子设备及存储介质 | |
EP0863465A1 (en) | Network interface device and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |