CN117880197A - 汇聚以实现拥塞管理 - Google Patents

汇聚以实现拥塞管理 Download PDF

Info

Publication number
CN117880197A
CN117880197A CN202311313779.8A CN202311313779A CN117880197A CN 117880197 A CN117880197 A CN 117880197A CN 202311313779 A CN202311313779 A CN 202311313779A CN 117880197 A CN117880197 A CN 117880197A
Authority
CN
China
Prior art keywords
data
nic
computing system
sender
request
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
CN202311313779.8A
Other languages
English (en)
Inventor
K·D·安德伍德
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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
Priority claimed from US18/478,531 external-priority patent/US20240121294A1/en
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN117880197A publication Critical patent/CN117880197A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开涉及汇聚以实现拥塞管理。提供了一种促进计算系统处的incast管理的网络接口控制器(NIC)。在操作期间,所述NIC可以经由网络接收来自远程计算系统的发送数据的请求。所述NIC可以确定所述请求是来自可经由所述网络访问的多个远程计算系统的多个请求之一。基于所述请求中的描述符,所述NIC可以确定所述数据在所述远程计算系统处的存储位置。然后,所述NIC可以确定所述计算系统处与所述多个请求相关联的拥塞程度。所述NIC可以基于所述拥塞程度并相对于所述多个请求来调度响应于所述请求的数据取得。然后,所述NIC可以基于远程访问从所述存储位置取得所述数据。

Description

汇聚以实现拥塞管理
相关申请的交叉引用
本申请要求发明人Keith D.Underwood和Duncan Roweth于2022年10月11日提交的名称为“Systems and Methods for Implementing Congestion Management andEncryption[用于实施拥塞管理和加密的系统和方法]”的美国临时申请号63/379,079、代理人案卷号P170847USPRV的权益。
背景技术
高性能计算(HPC)通常可以促进运行应用程序的节点上的高效计算。HPC可以促进发送方装置与接收方装置之间的高速数据传送。
附图说明
图1A图示了根据本申请的一方面的用于数据取得的接收方驱动的incast管理的示例。
图1B图示了根据本申请的一方面的无序数据取得的示例。
图2呈现了根据本申请的一方面的流程图,其图示了计算系统的网络接口控制器(NIC)使用汇聚来实现拥塞管理的过程的示例。
图3图示了根据本申请的一方面的促进接收方驱动的incast管理的通信的示例。
图4A呈现了根据本申请的一方面的流程图,其图示了接收方装置响应于传送请求来调度数据取得的过程的示例。
图4B呈现了根据本申请的一方面的流程图,其图示了接收方装置在调度的时间从发送方装置取得一份数据的过程的示例。
图5呈现了根据本申请的一方面的流程图,其图示了发送方装置向接收方装置发送传送请求的过程的示例。
图6图示了根据本申请的一方面的促进使用数据取得进行接收方驱动的incast管理的计算系统的示例。
图7图示了根据本申请的一方面的促进使用数据取得进行接收方驱动的incast管理的非暂态计算机可读存储器装置的示例。
在这些附图中,相同的附图标记指代相同的附图元素。
具体实施方式
随着应用程序逐渐变得更加分布式,HPC可以促进运行应用程序的节点上的高效计算。HPC环境可以包括计算节点、存储节点和耦接这些节点的大容量交换机。通常,计算节点可以形成集群。集群可以经由网络耦接到存储节点。计算节点可以运行在集群中并行运行的一个或多个应用程序。存储节点可以记录在计算节点上执行的计算的输出。因此,计算节点和存储节点可以彼此协同操作以促进高性能计算。
为了确保预期的性能水平,相应节点需要以其他节点的操作速率进行操作。例如,在计算节点生成数据后,存储节点需要立即接收来自计算节点的一份数据。这里,存储节点和计算节点可以分别作为接收方装置和发送方装置进行操作。另一方面,如果计算节点从存储节点获得一份数据,则存储节点和计算节点可以分别作为发送方装置和接收方装置进行操作。此外,网络的交换机需要高速传送一份数据以保证低时延的数据传送。当许多发送方装置尝试向接收方装置发送数据时,网络中会发生incast,导致接收方装置处的高度拥塞。因此,高性能网络(如数据中心网络)可能需要缓解网络中的incast期间的拥塞的机制,以确保高速数据传送。
本文描述的各方面通过以下方式解决了接收方装置处的incast期间网络中的高效数据传送的问题:(i)从自发送方装置接收到的传输请求中获得一份数据的描述符;(ii)基于接收方装置处的拥塞程度来调度对应的文件取得;以及(iii)在调度的时间从描述符中指示的位置远程取得数据。因为接收方装置知道来自多个发送方装置的所有传送请求,所以接收方装置可以高效地确定何时从每份数据取得数据。为此,接收方装置可以调度取得以避免它们之间的冲突。当接收方装置准备好从特定发送方装置获得一份数据时,接收方装置可以使用远程直接存储器访问(RDMA)来获得数据,而无需与发送方装置上的对应应用程序交互。
在现有技术中,从多个发送方装置到接收方装置的数据传送可能会导致拥塞并降低交换机处数据流的吞吐量。这种多对一的通信模式可以称为“incast”。通常,为了缓解incast的影响,接收方装置可以限制来自发送方装置的流量。然后,接收方装置可以调度来自发送方装置的传输,并基于调度将传输信用发送到各个发送方装置。信用允许发送方装置将数据传输到接收方装置,如对应信用所指示的。然而,由于接收方装置无法控制发送方装置如何调度传输,因此网络中的交换机仍可能经历拥塞。
此外,为了传送数据,发送方装置可以将数据包括在包中。这可能会导致包乱序到达接收方装置。包乱序到达可能需要包中具有序号。在一些示例中,经由网络的数据传输可能需要对报头信息进行排序。然而,与报头信息相关联的有效载荷数据可能不需要以与报头信息排序相同的方式来排序。通常,数据传输可以使用一个包流,其中报头信息与有效载荷数据一起被包括在包中。在这种情况下,包根据报头信息进行排序。一些现有的拥塞管理解决方案可以利用网络中的多条路径,其中发送方装置在多条路径上发送包以避免特定路径上的拥塞。因此,发送方装置和接收方装置必须维护大量资源密集的机制以促进包重新排序。网络中的incast可能会进一步加剧网络中的包丢失,并对包重新排序机制造成进一步的压力。
为了解决这个问题,接收方装置可以基于接收方装置的拥塞程度来调度发送方装置的传输。拥塞程度可能取决于incast程度。接收方装置可以从发送方装置执行数据取得操作,而不是向发送方装置授予传输信用并允许发送方装置确定何时进行传输。因此,接收方装置可以控制取得的数据何时穿过网络。在操作期间,当发送方装置上的发送方应用程序需要向接收方装置上的对应应用程序发送一份数据时,该应用程序可以通知发送方装置上的NIC。发送方装置的NIC可以被称为发送方NIC。
然后,发送方NIC可以取得该份数据(例如,从被分配给应用程序的存储器位置)并将其存储在NIC的发送方缓冲区中。随后,发送方NIC可以发送用于发送数据的传输请求。该请求可以包括数据的描述符。描述符可以指示数据的位置。该位置可以包括该份数据在发送方缓冲区中的存储器位置。当接收方装置的NIC(其可以被称为接收方NIC)接收到请求时,接收方NIC可以在NIC的接收方缓冲区中分配位置。接收方缓冲区可以被分配给与该份数据相关联的数据流。
接收方NIC可以从该描述符中指定的位置取得数据。取得过程可以绕过应用程序的主动参与。接收方NIC可以使用RDMA从发送方NIC中的发送方缓冲区中取得数据。由于接收方装置可以从发送方缓冲区中拉取数据,而不是要求发送方装置发送数据,因此接收方装置可以控制数据何时到达。相应地,接收方装置可以调度取得以避免它们之间的冲突。通过基于调度取得数据,接收方NIC可以安排来自发送方装置的数据如何穿过网络。这种高效的基于取得的incast管理系统可以缓解incast的影响并减少网络中的拥塞。
另外,取得过程可以与基于信用的拥塞管理系统结合操作。例如,接收方装置处的拥塞程度达到阈值时,接收方装置可以从基于信用的系统切换到基于取得的系统。拥塞程度可以对应于incast程度,其指示向接收方装置发送传输请求的发送方装置的数量。相应地,阈值可以指示以下一项或多项:发送方装置的预定数量,以及从发送方装置接收数据的接收方缓冲区的预定利用率水平或百分比。例如,如果发送传输请求的发送方装置的数量达到预定数量(即,阈值),则可以触发到基于取得的系统的切换。另一方面,如果拥塞程度达到较高阈值(例如,高水位线),则接收方装置可以将数据取得暂停预定时间段。这可以允许接收方装置清除待处理的传输。随后,当该时间段到期并且拥塞程度下降至低于较高阈值时,接收方装置可以重新启动调度过程。
此外,接收方装置可以保持跟踪成功的数据取得。具体地,由于每份取得的数据可以被放置在接收方缓冲区中的预定位置处,因此这些位置可以指示接收到的数据的顺序。相应地,基于取得的一份数据在接收方缓冲区中的位置,接收方NIC可以确定数据是否已按顺序到达。如果数据被乱序取得,则数据可以保留在分配的位置中。当接收方NIC按顺序接收到所有数据时,接收方NIC可以将数据推送到应用程序。于是,乱序数据取得可以减少接收方装置处对重新排序机制的需要。
在本公开中,术语“交换机”是在一般意义上使用,并且它可以指在任何网络层中操作的任何独立或结构交换机。“交换机”不应被解释为将本发明的示例限制于层2-网络。可以将流量转发到外部装置或另外交换机的任何装置都可以被称为“交换机”。可以将流量转发到终端装置的任何物理或虚拟装置(例如,在计算装置上操作的虚拟机或交换机)都可以被称为“交换机”。“交换机”的示例包括但不限于层2-交换机、层3-路由器、路由交换机、Gen-Z网络的部件、或包括多个相似或异构的较小物理和/或虚拟交换机的结构交换机。
术语“包”是指可以在网络上一起传输的一组比特。“包”不应被解释为将本发明的示例限制于网络协议栈的特定层。“包”可以由涉及一组比特的其他术语来代替,比如“消息”、“帧”、“单元”、“数据报”或“事务(transaction)”。此外,术语“端口”可以指可以接收或发射数据的端口。“端口”还可以指可以促进该端口的操作的硬件、软件和/或固件逻辑。
图1A图示了根据本申请的一方面的用于数据取得的接收方驱动的incast管理的示例。HPC环境100可以包括多个节点111、112、113、114、115、116、117、118和119。这些节点的子集可以是计算节点,而其他节点可以是存储节点。这些节点可以经由网络110彼此耦接。此时相应的节点可以作为接收方装置或发送方装置进行操作。这种节点可以分别称为接收方装置或发送方装置。网络110可以包括一组大容量交换机101、102、103、104和105。这里,网络110可以是HPC结构。计算节点和存储节点可以通过网络110彼此协同操作以促进HPC环境100中的高性能计算。
网络110中的交换机子集可以经由各自的通道彼此耦接。通道的示例可以包括但不限于VXLAN、通用路由封装(GRE)、使用GRE的网络虚拟化(NVGRE)、通用网络虚拟化封装(Geneve)、因特网协议安全(IPsec)和多协议标签交换(MPLS)。网络110中的通道可以在基础网络(或底层网络)上形成。基础网络可以是物理网络,并且基础网络的相应链路可以是物理链路。基础网络中的相应交换机对可以是边界网关协议(BGP)对等体。VPN,比如以太网VPN(EVPN),可以被部署在网络110上。
为了确保预期的性能水平,HPC环境100中的相应节点可以以其他节点的操作速率进行操作。假设节点111作为接收方装置进行操作。然后至少环境100中的其余节点的子集可以作为发送方装置进行操作。交换机101、102、103、104和105可以促进从相应发送方装置到接收方装置111以高速的低时延数据传送。当大量发送方装置尝试向接收方装置111发送数据时,网络110中发生incast,这可能导致接收方装置111和相关交换机处的高度拥塞。因此,为了确保高速数据传送,HPC环境100可能需要用于缓解incast期间的拥塞的机制。
在存在的技术中,从多个发送方装置(比如发送方装置112和114)到接收方装置的数据传送可能会导致拥塞并降低(例如,耦接接收方装置111的交换机101处)数据流的吞吐量。当incast发生时,接收方装置111可以限制来自发送方装置的流量以缓解incast的影响。接收方装置111然后可以调度来自发送方装置的传输并且基于调度将传输信用发送到各个发送方装置,比如发送方装置112和114。信用允许发送方装置112和114将数据传输到接收方装置111,如对应信用所指示的。然而,由于接收方装置111无法控制发送方装置112和114可以如何调度传输,所以网络110中的交换机仍然可能经历拥塞。
此外,为了传送数据,发送方装置112和114可以将数据包括在一组包中。然而,由于网络110的有损天性,一个或多个包可能丢失。这可能导致包乱序到达接收方装置111。包乱序到达可能需要包中具有序号。因此,发送方装置112和114以及接收方装置111需要维持大量资源密集的机制以促进包重新排序。网络110中的incast可能会进一步加剧网络110中的包丢失,并对包重新排序机制造成进一步的压力。
为了解决这个问题,接收方装置111可以基于接收方装置111处的拥塞程度(例如,由incast程度指示)来调度来自发送方装置112和114的传输。接收方装置111可以从发送方装置112执行数据取得操作,而不是向发送方装置112(或发送方装置114)授予传输信用并允许发送方装置112确定何时进行传输。因此,接收方装置111可以控制取得的数据何时可以穿过网络110。在操作期间,当发送方装置112上的发送方应用程序需要将数据134和136发送到接收方装置111时,该应用程序可以通知发送方装置112的NIC 130。类似地,当发送方装置114上的发送方应用程序需要将数据144和146发送到接收方装置111时,该应用程序可以通知发送方装置114的NIC 140。
NIC 130然后可以从发送方装置112接收具有数据134和136在发送方装置112的存储器装置132中的存储器位置的指令。类似地,NIC 140可以从发送方装置114接收具有数据144和146在发送方装置114的存储器装置142中的存储器位置的指令。随后,NIC 130可以发送用于发送数据134的传输请求152。请求152可以包括数据134的描述符。描述符可以指示数据134的位置,其可以包括数据134在存储器装置132中的存储器位置。当接收方装置111的NIC 120接收请求152时,NIC 120可以在接收方装置111的存储器装置中的接收方缓冲区122中分配位置。接收方缓冲区122可以被分配给发送方缓冲区132(即,作为队列对)。类似地,NIC 140可以发送具有数据144的描述符的传输请求162。描述符可以指示数据144在缓冲区142中的存储器位置。
当NIC 120接收请求162时,NIC 120可以在接收方缓冲区124中分配位置。然而,如果请求162在分配缓冲区124之前到达NIC 120(例如,作为意外请求),则可以推迟对请求162的处理,直到分配了缓冲区124。接收方缓冲区124可以被分配给发送方缓冲区142。以这种方式,NIC 120可以维护多个缓冲区122、124、126和128,每个缓冲区用于对应的发送方缓冲区。NIC 120可以分别从请求152和162的对应描述符中指定的位置取得数据134和144。取得过程可以绕过应用程序的主动参与。NIC 120可以使用RDMA来取得数据134和144。例如,NIC 120可以分别使用RDMA GET包(例如,数据报)154和164来从缓冲区132和142取得数据。因为NIC 120可以分别从缓冲区132和142拉取数据134和144,所以NIC 120可以控制数据134和144何时可以到达接收方装置111。这里,NIC 120、130和140可以使用HPC结构所支持的汇聚协议。汇聚协议促进了基于消息传递的大数据传送。根据汇聚协议,发送方装置可以将传输请求作为控制信号到接收方装置。在接收到传输请求后,接收方装置可以发出基于远程存储器访问的读取信号,比如RDMA GET消息。读取信号可以从传输请求中指示的位置从发送方装置获得数据,而不涉及发送方装置的处理器。
通过基于调度取得数据,NIC 120可以安排数据134和144如何穿过网络110。这种高效的基于取得的incast管理系统可以缓解incast的影响并减少网络110中的拥塞。另外,取得过程可以与基于信用的拥塞管理系统结合操作。例如,如果拥塞程度或incast程度达到阈值,则接收方装置111可以从基于信用的系统切换到基于取得的系统。阈值可以指示以下一项或多项:发送方装置的预定数量,以及接收方缓冲区的预定利用率水平或百分比。另一方面,如果拥塞程度达到高阈值(例如,高水位线),则接收方装置111可以将数据取得暂停预定时间段。随后,当该时间段到期并且拥塞程度下降至低于高阈值时,接收方装置111可以重新开始对数据取得的调度。
图1B图示了根据本申请的一方面的无序数据取得的示例。NIC 120还可以保持跟踪成功的数据取得。NIC 140中的发送方缓冲区142可以包括用于传送到NIC 120的数据174和176。NIC 120可以在缓冲区124中为数据174和176中的每一个分配预定位置。因此,缓冲区124中的位置可以指示从缓冲区142接收的数据的顺序。基于数据174和176在缓冲区124中的位置,NIC 120可以确定数据174和176是否按顺序到达。假设NIC 120分别使用RDMAGET包182和184来获得数据174和176。包182可能在网络110中丢失(用叉号表示)。因此,NIC120可能乱序地接收数据176。
然而,缓冲区124中为数据174分配的位置180可能保持未使用。因此,NIC 120可以确定数据176未按顺序。然后,数据176可以在缓冲区124中保留在其位置处。NIC 120可以重新尝试从缓冲区142中取得数据174。当NIC 120接收数据174时,NIC 120可以确定数据174和176按顺序被存储在缓冲区124中。NIC 120然后可以将数据174和176推送到应用程序。于是,乱序数据取得可以减少接收方装置111处对重新排序机制的需要。
图2呈现了根据本申请的一方面的流程图,其图示了计算系统的NIC使用汇聚来实现拥塞管理的过程的示例。在操作期间,NIC可以经由网络接收来自远程计算系统的发送一份数据的请求(操作202)。NIC可以确定请求是来自可经由网络访问的多个远程计算系统的多个请求之中(操作204)。基于请求中的描述符,NIC可以确定一份数据在远程计算系统处的存储位置(操作206)。然后,NIC可以确定计算系统处与多个请求相关联的拥塞程度(操作208)。随后,NIC可以基于拥塞程度并相对于多个请求来调度响应于请求的数据取得(操作210)。相应地,NIC可以基于远程访问从远程计算系统处的存储位置取得数据(操作212)。
图3图示了根据本申请的一方面的促进接收方驱动的incast管理的通信的示例。HPC环境300可以包括网络310,该网络包括交换机322和324。在该示例中,环境300的节点350和360可以分别作为发送方装置和接收方装置进行操作。在操作期间,发送方装置350的NIC 352可以注册发送方缓冲区340(例如,位于发送方装置350的存储器装置中)(操作302)。缓冲区340可以包括需要传送到接收方装置360的一份数据342。当接收到请求时,NIC352可以从发送方装置350的存储器获得数据342(例如,使用memcpy操作)。NIC 352然后可以经由本地耦接的交换机324向接收方装置360发送传输请求(操作304)。
在一些示例中,NIC 352还可以将“工作完成”记录并入与缓冲区340相关联的完成队列中。NIC 352可以可选地认为数据342的传送已完成,因为NIC 362可以负责取得数据342。交换机322然后可以经由网络310将请求转发到接收方装置360(操作306)。请求可以包括数据342的描述符。在接收到请求后,NIC 362可以确定数据342的位置。NIC 362还可以将接收方缓冲区330(例如,位于接收方装置360的存储器装置中)注册为缓冲区340的对应缓冲区(操作308)。NIC 362还可以在缓冲区320中为数据342分配位置(操作310)。NIC 362可以使用RDMA GET来从缓冲区340取得数据342(操作312)。这里,NIC 362和352可以使用HPC结构所支持的汇聚协议。
当NIC 362接收到数据342(例如,来自RDMA GET包)时,NIC 362可以将数据342存储在缓冲区340中分配的位置中(操作314)。可以通过在NIC 362和352上实例化的网络库来促进RDMA。网络库的示例可以包括但不限于消息传递接口(MPI)、分区全局地址空间库(例如,OpenSHMEM)和集体通信库(CCL)(例如,CCL或NCCL)。NIC 362还可以发送指示NIC 362已经接收到数据342的确认,该确认可以包括短消息(操作316)。本地耦接的交换机101可以接收确认并经由网络110将其转发到发送方装置350(操作318)。NIC 352然后可以从缓冲区340清除数据342(操作320)。
图4A呈现了根据本申请的一方面的流程图,其图示了接收方装置响应于传送请求来调度数据取得的过程的示例。在操作期间,接收方装置可以从发送方装置接收对数据的传输请求(操作402)。传输请求可以是远程存储器访问请求。然后接收方装置可以从请求中获得数据的描述符(操作404)。描述符可以包括数据在发送方装置的存储器装置中的位置。然后,接收方装置可以确定该请求是否是意外请求(例如,在为数据流注册本地缓冲区之前到达)(操作406)。如果该请求是意外的,则可以推迟对该请求的处理,直到分配了缓冲区为止(操作414)。然后,接收方装置可以确定是否为发送方缓冲区分配了接收方缓冲区(操作416)。
如果未分配接收方缓冲区,则可以继续推迟对该请求的处理,直到分配了缓冲区为止(操作414)。如果该请求不是意外的(操作406)或者在分配接收方缓冲区时(操作416),接收方装置可以为发送方缓冲区注册接收方缓冲区(操作408)。以这种方式,从发送方缓冲区取得的数据就可以存储在接收方缓冲区中。然后,接收方装置可以在接收方缓冲区中为数据分配位置(操作410)。接收方装置可以基于incast程度来调度从发送方缓冲区取得数据(操作412)。以这种方式,接收方装置可以基于拥塞程度并相对于请求数据取得的发送方装置的数量来调度何时取得数据。基于调度,接收方装置可以缓解incast的影响。
图4B呈现了根据本申请的一方面的流程图,其图示了接收方装置在调度的时间从发送方装置取得一份数据的过程的示例。在操作期间,接收方装置可以基于数据的描述符(其可以从对应的传输请求中获得)来确定数据的位置(操作452),并且发出RDMA GET以用于从所确定的位置取得数据(操作454)。RDMA GET可以从发送方装置处存储数据的存储器装置获得数据。接收方装置可以确定取得是否成功(操作456)。RDMA GET过程可以提供一种机制,接收方装置可以据此来确定成功取得。
如果未成功取得,则接收方装置可以重新尝试取得(操作460)并继续发出RDMAGET以取得数据(操作454)。另一方面,如果成功取得,则接收方装置可以将取得的数据存储在接收缓冲区中的预选位置中(操作458)。由于取得数据的位置是预选的,因此取得可以是无序的,而不依赖于序号。以这种方式,如果接收方装置按顺序维护请求发送操作的顺序(例如,通过使用排序方案),则数据可以按任何顺序取得并按任何顺序传送到接收方装置的存储器。
图5呈现了根据本申请的一方面的流程图,其图示了发送方装置向接收方装置发送传送请求的过程的示例。在操作期间,发送方装置可以获得用于传输的数据(操作502)(例如,从分布式应用程序)。发送方装置可以将数据存储在发送方缓冲区中(操作504)。发送方缓冲区可以位于发送方装置的存储器装置中。发送方装置然后可以确定指示数据在发送方缓冲区中的位置的描述符(操作506)。然后,发送方装置可以生成具有描述符的传输请求(操作508)并将该传输请求发送到接收方装置(操作510)。这里,传输请求可以是RDMA请求。
图6图示了根据本申请的一方面的促进使用数据取得进行接收方驱动的incast管理的计算系统的示例。计算系统600可以包括一组处理器602、存储器单元604、NIC 606和存储装置608。存储器单元604可以包括一组易失性存储器装置(例如,双列直插式存储器模块(DIMM))。此外,如果需要,计算系统600可以被耦接到显示装置612、键盘614和定点装置616。存储装置608可以存储操作系统618。incast管理系统620和与incast管理系统620相关联的数据636可以从存储装置608和/或NIC 606维护和执行。
incast管理系统620可以包括指令,所述指令当由计算系统600执行时,可以使计算系统600执行本公开中描述的方法和/或过程。具体地,如果计算系统600是发送方装置,则incast管理系统620可以包括用于向接收方装置发送具有描述符的一份数据的传输请求的指令(请求逻辑块622)。incast管理系统620还可以包括用于将数据存储在发送方缓冲区中(例如,NIC 606中)的指令(缓冲区逻辑块628)。
另一方面,如果计算系统600是接收方装置,则incast管理系统620可以包括用于接收传输请求并从该请求获得描述符的指令(请求逻辑块622)。incast管理系统620还可以包括用于基于如由incast程度所指示的拥塞程度来调度从发送方装置取得数据的指令(调度逻辑块624)。incast程度可以取决于发送装置的数量。此外,incast管理系统620可以包括用于从请求中包括的描述符中指示的位置远程取得一份数据的指令(例如,使用RDMA)(取得逻辑块626)。
incast管理系统620可以进一步包括用于在接收方缓冲区中为数据分配位置的指令(缓冲区逻辑块628)。此外,incast管理系统620可以包括用于将取得的数据存储在分配的位置中的指令(缓冲区逻辑块628)。incast管理系统620还可以包括用于确定是否按顺序取得数据的指令(顺序逻辑块630)。另外,incast管理系统620还可以包括用于推送已经按顺序取得的数据的指令(顺序逻辑块630)。
incast管理系统620可以进一步包括用于发送和接收包的指令(通信逻辑块632)。数据636可以包括可以促进incast管理系统620的操作的任何数据。数据636可以包括但不限于描述符、要传输的数据、乱序数据以及完成记录。
图7图示了根据本申请的一方面的促进使用数据取得进行接收方驱动的incast管理的非暂态计算机可读存储器装置的示例。计算机可读存储器装置700可以包括多个单元或设备,它们可以经由有线、无线、量子、光或电通信信道相互通信。存储器装置700可以使用一个或多个集成电路来实现,并且可以包括比图7中所示的单元或设备更少或更多的单元或设备。
进一步地,存储器装置700可以与计算机系统集成。例如,存储器装置700可以位于计算机系统的NIC中。存储器装置700可以包括执行与图6的incast管理系统620的逻辑块622-632类似的功能或操作的单元702-712,这些单元包括:请求单元702;调度单元704、取得单元706;存储单元708;顺序单元710;以及通信单元712。
本文的描述被呈现以使得本领域的任何技术人员能够制造和使用本发明,并且在特定应用及其要求的上下文中被提供。对所公开示例的各种修改对于本领域技术人员来说将是显而易见的,并且在不脱离本发明的精神和范围的情况下,本文定义的一般原理可以应用于其他示例和应用。因此,本发明不限于所示示例,而旨在符合与权利要求一致的最大范围。
本技术的一方面可以提供一种促进计算系统处的高效incast管理的NIC。在操作期间,NIC可以经由网络接收来自远程计算系统的发送数据的请求。NIC可以确定请求是来自可经由所述网络访问的多个远程计算系统的多个请求之一。基于请求中的描述符,NIC可以确定数据在远程计算系统处的存储位置。然后,NIC可以确定计算系统处与多个请求相关联的拥塞程度。随后,NIC可以基于拥塞程度并相对于多个请求来调度响应于请求的数据取得。然后NIC可以基于远程访问从远程计算系统处的存储位置取得数据。
在这一方面的变型中,为了调度数据取得,NIC可以确定拥塞程度是否大于指示向计算系统发送数据的计算系统的预定数量的阈值。如果拥塞程度大于阈值,则NIC可以将调度暂停预定时间段。
在这一方面的变型中,数据的存储位置位于远程计算系统的发送方缓冲区中。
在这一方面的变型中,NIC可以确定用于在计算系统处的接收方缓冲区中存储数据的位置。然后,NIC可以将数据存储在所确定的位置。
在进一步的变型中,数据的取得可以不依赖于序号。
在这一方面的变型中,计算系统可以是接收方装置。远程计算系统则可以是发送方装置。
在这一方面的变型中,远程访问可以基于从NIC的远程直接存储器访问(RDMA)。
在这一方面的变型中,网络可以包括支持数据取得的高性能计算(HPC)结构。这里,数据的取得可以基于HPC结构所支持的汇聚协议。汇聚协议可以支持发送针对数据的传输请求以及基于远程访问来取得数据。
在这一方面的变型中,基于由多个远程计算系统在计算系统处引起的incast程度来确定拥塞程度。
本具体实施方式中描述的数据结构和代码通常存储在计算机可读存储介质上,所述计算机可读存储介质可以是可以存储供计算机系统使用的代码和/或数据的任何装置或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁存储装置和光存储装置(比如磁盘、磁带、CD(致密盘)、DVD(数字多功能盘或数字视频盘))、或能够存储现在已知或以后开发的计算机可读介质的其他介质。
在具体实施方式部分中描述的方法和过程可以被具体化为代码和/或数据,代码和/或数据可以被存储在如上所述的计算机可读存储介质中。当计算机系统读取并执行被存储在计算机可读存储介质上的代码和/或数据时,所述计算机系统执行被具体化为数据结构和代码并被存储在计算机可读存储介质内的方法和过程。
本文所描述的方法和过程可以由硬件逻辑块或设备执行和/或被包括在其中。这些逻辑块或设备可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、在特定时间执行特定的软件逻辑块或一份代码的专用或共享处理器、和/或现在已知或以后开发的其他可编程逻辑装置。在激活硬件逻辑块或设备时,它们执行其中所包括的方法和过程。
本发明示例的先前描述仅是出于图示和描述的目而呈现的。所述描述并非旨在是穷举的或限制本公开。相应地,对于本领域普通技术人员而言,许多的修改和变化将是显而易见的。本发明的范围由所附权利要求限定。

Claims (20)

1.一种计算系统,包括:
存储器装置;
一个或多个端口;以及
网络接口控制器(NIC),用于:
经由网络接收来自远程计算系统的发送数据的请求;
确定所述请求是来自能够经由所述网络访问的多个远程计算系统的多个请求之一;
基于所述请求中的描述符确定所述数据在所述远程计算系统处的存储位置;
确定所述计算系统处与所述多个请求相关联的拥塞程度;
基于所述拥塞程度并相对于所述多个请求来调度响应于所述请求的数据取得;以及
基于远程访问从所述远程计算系统处的所述存储位置取得所述数据。
2.如权利要求1所述的计算系统,其中,为了调度所述数据取得,所述NIC进一步用于:
确定所述拥塞程度是否大于指示向所述计算系统发送数据的计算系统的预定数量的阈值;以及
响应于所述拥塞程度大于所述阈值,将所述调度暂停预定时间段。
3.如权利要求1所述的计算系统,其中,所述数据在所述远程计算系统处的所述存储位置位于所述远程计算系统的发送方缓冲区中。
4.如权利要求1所述的计算系统,其中,所述NIS进一步用于:
确定用于在所述计算系统处的接收方缓冲区中存储所述数据的位置;以及
将所述数据存储在所确定的位置处。
5.如权利要求1所述的计算系统,其中,所述数据不依赖于序号而被取得。
6.如权利要求1所述的计算系统,其中,所述计算系统是所述远程访问的接收方装置,并且其中,所述远程计算系统是所述远程访问的发送方装置。
7.如权利要求1所述的计算系统,其中,所述远程访问基于从所述计算系统的远程直接存储器访问(RDMA)。
8.如权利要求1所述的计算系统,其中,所述网络包括高性能计算(HPC)结构,所述HPC结构支持基于所述HPC结构所支持的汇聚协议的所述数据的所述取得,并且其中,所述汇聚协议支持发送针对所述数据的所述传输请求以及基于远程访问的所述数据的取得。
9.一种方法,包括:
由接收方装置经由网络接收来自在发送方装置上运行的应用程序的发送数据的请求;
确定所述请求是来自能够经由所述网络访问的多个发送方装置的多个请求之一;
基于所述请求中的描述符确定所述数据在所述发送方装置处的存储位置;
确定所述接收方装置处与所述多个请求相关联的拥塞程度;
由所述接收方装置基于所述拥塞程度并相对于所述多个请求来调度响应于所述请求的数据取得;以及
由所述接收方装置基于远程访问从所述发送方装置处的所述存储位置取得所述数据。
10.如权利要求9所述的方法,其中,对所述数据取得的所述调度进一步包括:
确定所述拥塞程度是否大于指示向所述计算系统发送数据的计算系统的预定数量的阈值;以及
响应于所述拥塞程度大于所述阈值,将所述调度暂停预定时间段。
11.如权利要求9所述的方法,其中,所述数据在所述发送方装置处的所述存储位置位于所述发送方装置的存储器装置中的发送方缓冲区中,并且其中,所述请求是在所述发送方装置的网络接口控制器(NIC)处生成的。
12.如权利要求9所述的方法,进一步包括:
确定用于在所述接收方装置处的接收方缓冲区中存储所述数据的位置;以及
将所述数据存储在所确定的位置处。
13.如权利要求9所述的方法,其中,所述数据不依赖于序号而被取得。
14.如权利要求9所述的方法,其中,对所述数据取得的所述调度和对所述数据的所述取得是由所述接收方装置的NIC执行的。
15.如权利要求9所述的方法,其中,所述远程访问基于从所述接收方装置的远程直接存储器访问(RDMA)。
16.如权利要求9所述的方法,其中,所述网络包括高性能计算(HPC)结构,所述HPC结构支持基于所述HPC结构所支持的汇聚协议的所述数据的所述取得,并且其中,所述汇聚协议支持发送针对所述数据的所述传输请求以及基于远程访问的所述数据的取得。
17.一种非暂态计算机可读存储介质,包括指令,所述指令当在分布式系统中的接收方装置的网络接口控制器(NIC)上执行时使所述NIC:
经由网络接收来自发送方装置的存储器装置的发送数据的请求;
确定所述请求是来自能够经由所述网络访问的多个发送方装置的多个请求之一;以及
基于所述请求中的描述符确定所述数据在所述发送方装置处的存储位置;
确定所述接收方装置处与所述多个请求相关联的拥塞程度;
基于所述拥塞程度并相对于所述多个请求来调度响应于所述请求的数据取得;以及
基于远程访问从所述发送方装置处的所述存储位置取得所述数据。
18.如权利要求17所述的非暂态计算机可读存储介质,其中,所述指令当在所述NIC上执行时使所述NIC:
确定用于在接收方装置处的接收方缓冲区中存储所述数据的位置;以及
将所述数据存储在所确定的位置处。
19.如权利要求17所述的非暂态计算机可读存储介质,其中,所述数据在所述发送方装置处的所述存储位置位于所述发送方装置的存储器装置中的发送方缓冲区中,并且其中,所述请求是在所述发送方装置的第二NIC处生成的。
20.如权利要求17所述的非暂态计算机可读存储介质,其中,所述NIC通过以下方式调度所述数据取得:
确定所述拥塞程度是否大于指示向所述计算系统发送数据的计算系统的预定数量的阈值;以及
响应于所述拥塞程度大于所述阈值,将所述调度暂停预定时间段。
CN202311313779.8A 2022-10-11 2023-10-11 汇聚以实现拥塞管理 Pending CN117880197A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US63/379,079 2022-10-11
US18/478,531 2023-09-29
US18/478,531 US20240121294A1 (en) 2022-10-11 2023-09-29 Rendezvous to enable congestion management

Publications (1)

Publication Number Publication Date
CN117880197A true CN117880197A (zh) 2024-04-12

Family

ID=90576069

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311313779.8A Pending CN117880197A (zh) 2022-10-11 2023-10-11 汇聚以实现拥塞管理

Country Status (1)

Country Link
CN (1) CN117880197A (zh)

Similar Documents

Publication Publication Date Title
US11899596B2 (en) System and method for facilitating dynamic command management in a network interface controller (NIC)
US20200280518A1 (en) Congestion management techniques
US11575609B2 (en) Techniques for congestion management in a network
US9503383B2 (en) Flow control for reliable message passing
US9253287B2 (en) Speculation based approach for reliable message communications
US20220014478A1 (en) Resource consumption control
US20120185614A1 (en) Network Interface for Use in Parallel Computing Systems
KR20070030285A (ko) 데이터 전송 방법, 데이터 전송 시스템 및 컴퓨터 판독가능한 기록 매체
CN116018790A (zh) 基于接收方的精密拥塞控制
WO2006019512A1 (en) Apparatus and method for supporting connection establishment in an offload of network protocol processing
US20220078119A1 (en) Network interface device with flow control capability
KR100464195B1 (ko) 데이터를 전송하기 위한 신뢰성 있는 프로토콜을 제공하는방법 및 장치
TW201342079A (zh) 於晶載網路上之流量控制技術
US20220321478A1 (en) Management of port congestion
US8874984B2 (en) High performance virtual converged enhanced ethernet with persistent state flow control
US8325768B2 (en) Interleaving data packets in a packet-based communication system
US8150996B2 (en) Method and apparatus for handling flow control for a data transfer
CN117880197A (zh) 汇聚以实现拥塞管理
US20240121294A1 (en) Rendezvous to enable congestion management
TW202236104A (zh) 整合計算元件之間的信息通訊
JP2023531137A (ja) オン・チップ・ルーター
US7840643B2 (en) System and method for movement of non-aligned data in network buffer model
US20190238485A1 (en) Transmitting credits between accounting channels
US11909643B2 (en) Efficient progression management in a tracker with multiple sources
JP3983926B2 (ja) マルチプロセッサコンピューティング環境におけるメッセージ受渡しのオーバランを防止する方法及びコンピュータシステム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication