CN113767369A - 监控和引导服务请求到加速组件 - Google Patents
监控和引导服务请求到加速组件 Download PDFInfo
- Publication number
- CN113767369A CN113767369A CN202080032579.3A CN202080032579A CN113767369A CN 113767369 A CN113767369 A CN 113767369A CN 202080032579 A CN202080032579 A CN 202080032579A CN 113767369 A CN113767369 A CN 113767369A
- Authority
- CN
- China
- Prior art keywords
- acceleration component
- acceleration
- value
- host
- component
- 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
- 230000001133 acceleration Effects 0.000 title claims abstract description 410
- 238000012544 monitoring process Methods 0.000 title abstract description 9
- 239000000872 buffer Substances 0.000 claims abstract description 75
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000012545 processing Methods 0.000 claims description 34
- 230000005540 biological transmission Effects 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000004891 communication Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 241001522296 Erithacus rubecula Species 0.000 description 5
- 230000036541 health Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 241000238367 Mya arenaria Species 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 3
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003862 health status Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000000547 structure data Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003090 exacerbative effect Effects 0.000 description 1
- 208000018721 fetal lung interstitial tumor Diseases 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供了用于监控和引导服务请求到加速组件的系统和方法。包括被配置为向加速组件集合中的任一加速组件发送与服务相对应的消息的主机的系统中的示例方法可以包括:跟踪与该加速组件集合中的每个加速组件相对应的输入缓冲器占用率。该方法还可以包括:在加速组件集合中的第一加速组件的第一输入缓冲器占用率满足预先确定的标准时,至少基于与第一加速组件相关联的第一输入缓冲器占用率,生成第一加速组件的第一惩罚值,并且将指示用以从主机接收消息的第二加速组件的可用性的第二值与第二动态更新值进行比较,以确定主机是否能够向第二加速组件发送下一个消息。
Description
背景技术
越来越多的用户访问经由位于数据中心内的计算、联网和存储资源所提供的应用。这些应用运行在分布式计算环境中,分布式计算环境有时也被称为云计算环境。数据中心内的计算机服务器经由网络互连,并且运行在计算机服务器上的应用因此可以经由网络而彼此通信。在大型数据中心内,计算机服务器之间的消息通信会引起网络拥塞,从而导致性能不佳。
因此,需要减轻这些问题中的至少一些问题的方法和系统。
发明内容
在一个示例中,本公开涉及一种系统中的方法,该系统包括被配置为向加速组件集合中的任一加速组件发送与服务相对应的消息的主机。该方法可以包括跟踪与加速组件集合中的每个加速组件相对应的输入缓冲器占用率。该方法还可以包括,在加速组件集合中的第一加速组件的第一输入缓冲器占用率满足预先确定的标准时,至少基于与第一加速组件相关联的第一输入缓冲器占用率,生成第一加速组件的第一惩罚值,并且将指示用以从主机接收消息的第二加速组件的可用性的第二值与第二动态更新值进行比较以确定主机是否能够向第二加速组件发送下一个消息。
在另一示例中,本公开涉及包括加速组件集合和主机的系统,该主机被配置为向加速组件集合中的任何个加速组件发送与服务相对应的消息。该系统还可以包括负载均衡器,该负载均衡器被配置为:(1)跟踪与加速组件集合中的每个加速组件相对应的输入缓冲器占用率,以及(2)在加速组件集合中的第一加速组件的第一输入缓冲器占用率满足预先确定的标准时,至少基于与第一加速组件相关联的第一输入缓冲器占用率,生成针对第一加速组件的第一惩罚值,并且将指示用以从主机接收消息的第二加速组件的可用性的第二值与第二动态更新值进行比较,以确定主机是否能够向第二加速组件发送下一个消息。
在又一示例中,本公开涉及包括主机的系统中的方法,该主机被配置为向加速组件集合中的任一加速组件发送与服务相对应的消息。该方法可以包括:跟踪与加速组件集合中的每一个相对应的输入缓冲器占用率和处理速率。该方法还可以包括:只要基于指示第一加速组件的可用性的第一值与第一动态更新值的比较,第一加速组件被确定处于健康状态,主机就发起到从加速组件集合之中选择的第一加速组件的第一消息的传输。该方法还可以包括,在第一加速组件的第一输入缓冲器占用率满足预先确定的标准时,至少基于与第一加速组件相关联的第一输入缓冲器占用率和第一处理速率,生成针对第一加速组件的第一惩罚值,并且将指示用以从主机接收消息的第二加速组件的可用性的第二值与第二动态更新值进行比较,以确定主机是否能够向第二加速组件发送下一个消息。
本发明内容被提供来以简化的形式介绍在下面的详细描述中进一步描述的概念的选择。本发明内容不旨在标识要求保护的主题的关键特征或必要特征,也不旨在被用来限制要求保护的主题的范围。
附图说明
本公开以示例的方式被图示并且不受附图限制,在附图中相似的附图标记指示相似的元件。附图中的元件是为了简单和清楚而被图示出并且不一定按比例绘制。
图1是根据一个示例的可以包括软件平面和加速平面的架构的图;
图2示出了根据一个示例的用于通过被配置为对服务进行加速的加速组件来传输消息的系统的图;
图3示出了根据一个示例的用于通过被配置为对服务进行加速的加速组件来传输消息的系统环境的图;
图4示出了根据一个示例的加速组件的图;
图5示出了根据一个示例的用于从主机传输服务请求的组件的布置;
图6示出了根据一个示例的负载均衡器的图;
图7示出了根据一个示例的包括负载均衡的系统;
图8示出了根据一个示例的用于负载均衡的方法的流程图;以及
图9示出了根据一个示例的用于负载均衡的另一方法的流程图。
具体实施方式
本公开中描述的示例涉及在可配置为对服务进行加速的加速组件之间提供消息管理的方法和系统。本公开的某些方面涉及对加速组件的服务请求的监控和引导。加速组件包括但不限于可配置(或被配置)为比运行在通用中央处理单元(CPU)上的软件更有效地执行与由例如数据中心提供的服务相对应的功能的硬件组件。加速组件可以包括现场可编程门阵列(FPGA)、图形处理单元(GPU)、专用集成电路(ASIC)、可擦除和/或复杂可编程逻辑器件(PLD)、可编程阵列逻辑(PAL)器件、通用阵列逻辑(GAL)器件和大规模并行处理器阵列(MPPA)器件。图像文件可以被用来配置或重新配置加速组件,诸如FPGA。图像文件中包含的信息可以被用来对加速组件的硬件组件(例如,FPGA的逻辑块和可重新配置的互连)进行编程以实现所期望的功能性。所期望的功能性可以被实现以支持可以经由计算、联网和存储资源的组合(诸如经由数据中心或其他用于递送服务的基础设施)所提供的任何服务。
所描述的各方面也可以在云计算环境中实现。云计算可以指用于实现对可配置计算资源的共享池的按需网络访问的模型。例如,可以在市场中采用云计算来提供对可配置计算资源的共享池的无处不在且方便的按需访问。可配置计算资源的共享池可以经由虚拟化而被快速配置并且以较低的管理工作量或服务提供商交互而被释放,然后相应地进行扩展。云计算模型可以由各种特性组成,诸如例如按需自助服务、广泛的网络访问、资源池、快速弹性、测量的服务等。云计算模型还可以公开各种服务模型,诸如例如软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”)。还可以使用不同的部署模型来部署云计算模型,诸如私有云、社区云、公共云、混合云等。
数据中心部署可以包括硬件加速平面和软件平面。硬件加速平面可以包括多个联网的加速组件(例如,FPGA)。软件平面可以包括多个联网的软件实现的主机组件(例如,中央处理单元(CPU))。硬件加速平面和软件平面之间可以共享网络基础设施。在一些环境中,软件实现的主机组件本地链接到对应的加速组件。加速组件可以经由网络协议而彼此通信。为了向经由数据中心而提供的服务的用户提供可靠的服务,可以需要任何通信机制来满足某些性能要求,包括可靠性。在某些示例中,本公开提供用于满足这种要求的轻量级传送层。在一个示例中,加速组件可以经由轻量级传送层(LTL)而彼此通信。
在主机上运行的应用可以向加速组件集合发送执行任务的请求。在完成该请求所要求的计算时,可以向应用发送响应。某些任务对实时性有严格的要求,因此对加速组件的处理时间强加了限制。该组中的每个加速组件彼此独立,但是可以执行相同的计算,因此从应用的角度来看是均匀的。但是,从硬件的角度来看,每个加速组件可以处于不同的状态,甚至可以具有不同的处理速度。这种不均匀的行为可以是由功率节流、硬件错误、某些节点过载或与加速组件相关联的硬件差异所引起的。针对时间关键型应用,这种不均匀的行为可以是一个问题。
用于评估时间关键型应用的一个度量是尾部时延,它可以指示针对所有请求的给定百分位数的处理单个请求所花费的最大时间。在理想场景中,为了保持低尾部时延,每个请求都可以被定向到可以在最短的时间内产生响应的节点。然而,在实践中,在分布式计算环境中,很难达到理想的结果。为了使任务得到执行,与特定服务相关联的软件可以在循环(round-robin)队列或某些其他类型的队列的开头挑选加速组件。接下来,可以向该加速组件发送消息。在软件可以包括对加速组件的一些监控以确保该软件不会将消息发送到停止服务的或不属于该组的加速组件的同时,有关加速组件的任何状态更新都会引发由网络、与加速组件的互连以及(多个)设备驱动程序引入的显著的时延。此外,如果在消息已经被发送到加速组件之后加速组件出现问题,则与服务相对应的软件在它从相关加速组件接收到故障消息的指示之前可以无法获悉该故障。例如,加速组件可以受到热节流限制,但与该服务相对应的软件可以直到它已经向该加速组件发送服务请求之后才意识到这一点。因此,在决定哪个加速组件应该接收下一个请求时,软件可以使用关于系统的陈旧信息。
与本公开相关联的某些示例涉及使用负载均衡器来监控和引导服务请求。用于负载均衡的示例硬件单元可以被设计为从处理节点(例如,加速组件)收集信息并且取决于其配置对状态变化做出反应。任何处理节点(例如,加速组件)都可以由负载均衡器基于指定时间收集的信息而被禁用并由特定事件启用。所有由负载均衡器监控并且在负载均衡器的控制下被定向到处理节点的请求都受负载均衡的限制。在一个示例中,可以通过检查请求的目标处理节点并且取决于目标节点的状态决定是否应该改变它来执行负载均衡。在负载均衡器改变目标处理节点的情况下,可以使用算法来选择替代处理节点。因此,当与服务相关联的软件为请求选择原始目的地时(例如,基于循环方案),负载均衡器可以在软件不知道的情况下换出目的地节点。以这种方式,可以透明地重新导向来自服务的请求。
图1示出了根据一个示例的可以包括软件平面104和加速平面106的架构100。软件平面104可以包括软件驱动的主机组件的汇集(collection)(每个由符号“S”标示),而加速平面可以包括加速组件的汇集(每个由符号“A”标示)。在该示例中,每个主机组件可以对应于使用一个或多个中央处理单元(CPU)执行机器可读指令的服务器计算机。在一个示例中,这些指令可以对应于服务,诸如文本/图像/视频搜索服务、翻译服务或可以被配置为向设备的用户提供有用结果的任何其他服务。每个CPU可以执行与服务的各种组件(例如,软件模块或库)相对应的指令。每个加速组件可以包括用于实现功能的硬件逻辑,诸如例如由数据中心提供的服务的部分。
加速平面106可以使用加速组件的异质或同质汇集来构造,包括不同类型的加速组件和/或具有不同能力的相同类型的加速组件。例如,加速平面106可以包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)、其他类型的可编程硬件逻辑器件等。加速平面106可以提供加速组件的可重构结构。
主机组件通常可以是可以通过使用其CPU硬件线程中的每一个来执行机器可读指令以执行操作的任何计算组件。加速组件可以使用若干并行逻辑元件来执行操作以执行计算任务。例如,FPGA可以包括若干门阵列,这些门阵列可以被配置为并行执行某些计算任务。因此,与软件驱动的主机组件相比,加速组件可以在更短的时间内执行一些操作。在架构100的上下文中,“加速”反映了其加速由主机组件执行的功能的潜力。
在一个示例中,架构100可以对应于包括大量服务器的数据中心环境。服务器可以对应于软件平面104中的主机组件。在另一示例中,架构100可以对应于企业系统。在又一示例中,架构100可以对应于使用至少一个主机组件的用户设备或器具,该主机组件能够访问两个或更多加速组件。实际上,取决于服务的要求,用于架构100的其他实现也是可能的。
网络120可以将软件平面104中的主机组件耦合到其他主机组件并且将加速平面106中的加速组件耦合到其他加速组件。在该示例中,主机组件可以使用网络120来彼此交互并且加速组件可以使用网络120来彼此交互。软件平面104中的主机组件之间的交互可以独立于加速平面106中的加速组件之间的交互。在该示例中,两个或更多加速组件可以相对于软件平面104中的主机组件以透明的方式进行通信,在主机组件的方向之外并且主机组件甚至没有“意识到”加速平面106中发生的特定交互。
架构100可以使用多种不同协议中的任何一种来促进通过网络120在加速组件之间的通信,并且可以使用多种不同协议中的任何一种来促进通过网络120在主机组件之间的通信。例如,架构100可以使用以太网协议来通过网络120传输互联网协议(IP)分组。在一种实现中,服务器中的每个本地主机组件被给予单个物理IP地址。同一服务器中的本地加速组件可以采取相同的IP地址。服务器可以通过不同的方式确定传入的分组是发往本地主机组件还是发往本地加速组件。例如,发往本地加速组件的分组可以被制定为具有特定端口的UDP分组;另一方面,主机定义的分组可以不会以这种方式来表述。在另一示例中,可以基于每个分组中的状态标志的值来区分属于加速平面106的分组和属于软件平面104的分组。在一个示例中,架构100可以被视为可以共享相同物理网络通信链路的两个逻辑网络(软件平面104和加速平面106)。与两个逻辑网络相关联的分组可以通过它们各自的业务类别而彼此区分。
在另一方面,架构100中的每个主机组件通过本地链路而被耦合到加速平面104中的至少一个加速组件。例如,主机组件和加速组件可以一起被布置并且作为架构100内的单个可服务单元(例如,服务器)而被维护。在这种布置中,服务器可以被称为“本地”主机组件以将它与与其他服务器相关联的其他主机组件进行区分。类似地,服务器的(多个)加速组件可以被称为(多个)“本地”加速组件以将它们与与其他服务器相关联的其他加速组件进行区分。
如架构100中所描绘的,主机组件108可以通过本地链路112(例如,快速外围组件互连(PCIe)链路)而被耦合到加速组件110。因此,从加速组件110的角度来看,主机组件108可以是本地主机组件,并且从主机组件108的角度来看,加速组件110可以是本地加速组件。主机组件108和加速组件110的本地链接可以形成服务器的一部分。更一般地,软件平面104中的主机组件可以通过共同表示为localA-to-localS耦合114的许多单独的链路而被本地耦合到加速平面106中的加速组件。在该示例中,主机组件可以与任何本地链接的加速组件直接交互。主机组件可以发起与本地链接的加速组件的通信,以引起多个加速组件之间的进一步通信。例如,主机组件可以发布对服务(或其部分)的请求,其中针对服务或其部分的功能性由加速平面106中的一组一个或多个加速组件组成。主机组件也可以与加速平面106中的其他加速组件(主机组件未本地链接到其上)间接地交互。例如,主机组件108可以经由加速组件110来与加速组件116间接通信。在该示例中,加速组件110经由网络(例如,网络120)的链路118来与加速组件116通信。
加速平面106中的加速组件可以有利地被用来在数据中心中稳健地加速更大规模的服务。通过使用低时延互连进行跨越多个加速组件的计算,可以将复杂数据中心服务的大部分映射到加速组件(例如FPGA)。加速组件也可以适当地被重新配置,以在不同时间提供不同的服务功能性。尽管图1示出了以某种方式布置的架构100的某个数目的组件,但是可以有更多或更少数目的不同布置的组件。此外,架构100的各种组件也可以使用其他技术来实现。
图2示出了根据一个示例的用于通过被配置为由对服务进行加速的加速组件来传输或重传消息的系统200的图。在一个示例中,系统200可以被实现为数据中心中的服务器机架。服务器204、206和208可以被包括在数据中心中的机架中。服务器204、206和208中的每个服务器可以被耦合到架顶(TOR)交换机210。其他机架,虽然未示出,但是可以具有类似的配置。服务器204还可以包括主机组件212,包括CPU 214、216等。主机组件212连同来自服务器206和208的主机组件可以被包括在软件平面104中。服务器204还可以包括加速组件218。加速组件218连同来自服务器206和208的加速组件可以被包括在加速平面106中。
加速组件218可以经由本地链路220(例如,PCIe链路)而被直接耦合到主机组件212。因此,加速组件218可以将主机组件212视为本地主机组件。加速组件218和主机组件212也可以通过网络接口控制器222(例如,被用来跨网络基础设施120进行通信)间接耦合。在该示例中,服务器204可以将表示服务功能性的图像加载到加速组件218上。
加速组件218也可以被耦合到TOR交换机210。因此,在系统200中,加速组件218可以表示主机组件212与数据中心中的其他组件(包括其他主机组件和其他加速组件)进行交互的路径。系统200允许加速组件218对从TOR交换机210接收(和/或被发送到)TOR交换机210的分组执行处理(例如,通过执行加密、压缩等),而不加重由主机组件212执行的基于CPU的操作。虽然图2示出了以某种方式布置的系统200的某个数目的组件,但是可以有更多或更少数目的不同布置的组件。此外,系统200的各种组件也可以使用其他技术来实现。
图3示出了根据一个示例的用于通过被配置为对服务进行加速的加速组件来传输或重传消息的系统环境300的图。在该示例中,IP路由可以被用于在TOR交换机(包括TOR交换机1 302、TOR交换机2 304和TOR交换机N 306)之间传输或接收消息。每个服务器或服务器组可以具有可以由网络管理员提供的单个“物理”IP地址。因此,在该示例中,服务器组1320、服务器组2 322和服务器组N 324各自可以包括服务器,其中它们中的每个可以具有“物理”IP地址。加速组件可以使用其服务器的物理IP作为其地址。为了在去往主机的IP分组和去往加速组件的分组之间进行区分,可以使用具有将加速组件指明为目的地的特定端口的UDP分组。加速组件可以使用与七层开放系统互连(OSI)模型相对应的层3功能性将消息传输到与不同TOR交换机相关联的选择的加速组件集合。层3功能性可以类似于由OSI模型的网络层所提供的功能性。在该示例中,加速组件可以将点对点消息传输到与相应TOR交换机相关联的其他相关加速组件中的每个加速组件。这些加速组件然后可以使用层2以太网广播分组来将数据发送到与TOR交换机相关联的所有加速组件。层2功能性可以类似于由OSI模型的数据链路层所提供的功能性。层2功能性可以包括媒体访问控制、流控制和错误检查。在一个示例中,该步骤将不需要来自将加速平面和软件平面互连的网络的任何广播支持。这可以有利地减轻对由路由器或其他网络基础设施提供的多播功能性的需要。这反过来又可以降低部署和管理加速组件的复杂性。此外,一般来说,较高级别的网络(例如,包括路由器和其他TOR交换机的网络)可能被超额订阅,这反过来可以降低可以用于使用较高网络进行通信的加速组件的带宽。相比之下,在该示例中,共享TOR交换机的加速组件可以有利地具有更高的带宽可供它们用于从一个加速组件到另一加速组件的任何消息传输。虽然图3示出了交换机和路由器的某种布置,但是也可以使用其他布置。此外,服务器可以与图3中所示的不同地进行归组。
图4示出了根据一个示例的加速组件400的图。加速组件400可以被包括在加速平面106中。被包括在加速组件400中的组件可以在加速组件400的硬件资源(例如,逻辑块和可编程互连)上实现。
加速组件400可以包括应用逻辑406、与第一资源集合相关联的软外壳404和与第二资源集合相关联的外壳402。与外壳402相关联的资源可以对应于在许多不同的应用场景中通常可以保持相同的较低级别的接口相关组件。与软外壳404相关联的资源可以跨至少一些不同的应用场景保持相同。应用逻辑406可以进一步被概念化为包括应用域(例如,“角色”)。应用域或角色可以表示散布在多个加速组件之上的组合服务中所包括的功能性的一部分。在加速组件集合中的每个加速组件处的角色可以被链接在一起,以创建为应用域提供服务加速的组。
应用域托管执行服务特定任务(诸如用于对文档进行排名、对数据进行加密、对数据进行压缩、促进计算机视觉、促进语音翻译、机器学习等的功能性的一部分)的应用逻辑406。与应用资源相比,与软外壳404相关联的资源通常不太受改变限制;而与软外壳404相关联的资源相比,与外壳402相关联的资源不太受改变限制(尽管改变(重新配置)加速组件400的任何组件是可能的)。
在操作中,在该示例中,应用逻辑406以与软件实现的应用与其底层操作系统资源交互的方式类似的方式来与外壳资源和软外壳资源交互。从应用开发的角度来看,通用外壳资源和软外壳资源的使用使开发人员不必针对每个服务重新创建这些通用组件。
首先参考外壳402,外壳资源可以包括用于将加速组件400耦合到网络接口控制器(经由NIC接口410)和本地架顶交换机(经由TOR接口412)的桥接器408。桥接器408还包括数据路径,其允许来自NIC或TOR的业务流入到加速组件400中,并且允许来自加速组件400的业务流出至NIC或TOR。在内部,桥接器408可以由对接收分组进行缓冲的各种FIFO(414、416)以及将分组路由到其预期目的地的各种选择器和仲裁逻辑组成。旁路控制组件418在被激活时可以控制桥接器408得在NIC和TOR之间传输分组而无需由加速组件400进一步处理。
存储器控制器420掌管加速组件400和本地存储器422(诸如DRAM存储器)之间的交互。作为其服务的一部分,存储器控制器420可以执行纠错。
主机接口424可以提供使得加速组件400能够与本地主机组件(未示出)交互的功能性。在一种实现中,主机接口424可以结合直接存储器访问(DMA)来使用快速外围组件互连(PCIe),以与本地主机组件交换信息。外部外壳还可以包括各种其他特征426,诸如时钟信号发生器、状态LED、纠错功能性等。
弹性路由器428可以被用于在加速组件400的各种内部组件之间以及在加速组件与外部实体之间(例如,经由传送组件430)路由消息。每个这样的端点可以与相应的端口相关联。例如,弹性路由器428耦合到存储器控制器420、主机接口424、应用逻辑406和传送组件430。
负载均衡器436可以耦合到主机接口424和弹性路由器428。负载均衡器436可以被设计为收集信息并且取决于其配置来对状态变化做出反应。尽管负载均衡器436被示为加速组件400的一部分,但是负载均衡器436可以是不同布置的一部分。
传送组件430可以制定用于传输到远程实体(诸如其他加速组件)的分组并且从远程实体(诸如其他加速组件)接收分组。在该示例中,3端口交换机432在被激活时接管在NIC和TOR之间以及在NIC或TOR和与加速组件400相关联的本地端口之间路由分组的功能。
3端口交换机432可以提供防止用于加速组件的分组被发送到主机系统上的特征。如果数据网络支持若干无损类别的业务,则3端口交换机432可以被配置为提供足够的支持来缓冲和暂停传入的无损流,以允许其将其自己的业务插入到网络中。为了支持这一点,3端口交换机432可以被配置为将无损业务类别(例如,远程直接存储器访问(RDMA))与有损(例如,TCP/IP)流类别进行区分。分组报头中的字段可以被用来标识分组属于哪个业务类别。配置存储器可以被用来存储与3端口交换机432相对应的任何配置文件或数据结构。
3端口交换机432可以具有连接到第一MAC的主机侧端口和连接到第二MAC的网络侧。第三本地端口可以向传送组件(例如,传送组件430)提供内部服务。在有一些限制的情况下,3端口交换机432通常可以作为网络交换机进行操作。
诊断记录器434可以在循环缓冲器中存储关于由路由器428、传送组件430和3端口交换机432执行的操作的信息。例如,信息可以包括有关分组的起源和目的地IP地址的数据、主机特定数据或时间戳。日志可以被存储为遥测系统(未示出)的一部分,以使得技术人员可以研究日志以诊断加速组件400中的故障或次优性能的原因。
加速平面106中可以包括多个加速组件,如加速组件400。加速组件可以使用不同的网络拓扑(而不是使用用于通信的网络120)来彼此通信。在一方面,加速组件彼此直接连接,诸如例如在二维环面中。尽管图4示出了以某种方式布置的加速组件400的特定数目的组件,但是可以存在更多或更少数目的不同布置的部件。此外,加速组件400的各种组件也可以使用其他技术来实现。
图5示出了根据一个示例的用于从主机接口508传输服务请求的组件的布置。根据一个示例,传送组件500(对应于图4的传送组件430的示例)耦合到3端口交换机502(对应于图4的3端口432的示例)和弹性路由器504。弹性路由器504可以耦合到负载均衡器506,负载均衡器506反过来又可以耦合到主机接口508。
在该示例中,负载均衡器506是硬件单元,其被配置为监控加速组中的加速组件并将与服务相关的请求引导至适当的加速组件。在此示例中,负载均衡器的主要目的之一是将传入请求定向到加速组件,该加速组件将在不违反由应用逻辑所指定的服务质量的情况下生成正确的响应。涉及负载均衡器506的附加细节关于图6来提供。
在一个示例中,与诸如搜索结果排名服务的服务相对应的应用逻辑(例如,图4的应用逻辑406)可以被划分并且映射到多个加速器组件的角色。如早先所述,应用逻辑可以被概念化为包括应用域(例如,“角色”)。应用域或角色可以表示散布在多个加速组件上的组合服务中包括的功能性的一部分。在加速组件集合中的每个加速组件的角色可以被链接在一起,以创建为应用域提供服务加速的组。每个应用域可以托管执行特定于服务的任务(诸如用于对文档进行排名、对数据进行加密、对数据进行压缩、促进计算机视觉、促进语音翻译、机器学习、提取特征等的功能性的一部分)的应用逻辑。
加速组件可以被归组在一起作为图的一部分。归组的加速组件不需要在物理上彼此接近;相反,它们可以与数据中心的不同部分相关联,并且仍然可以通过将它们链接为加速平面的一部分而被归组在一起。在一个示例中,该图可以具有特定的网络拓扑,这取决于与哪些TOR交换机相关联的哪些加速组件被耦合在一起来对服务进行加速。可以基于从服务的服务管理器接收到的配置信息来动态地创建网络拓扑。服务管理器可以是与服务相关联的更高级别的软件。在一个示例中,可以基于与将加速平面和软件平面互连的网络(例如,网络120)相关联的至少一个性能度量来动态调整网络拓扑,该软件平面包括被配置为执行与至少一个服务相对应的指令的主机组件。服务管理器可以使用遥测服务来监控网络性能。可以至少基于至少一个服务的要求、基本上实时地选择网络性能度量。至少一个网络性能度量可以包括时延、带宽或由与至少一个服务相对应的服务管理器或应用逻辑所指定的任何其他性能度量。
传送组件500可以被配置为充当网络上的自治节点。在一个实施例中,传送组件500可以被配置在可以实例化任意进程或执行单元的环境或外壳内。传送组件500的使用可以是有利的,因为应用逻辑和网络之间的接近性,以及诸如导航复杂的网络栈、中断处理和资源共享的基于主机的负担的去除。因此,使用加速组件和传送组件(诸如传送组件500)的应用或服务可能能够以更低的时延和更高的吞吐量进行通信。传送组件500本身可以是为其自身目的生成和消耗网络业务的代理。
传送组件500可以被用来实现与用于交换数据的机制或协议相关联的功能性,包括传输或重传消息。在该示例中,传送组件500可以包括传输逻辑510、接收逻辑512、软外壳514、连接管理逻辑516、配置存储器518、传输缓冲器520和接收缓冲器522。这些元件可以操作来在可以被包括在加速组件中的传送组件之间提供有效和可靠的通信。
在一个示例中,传送组件500可以被用来实现与轻量级传送层(LTL)相关联的功能性。与LTL的这个示例一致,传送组件500可以为LTL暴露两个主要接口:一个用于与3端口交换机502的通信(例如,本地网络接口,其然后可以连接到网络交换机,诸如TOR交换机),另一个用于与弹性路由器504的通信(例如,弹性路由器接口)。在该示例中,本地网络接口(local_*)可以包含用于Rx和Tx方向两者的NeworkStream、Ready和Valid(网络流、准备和有效)。在这个示例中,弹性路由器接口(router_*)可以暴露一个类似于FIFO的接口,其支持多个虚拟信道和基于信用的流控制方案。传送组件500可以经由用于运行时可控参数的配置数据结构体(struct)进行配置,并且可以输出状态数据结构(用于由主机或其他软外壳逻辑进行状态监控的结构体)。下面的表1示出了LTL顶部级别模块接口的示例。
表1
下面的表2示出了可以在编译时为LTL实例设置的示例静态参数。用于这些参数的值仅仅是示例,并且可以指定更多或更少的参数。
参数名称 | 配置值 |
MAX_VIRTUAL CHANNELS | 8 |
ER_PHITS_PER_FLIT | 4 |
MAX_ER_CREDITS | 256 |
EXTRA_SFQ_ENTRIES | 32 |
表2
因此,如以上表2中所指出的,这将为LTL实例配置MAX_VIRTUAL_CHANNELS+EXTRA_SFQ_ENTRIES MTU大小的缓冲器。弹性路由器信用(ER_CREDITS)可以保证每个虚拟信道(VC)至少有1个信用,以及动态计算的额外信用数目。传送组件500可以暴露设置多个运行时间值的配置输入端口。该配置端口可以被定义为LTLConfiguration结构体数据结构的一部分。下表(表3)列举了示例数据结构的字段:
表3
与表3中所示的字段相对应的功能性可以进行组合或进一步被分离。某些字段也可能位于由LTLConfiguration结构体数据结构中的地址或描述符字段索引的存储器中。类似地,特殊指令可以提供与表3中的任何一个字段相关的信息,或者它可以组合来自这些字段的信息。在不脱离本公开的范围的情况下,可以对LTLConfiguration结构体数据结构和格式进行其他改变。
作为LTL的一部分,在一个示例中,所有消息都可以被封装在IPv4/UDP帧内。下面的表4示出了用于将消息封装在这种帧中的示例分组格式。组列示出了分组结构中的各种字段组。描述列示出了与分组结构中的每个组相对应的字段。大小列以位为单位示出了每个字段的大小。值列提供字段的值,并且根据需要提供相关字段的示例描述。
表4
与表4中所示的字段相对应的功能性可以组合或进一步分离。某些字段也可以在由地址或分组中的描述符字段索引的存储器中。类似地,特殊指令可以提供与表4中的任何一个字段相关的信息,或者它可以组合来自这些字段的信息。在不脱离本公开的范围的情况下,可以对分组结构和格式进行其他改变。
连接管理逻辑516可以提供寄存器接口以在传送组件之间建立连接。连接管理逻辑516连同软件(例如,软外壳)可以在可以传输或接收数据之前设立连接。在一个示例中,有两个连接表可以控制连接的状态:发送连接表(SCT)和接收连接表(RCT)。这些表中的每个表可以被存储为配置存储器518的一部分或与传送组件500相关联的一些其他存储器。SCT中的每个条目,发送连接表条目(SCTE),可以存储分组的当前序列号和用来构建分组的其他连接状态,诸如目的地MAC地址。通过比较目的地IP地址和由弹性路由器504提供的虚拟信道字段,可以将从弹性路由器504抵达的请求与SCTE匹配。最多一个连接可以以目的地IP地址和VC对为目标。因此,元组{IP,VC}可以是表中的唯一键(数据库术语)。表中可能可以有两个条目具有相同的VC——例如,{IP:10.0.0.1,VC:0}和{IP:10.0.0.2,VC:0}。也可以可以有两个条目具有相同的IP地址和不同的VC:{IP:10.0.0.1,VC:0}和{IP:10.0.0.1,VC:1}。然而,不可以允许具有相同{IP,VC}对的两个条目。LTL支持的条目数目可以在编译时进行配置。
弹性路由器504可以以微片(Flit)为单位移动数据,其大小为128B(32B×4个周期)。消息可以由多个微片组成,由开始(start)和最后(last)标志分隔开(de-marked)。在一个示例中,在弹性路由器504针对给定的虚拟信道选择要从输入端口发送到输出端口的流时,整个消息必须在另一消息开始到达同一虚拟信道上之前被递送。连接管理逻辑516可以需要将来自弹性路由器504的消息打包成网络的最大传送单元(MTU)大小的片。这可以通过在每个虚拟信道上缓冲数据直到满足以下条件中的一个条件来完成:(1)在微片中看见最后一个标志或(2)MTU的数据价值(或适当减小大小以适应报头和对齐要求)。在这个实现中,用于LTL有效载荷的MTU可以是1408字节。满足要求中的一个要求时,传送组件500可以经由传输逻辑510尝试发送那个分组。可以通过消息到达传送组件500输入(来自弹性路由器504)上的哪个虚拟信道以及可以在来自弹性路由器504的消息的第一周期期间到达的消息报头的组合来确定分组目的地。这两个值可以被用于索引到发送连接表内,它可以提供针对连接的目的地IP地址和序列号。在该示例中,在给定连接上传输的每个分组的序列号应该比针对该连接的先前分组大一。唯一的例外可以是重传,这可以看到丢弃或未确认的分组利用与它最初被发送时相同的序列号来重传。在连接上发送的第一分组可以将序列号设置为1。因此,作为示例,对于从弹性路由器504到达传送组件500中的各种虚拟信道(VC)上的微片集合,可以使用缓冲器(例如,接收缓冲器522)对数据进行缓冲,直到消息结束或MTU的数据价值已被接收,然后可以输出一个分组。在这个示例中,LTL实例可以在缓冲数据后立即发送消息——即,它不会在发送下一个消息之前等待第一个消息的ACK。可能没有最大消息大小。LTL实例可能只是将消息分块成MTU大小的分组,并且在MTU的价值数据准备好后立即传输它们。类似地,在这个示例中,分组中的任何地方都没有“消息长度”字段——只有每个分组的有效载荷大小。传送组件500可以没有预先知晓消息将包含多少数据。优选地,与传送组件500相关联的LTL实例可以按顺序递送与给定SCT条目匹配的到达微片,甚至在面临丢弃和超时的情况下。与不同SCT条目匹配的微片可以没有排序保证。
在该示例中,传送组件500将为每个虚拟信道输出一个信用,然后为每个共享缓冲器输出一个信用。信用将在每个微片之后被返回——微片完成MTU缓冲器时除外。如果接收到最后一个标志或当微片包含消息的第MTU个字节时,可以发生这种情况。以这种方式消耗的信用可以由传送组件500保持直到分组被确认。
就与传送组件500相关联的LTL实例对分组的接收而言,在一个示例中,从网络到达的分组通过分组报头中的字段来与RCT条目(RCTE)匹配。每个RCTE存储最后的序列号和哪个虚拟信道(VC)将分组从传送组件500输出到弹性路由器504。RCT中的多个条目可以指向同一个输出虚拟信道。可以在编译时配置LTL支持的条目数。当分组从网络交换机到达本地端口时,传送组件500可以确定分组与接收连接表(RCT)中的哪个条目配对。如果不存在匹配的RCT表,则分组可以被丢弃。传送组件500可以检查序列号是否匹配来自RCT条目的期望值。如果序列号大于RCT条目,则分组可以被丢弃。如果序列号小于RCT条目期望,则可以生成确认(ACK)并且可以丢弃分组。如果匹配,传送组件500可以抓取RCT条目的虚拟信道字段。如果针对该虚拟信道的可用弹性路由器(ER)信用的数量足以覆盖分组大小,则传送组件500可以接受该分组。如果信用不足,则传送组件500可以丢弃分组。在分组被接受时,可以生成确认(ACK)并且可以递增RCT条目序列号。弹性路由器504可以使用分组报头来确定消息去往的最终端点。传送组件500可能需要足够的信用才能将整个分组的数据价值传送到弹性路由器504中以取得进展。为了帮助确保所有VC都可以取得进展,传送组件500可以需要弹性路由器504针对每个VC提供专用信用以处理每个VC的至少一个MTU的数据。在该示例中,可以假定没有共享信用。
SCT/RCT条目可以由软件写入。在一个示例中,软件可以保持连接设置的镜像。为了更新SCT或RCT条目,用户可以向register_wrdata_in端口写入,该端口可以挂钩到与应用逻辑相对应的软外壳或环境中的寄存器。下面的表5是可以被用于更新SCT或RCT中的条目的数据结构格式的示例。
表5
为了向SCT条目写入,可以将scte_not_rcte设置为1,将sCTI值设置为正被写入的SCT的索引值,然后适当地设置表5中的数据结构的其他字段。关于定时,register_write_in的值可以在至少一个周期内被切换为高电平。rCTI可以被设置为远程加速组件的RCT条目(在该示例中,rCTI被包括在发送到该加速组件的UDP分组中,并且这是查找另一端上的正确连接的方式)。IPAddr可以被设置为目的地加速组件的IP地址。MacAddr可以被设置为与加速组件在同一LAN分段上的主机的MAC地址或者远程主机的路由器的MAC地址。VirtualChannel可以通过从弹性路由器504到达的微片中对其进行查找来设置。为了向RCT条目写入,可以将scte_not_rcte设置为0,将rCTI值设置为正被写入的RCT的索引值,然后适当地设置表5中的数据结构的其他字段。rCTI可以被设置为发送加速组件的RCT条目。IPAddr可以被设置为发送加速组件的IP地址。出于向RCT写入的目的,可以忽略MacAddr。VirtualChannel可以被设置为消息将在其上被发送到弹性路由器504的信道。
作为示例,为了建立从节点A(例如,传送组件A(10.0.0.1))到节点B(例如,传送组件B(10.0.0.2))的单向链路,可以:(1)在传送组件A上创建SCTE{sCTI:1,rCTI:4,IP:10.0.0.2,VC:1,Mac:01-02-03-04-05-06};以及(2)在传送组件B上创建RCTE{rCTI:4,sCTI:1,IP:10.0.0.1,VC:2}。在该示例中,这将获取从传送组件A上的弹性路由器到达且DestIP==10.0.0.2和VC==1的消息,并将它们以分组形式发送到传送组件B。分组报头将rCTI字段设置为4(从SCT读取的rCTI值)。传送组件B将访问其RCT条目4,并且获悉该消息应在VC2上输出。它还将生成返回传送组件A的ACK。在此分组中,sCTI字段的值为1(根据从RCT中读取的sCTI值来填充)。
与传送组件500相关联的LTL实例可以缓冲所有发送分组,直到它从接收加速组件接收到确认(ACK)。如果针对连接的ACK未在可配置的超时时段内到达,则分组可以被重传。在这个示例中,从最早开始的所有未确认分组都将被重传。属于给定SCT的分组的丢弃可以不改变任何其他连接的行为——即,针对其他连接的分组可以不被重传。由于LTL实例可以要求可靠的通信信道,并且网络上偶尔会丢失分组,因此在一个示例中,可以使用基于超时的重试机制。如果一个分组在某个时间段内没有接收到确认,则它可以被重传。超时时段可以经由配置参数来设置。
传送组件500还可以提供拥塞控制。如果LTL实例将数据传输到无法以全线路速率吸收业务的接收方,则拥塞控制功能性可以允许它委婉地减少发送到目的地节点的分组的频率。每个LTL连接可以具有关联的分组间间隙状态,该状态控制流中的分组传输之间的最小周期数。在创建新连接时,IPG可以被设置为1,从而有效地允许任何可用带宽的充分使用。如果流上发生超时、ECN通知或NACK,则延迟可以乘以cfg.throttle_credit_multiple参数(参见表2)或增加cfg.throttle_credits_per_scrub参数(参见表2;取决于选择的是线性还是指数回退(backoff))。接收到的每个ACK可以通过cfg.throttle_credits_per_scrub参数(参见表2)减少IPG或除以cfg.throttle_credit_multiple参数(参见表2;取决于选择的是线性还是指数回归)。LTL实例不能在每个预先确定的时间段内增加一次流的IPG;例如,不超过每2微秒(在本示例中,这可以由cfg.throttle_scrub_delay参数控制(参见表2))。
当与传送组件500相关联的LTL实例成功接收分组时,它将生成确认(例如,具有设置了ACK标志位的分组)。确认(ACK)可以包括序列号,该序列号告诉发送方成功接收的最后一个分组以及发送方应将ACK信用记入的SCTI(该值可以被存储在ACK生成器的RCT中)。对于LTL的一个示例,可以使用以下规则来生成ACK:(1)如果RX序列号与期望的序列号(在RCT中)匹配,则用接收到的序列号生成ACK;(2)如果RX序列号小于期望的序列号,则分组被丢弃,但是生成具有接收到的最高序列号的ACK(这可以覆盖一个分组被发送两次(可能是因为超时)但随后被正确接收的情况);(3)如果RX序列号大于期望的序列号,则该分组被丢弃并且不生成ACK。如下面所解释的,在一个示例中,确认(ACK)也可以被用于向负载均衡器提供信息更新。
图6示出了根据一个示例的负载均衡器600。在该示例中,负载均衡器600可以维护其监控的加速组件的表。周期性地,负载均衡器600可以从加速组件接收信息更新。信息更新可以作为从主机(例如,早先描述的主机组件)传输的分组的预期接收方接收到的ACK的一部分而被接收。在一个示例中,每次更新可以包含自从上次更新以来加速组件处理的字节数、处理该字节数所花费的周期数、加速组件的处理队列中的字节数、以及加速组件标识符。负载均衡器600可以累积来自每个加速组件的更新总数、加速组件处理的字节数、以及处理指定字节数所花费的周期数。在该示例中,负载均衡器600可以计算与其监控的每个加速组件相关联的处理速率。此外,负载均衡器600可以跟踪每个加速组件的硬件即服务(HaaS)输入缓冲器占用率阈值。在本公开中使用术语HaaS并不意味着本公开仅限于在硬件即服务模型中使用。相反,该术语仅被用来指代与从服务接收输入请求的加速组件相关联的输入缓冲器。通过这样做,负载均衡器600可以在加速组件的健康方面跟踪它们,并且负载均衡器600可以将请求引导到健康的加速组件。
继续参考图6,负载均衡器600可以包括寄存器文件(RF)610、请求引导逻辑(RSL)620和节点监控逻辑(NML)630。在这个示例中,RF 610可以是包括配置和统计寄存器的模块,并且可以通过SOFTREG_*接口而被读取/写入。RSL 620可以包括被配置为基于可用加速组件组中的加速组件的状态来将分组引导到加速组件的逻辑。NML 630可以处理来自加速组件的信息更新并且跟踪它们的状态。下面的表6示出了示例RF 610中包括的一组示例配置和统计寄存器。第一列对应于寄存器的地址。针对每个寄存器的地址可以被指定为与RF610中的基址寄存器的偏移。第二列对应于寄存器的名称(名称);第三列对应访问参数(读取、写入或读取/写入)(访问);第四列对应默认值(默认值);而第五列提供了描述(描述)。
表6
仍然参考图6,RF 610可以通过LB_CTRL_*接口来控制RSL 620和NML 630。RF 610可以经由LB-STAT接口从RSL 620和NML 630接收信息。RF 610还可以保持具有加速组件地址的表格,以使得跟踪负载均衡器600所监控的每个分组。当前请求的LBID可以经由DST_TAG接口而被发送给RF 610,并且可以从具有加速组件地址的表中读取加速组件的对应地址。加速组件的地址可以经由LB_CTRL_*接口而被发送到RSL 620。
继续参考图6,NML 630可以跟踪与服务相关联的加速组件的状态。NML 630可以经由REMOTE_INFO_*接口从加速组件接收信息。当从加速组件接收到信息更新时,可以更新状态。加速组件可以是本地组件或远程加速组件。每个信息更新都包含有关加速组件的下一个信息。下面的表7示出了作为信息更新一部分的示例信息:
表7
NML 630可以使用LB_DST_TABLE(在下面的表8中示出示例)保持每个加速组件的下一个状态。
表8
除了上面表8中描述的状态之外,NML 630跟踪每个加速组件的NODE_ENABLETIME值。在该示例中,该值指示加速组件可用的时间(经由计数器跟踪)。在该示例中,使用循环方案为每个加速组件在每个周期中读取NODE_ENABLETIME值。读取值与自由运行计数器(FREE-RUNNING-COUNTER)进行比较,在该示例中,该计数器在每个周期递增。在读取的NODE_ENABLETIME值小于或等于自由运行计数器(FREE-RUNNING-COUNTER)值的那些情况下,NODE_HEALTH值被设置为健康状态;在相反的情况下,NODE_HEALTH值被设置为不健康状态。备选地,在例如输入缓冲器占用率低于低阈值时(例如,通过将以字节为单位的缓冲器占用率(例如,经由包含INFO_FIFOWORD的信息更新而接收到的)与节点的指定阈值(例如,表6的LTHRESHOP_REG寄存器中指示的阈值)进行比较所跟踪到的),NML 630可以重新标记节点。不健康状态可以由于加速组件的某些方面受到负面影响而导致的。例如,FPGA可能已进入错误状态,或者FPGA可能已重新启动,或者其功率可能已经被节流。虽然与服务相关联的软件可以发现FPGA的问题,但发现问题可能要花几分钟时间。相比之下,硬件实现的负载均衡器可以在短得多的时间内获取有关FPGA健康状况的状态;例如,FPGA确认(ACK或NACK)分组所花费的时间。此外,有利地,NML 630不需要感测这些状况,而是可以简单地依靠对某些值(例如,NODE_HEALTH)值的跟踪来确定加速组件的状态。最后,与服务相关联的软件可以正在向不同类型的加速组件(例如,具有不同FPGA或不同版本的FPGA的加速组件)发送与服务相对应的请求。这些加速组件中的一些可以比其他加速组件慢。由于与服务相关联的软件可能不知道这些差异,它可能会继续向较慢的加速组件发送请求,从而引起性能问题。但是,通过负载均衡器更快的反馈可有助于缓解这些性能问题。
在重置时,所有NODE_ENABLETIME值和FREE-RUNNING-COUNTER值可以被设置为零,这可以将所有加速组件设置为处于健康状态。由于NODE_ENABLETIME值是以循环方式(或其他一些基于公平性的方案)而被读取的,因此加速组件可以在比它被设置的时间更长的时间被启用。但是,在该示例中,由于加速组件的最大数目为8,因此这种差异并不显著。
在该示例中,NODE_ENABLETIME值针对每个传入的信息更新而被更新。当基于信息更新中的值的加速组件的禁用时段到期时,它被设置为当前的FREE-RUNNING-COUNTER值。当从加速组件接收到的信息更新数的值(例如,如表8的NODE_WINCNT所指示)达到用于平均其处理速率的来自每个加速组件的信息更新数的窗口大小时,(例如,在命名为WNDSIZE_REG的寄存器中进行跟踪),基于下述计算来更新加速组件的处理速率(例如,表8的NODE_RDRATE)。此外,表7中对应于NODE_WINCNT、NODE_RDBYTES、NODE_RDCYCLES的每个值都被归零。在一个示例中,加速组件的处理速率由8位NODE_RDRATE向量表示,其中每一位对应于下一个速率,如下面的表9中所示。尽管表9示出了位值和处理速率之间的某种对应关系,但是也可以使用其他映射来指定处理速率。
表9
在该示例中,来自加速组件的每个信息更新包含关于加速组件的HaaS入口缓冲器占用率的信息——INFO_FIFOWORD。当其值大于或等于HTHRESHVAL_REG寄存器所指定的值时,加速组件被分配惩罚权重,这有效地使其状态变成不健康。在一个示例中,惩罚是基于HTHRESHACT_REG寄存器中指定的模式和HTHRESHOP_REG寄存器中指定的值来计算的。
在一个示例中,使用以下等式来计算惩罚:惩罚=OCCUPANCY_WEIGHT+HTHRESHOP_REG。OCCUPANCY_WEIGHT是基于早先关于表6描述的HTHRESHACT_REG寄存器所指定的位值来计算的。下面的表10示出了HTHRESHACT_REG寄存器所指定的位值和PENALTY值的计算的一个示例。
表10
虽然表10示出了左列中的位值与惩罚值之间的某种对应关系,但是可以使用额外的软寄存器来改变该表中的参数。当HTHRESHACT_REG寄存器被设置为缩放模式(位5)时,OCCUPANCY_WEIGHT通过将加速组件的HaaS输入缓冲器占用率乘以缩放因子来计算。如下面的表11中所示,基于如上面的表9中所示的处理速率来设置缩放因子。
NODE_RDRATE的设置位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
缩放因子值 | 512 | 64 | 16 | 2 | 2 | 16 | 64 | 512 |
表11
缩放因子值也可以取决于平台上运行的应用或工作负载的类型而改变。因此,这些缩放因子仅是示例,它们可以以其他方式来进行配置。
在该示例中,来自主机的请求包含负载均衡器标识符(LBID)。RSL 620可以使用LBID来检索对应的加速组件的健康状态(例如,NODE_HEALTH)。在该示例中,来自主机的所有请求可以由负载均衡器600经由RTR_*_IN接口接收并且经由RTR_*_OUT接口发送到弹性路由器(例如,图5的ER 504)。ER 504可以基于请求中指定的地址(例如,IP地址)将请求路由到特定处理节点(例如,另一加速组件)。以这种方式,负载均衡器600可以通过指定弹性路由器应该将请求路由到的加速组件的IP地址来执行请求引导。指定的IP地址可以是主机提供的原始IP地址或者是由RSL 620挑选的另一不同的IP地址。下面的表12示出了被负载均衡器600用于引导来自主机的请求的示例接口。
名称 | 宽度 | 描述 |
RTR_VALID_IN | 1 | 信号在接口上存在有效phit时被置位 |
RTR_IF_IN.DATA | 256 | 数据phit |
RTR_IF_IN.FIRST | 1 | 当信号被置位(assert)时,它指示逻辑消息的第一个phit |
RTR_IF_IN.DST_IP | 32 | 消息的目的地IP |
表12
在该示例中,术语phit(物理微片)可以意味着在一个时钟周期内经由接口传送到负载均衡器600的数据单元。换句话说,术语phit可以指的是接口的物理宽度。如前面所指出,术语微片可以指的是多个单元的phit。在该示例中,负载均衡器600可以假设消息的第一数据phit包含从该phit的最低有效位开始的网络报头。下面示出的表13提供了报头结构的示例。
表13
在该示例中,当负载均衡器600接收到消息(例如,RTR_IF_IN.DATA)的有效(例如,由RTF_VALID_IN_指示)的第一phit(例如,由RTR_IF_IN.FIRST指示)时,负载均衡器600可以从网络报头(例如,具有表13中所示结构的网络报头)中提取LBID。基于NML 630向具有被提取LBID的处理节点提供的状态,负载均衡器600或者在针对输出路由器接口(RTR_IF_OUT)的网络报头中使用相同的LBID、RTR_IF_IN.DST_IP和DST_IP,或者它基于来自RSL 620的信息改变用于这些字段的值。在负载均衡器600改变这些字段的值时的情况下,处理请求被发送到不同的加速组件(例如,FPGA节点)而不是发送到由请求主机指定的原始目的地。
当指定的加速组件处于不健康状态并且存在其他可用的加速组件时,RSL 620有效地将请求转发到由全局循环方案或另一方案所指向的下一个加速组件。当没有其他加速组件可用时,在该示例中,那么请求将被发送到其原始目的地。此外,在一个示例中,向原始加速组件发送请求可以将原始加速组件的状态改变为健康状态。
图7示出了根据一个示例的包括负载均衡的系统700。系统700可以包括经由高速链路(例如,PCIe704)耦合到本地加速组件(AC)706且耦合到负载均衡器(LB)710的主机702。LB 710可以耦合到弹性路由器(ER)712。ER 712可以耦合到轻量级传送层(LTL)714,轻量级传送层可以耦合到网络720。网络720可以允许主机702不仅向本地AC 706、而且还向远程加速组件发送与服务相对应的请求消息。因此,网络720可以耦合到LTL 722,LTL 722可以耦合到ER 724。ER 724可以进一步耦合到加速组件(AC)726。网络720可以进一步耦合到LTL 732,LTL 732可以耦合到ER 734。ER 734可以进一步耦合到加速组件(AC)736。网络720可以进一步耦合到LTL 742,LTL 742可以耦合到ER 744。ER 744可以进一步耦合到加速组件(AC)746。在该示例中,主机702可以向AC 706、AC 726、AC 736和AC 746中的任何一个AC发送与服务(例如,排名服务)相对应的消息770。消息770可以被拆分成可以具有由网络720的最大传输单元(MTU)所确定的大小的分组。因此,在此示例中,在通过网络720的传输期间,消息770可以被拆分成MTU 772、MTU 774、MTU 776和MTU 778。每个LTL块可以向每个MTU添加关于负载均衡的元数据。每个加速组件可以包括用于存储从主机702接收的分组的输入缓冲器。因此,在该示例中,AC 726可以经由输入缓冲器725接收分组;AC 736可以经由输入缓冲器735接收分组;AC 746可以经由缓冲器745接收分组。虽然图7示出了以某种方式布置的一定数目的组件,但是系统700可以包括更多或更少的不同布置的组件。
继续参考图7,如早前所解释的,LB 710可以包括节点监控逻辑(例如,NML 630)和请求引导逻辑(例如,RSL 620)。NML 630可以使用寄存器文件(例如,RF 610)来跟踪主机可以向其发送消息的任何加速组件的输入缓冲器占用率。作为示例,NML 630可以跟踪与每个目的地加速组件相关联的LBID。NML 630因此可以具有用于目的地加速组件所经历的负载的代理(例如,输入缓冲器占用率度量)。来自加速组件的每个ACK或NACK可以将信息传达到NML 630。如早前所述,该信息可以涉及由加速组件处理的字节总数以及处理这些字节所花费的时间。这样,NML 630可以确定请求的处理速率。
图8示出了根据一个示例的用于在包括主机的系统中进行负载均衡的方法的流程图800,主机被配置为将与服务相对应的消息发送到加速组件集合中的任何一个。步骤810可以包括:跟踪与加速组件集合中的每一个相对应的输入缓冲器占用率。在一个示例中,负载均衡器600可以执行该步骤。因此,在此示例中,NML 630可以跟踪主机侧上的输入缓冲器占用率,如早前关于表6和相关描述所解释的。
步骤820可以包括:在加速组件集合中的第一加速组件的第一输入缓冲器占用率满足预定标准时,至少基于与第一加速组件相关联的第一输入缓冲器占用率来生成用于第一加速组件的第一惩罚值,并且将指示从主机接收消息的第二加速组件的可用性的第二值与第二动态更新值进行比较,以确定主机是否能够向第二加速组件发送下一个消息。作为该步骤的一部分,NML 630可以确定何时满足预先确定的标准。预先确定的标准可以包括确定INFO_FIFOWORD的值(例如,作为来自加速组件的信息更新的一部分由NML 630接收)何时大于或等于由HTHRESHVAL_REG寄存器所指定的值。NML 630可以通过基于HTHRESHACT_REG寄存器中指定的模式和HTHRESHOP_REG寄存器中指定的值计算惩罚值来生成惩罚值。例如,NML 630可以使用以下等式来生成惩罚值:惩罚=OCCUPANCY_WEIGHT+HTHRESHOP_REG。早前描述的表10提供了用于惩罚值的各种模式。NML 630可以将诸如NODE_ENABLETIME值的值与自由运行的计数器进行比较。在该示例中,使用循环方案用于每个加速组件在每个周期中读取NODE_ENABLETIME值。将读取值与自由运行计数器(FREE-RUNNING-COUNTER)进行比较,在该示例中,该计数器在每个周期递增。在确定加速组件处于接收请求的位置时,那么NML630可以将其传达给RSL 620。此外,如果需要,RSL 620还可以使用LBID来检索对应的加速组件的健康状态(例如,NODE_HEALTH)。RSL 620可以将请求转发到由全局循环方案或其他方案所指向的下一个加速组件。虽然图8示出了以特定顺序列出的特定数目的步骤,但是可以有更少或更多的步骤并且这些步骤可以以不同的顺序执行。
图9示出了根据一个示例的用于在包括主机的系统中进行负载均衡的流程图900,主机被配置为向加速组件集合中的任何一个发送与服务相对应的消息。步骤910可以包括:跟踪与加速组件集合中的每个加速组件相对应的输入缓冲器占用率和处理速率。在一个示例中,负载均衡器600可以执行该步骤。因此,在该示例中,NML 630可以跟踪主机侧上的输入缓冲器占用率,如早前关于表6和相关描述所解释的。
步骤920可以包括:只要基于指示第一加速组件的可用性的第一值与第一动态更新值的比较,第一加速组件被确定处于健康状态,主机就发起第一消息向从加速组件集合之中选择的第一加速组件的传输。NML 630可以将诸如NODE_ENABLETIME值的值与自由运行的计数器进行比较。在此该例中,使用循环方案为每个加速组件在每个周期中读取NODE_ENABLETIME值。将读取值与自由运行计数器(FREE-RUNNING-COUNTER)进行比较,在此示例中,该计数器在每个周期递增。在确定加速组件处于接收请求的位置时,那么NML 630可以将其传达到RSL 620,RSL 620可以将请求发送到加速组件。
步骤930可以包括:在加速组件集合中的第一加速组件的第一输入缓冲器占用率满足预先确定的标准时,至少基于与第一加速组件相关联的第一输入缓冲器占用率,生成针对第一加速组件的第一惩罚值,并且将指示从主机接收消息的第二加速组件的可用性的第二值与第二动态更新值进行比较,以确定主机是否能够向第二加速组件发送下一个消息。NML 630可以确定何时满足预定标准。预定标准可以包括确定INFO_FIFOWORD的值(例如,作为来自加速组件的信息更新的一部分由NML 630接收)何时大于或等于由HTHRESHVAL_REG寄存器所指定的值。NML 630可以通过基于HTHRESHACT_REG寄存器中指定的模式和HTHRESHOP_REG寄存器中指定的值计算惩罚值来生成惩罚值。例如,NML 630可以使用以下等式来生成惩罚值:惩罚=OCCUPANCY_WEIGHT+HTHRESHOP_REG。早前描述的表10提供了用于惩罚值的各种模式。NML 630可以将诸如NODE_ENABLETIME值的值与自由运行的计数器进行比较。在该示例中,使用循环方案为每个加速组件在每个周期中读取NODE_ENABLETIME值。将读取值与自由运行计数器(FREE-RUNNING-COUNTER)进行比较,在该示例中,该计数器在每个周期递增。确定加速组件处于接收请求的位置时,那么NML 630可以将其传达给RSL 620。此外,如果需要,RSL 620还可以使用LBID来检索对应的加速组件的健康状态(例如,NODE_HEALTH)。RSL 620可以将请求转发到由全局循环方案或其他方案所指向的下一个加速组件。虽然图9示出了以特定顺序列出的特定数目的步骤,但是可以有更少或更多的步骤并且这些步骤可以以不同的顺序执行。
总之,本公开涉及包括主机的系统中的方法,该主机被配置为向加速组件集合中的任一加速组件发送与服务相对应的消息。该方法可以包括:跟踪与加速组件集合中的每个加速组件相对应的输入缓冲器占用率。该方法还可以包括:在加速组件集合中的第一加速组件的第一输入缓冲器占用率满足预定标准时,至少基于与第一加速组件相关联的第一输入缓冲器占用率来生成第一加速组件的第一惩罚值,并且将指示从主机接收的消息的第二加速组件的可用性的第二值与第二动态更新值进行比较,以确定主机是否能够向第二加速组件发送下一个消息。
该方法还可以包括:如果指示第二加速组件的可用性的第二值大于第二动态更新值,那么将下一个消息从主机引导到第二加速组件。该方法还可以包括:如果指示第二加速组件的可用性的第二值小于或等于第二动态更新值,那么只要基于指示第三加速组件的可用性的第三值与第三动态更新值的比较,第三加速组件被确定处于健康状态,就将下一个消息从主机引导到从加速组件集合之中选择的第三加速组件。
第一动态更新值可以包括由负载均衡器管理的第一自由运行计数器的第一值,并且第二动态更新值可以包括由负载均衡器管理的第二自由运行计数器的第二值。该方法还可以包括将第一惩罚值周期性地递减指定值。
第一惩罚值可以包括等于与第一输入缓冲器占用率相关联的高占用率阈值的固定惩罚值。第一惩罚值可以包括固定惩罚值和以字节为单位的第一输入缓冲器占用率的总和。第一惩罚值可以包括以下一项:固定惩罚和乘以二的第一输入缓冲器占用率的总和、固定惩罚和乘以十六的第一输入缓冲器占用率的总和、固定惩罚和乘以六十四的第一输入缓冲器占用率的总和。
在另一个示例中,本公开涉及一种包括加速组件集合和主机的系统,该主机被配置为向加速组件集合中的任一加速组件发送与服务相对应的消息。该系统还可以包括负载均衡器,该负载均衡器被配置为:(1)跟踪与加速组件集合中的每个加速组件相对应的输入缓冲器占用率,以及(2)在加速组件集合中的第一加速组件的第一输入缓冲器占用率满足预定标准时,至少基于与第一加速组件相关联的第一输入缓冲器占用率,来生成第一加速组件的第一惩罚值,并且将指示从主机接收消息的第二加速组件的可用性的第二值与第二动态更新值进行比较,以确定主机是否能够向第二加速组件发送下一个消息。
负载均衡器还可以被配置为:如果指示第二加速组件的可用性的第二值大于第二动态更新值,那么将下一个消息从主机引导到第二加速组件。负载均衡器还可以被配置为:如果指示第二加速组件的可用性的第二值小于或等于第二动态更新值,那么只要基于指示第三加速组件的可用性的第三值与第三动态更新值的比较,第三加速组件被确定处于健康状态,就将下一个消息从主机引导到从加速组件集合之中选择的第三加速组件。
第一动态更新值可以包括由负载均衡器管理的第一自由运行计数器的第一值,并且第二动态更新值可以包括由负载均衡器管理的第二自由运行计数器的第二值。负载均衡器还可以被配置为周期性地将第一惩罚值递减指定值。第一惩罚值可以至少包括等于与第一输入缓冲器占用率相关联的高占用率阈值的固定惩罚值。
在又一个示例中,本公开涉及包括主机的系统中的方法,该主机被配置为向加速组件集合中的任一加速组件发送与服务相对应的消息。该方法可以包括:跟踪与加速组件集合中的每一个相对应的输入缓冲器占用率和处理速率。该方法还可以包括:只要基于指示第一加速组件的可用性的第一值与第一动态更新值的比较,第一加速组件被确定处于健康状态,主机就发起到从加速组件集合之中选择的第一加速组件的第一消息的传输。该方法还可以包括:在第一加速组件的第一输入缓冲器占用率满足预定标准时,至少基于与第一加速组件相关联的第一输入缓冲器占用率和第一处理速率来生成第一加速组件的第一惩罚值,并且将指示从主机接收消息的第二加速组件的可用性的第二值与第二动态更新值进行比较以确定主机是否能够向第二加速组件发送下一个消息。
该方法还可以包括:如果指示第二加速组件的可用性的第二值大于第二动态更新值,那么将下一个消息从主机引导到第二加速组件。该方法还可以包括:如果指示第二加速组件的可用性的第二值小于或等于第二动态更新值,那么只要基于指示第三加速组件的可用性的第三值与第三动态更新值的比较,第三加速组件被确定处于健康状态,就将下一个消息从主机引导到从加速组件集合之中选择的第三加速组件。
第一动态更新值可以包括由负载均衡器管理的第一自由运行计数器的第一值,并且第二动态更新值可以包括由负载均衡器管理的第二自由运行计数器的第二值。该方法还可以包括将第一惩罚值周期性地递减指定值。第一惩罚值可以包括等于与第一输入缓冲器占用率相关联的高占用率阈值的固定惩罚值。
应当理解,本文描绘的系统、方法、模块和组件仅仅是示例性的。备选地或另外地,本文所描述的功能性可以至少部分地由一个或多个硬件逻辑组件来执行。例如但不限于,可以使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统的系统(SOC)、复杂可编程逻辑器件(CPLD)等。在抽象但仍然明确的意义上,达成相同功能性的任何组件布置都有效地“关联”,以使得实现所期望的功能性。因此,本文中被组合以达成特定功能性的任何两个组件可以被视为彼此“关联”以使得达成所期望的功能性,而与架构或中间组件无关。同样,任何两个如此关联的组件也可以被视为彼此“可操作地连接”或“耦合”以达成所期望的功能性。
与本公开中描述的一些示例相关联的功能性还可以包括存储在非瞬态介质中的指令。本文中所使用的术语“非瞬态介质”是指存储使机器以特定方式操作的数据和/或指令的任何介质。示例性非瞬态介质包括非易失性介质和/或易失性介质。非易失性介质包括例如硬盘、固态驱动器、磁盘或带、光盘或带、闪存、EPROM、NVRAM、PRAM或其他这种介质,或这种介质的联网版本。易失性介质包括例如动态存储器诸如DRAM、SRAM、高速缓存或其他这种介质。非瞬态介质与传输介质不同,但可以与传输介质结合使用。传输介质被用于向机器传送数据和/或指令或从机器传送数据和/或指令。示例性传输介质包括同轴电缆、光纤电缆、铜线和无线介质,诸如无线电波。
此外,本领域技术人员将认识到,上述操作的功能性之间的界限仅仅是说明性的。多个操作的功能性可以被组合成单个操作,和/或单个操作的功能性可以分布在附加的操作中。此外,备选实施例可以包括特定操作的多个实例,并且操作的顺序在各种其他实施例中可以改变。
虽然本公开提供了具体示例,但是在不脱离如以下权利要求中阐述的本公开范围的情况下可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的,并且所有这些修改都旨在被包括在本公开的范围内。本文关于特定示例所描述的任何益处、优点或对问题的解决方案不应被解释为任何或所有权利要求的关键的、必需的或基本的特征或元素。
此外,如本文中所使用的,术语“一”或“一个”被定义为一个或多于一个。此外,在权利要求中诸如“至少一个”和“一个或多个”的引入性短语的使用不应被解释为暗示由不定冠词“一”或“一个”引入另一权利要求元素来将包含这种引入的权利要求元素的任何特定权利要求限制为仅包含一个这种元素的发明,即使同一权利要求包括引入性短语“一个或多个”或“至少一个”以及不定冠词诸如“一”或“一个”。这同样适用于定冠词的使用。
除非另有说明,否则诸如“第一”和“第二”的术语被用来在这种术语所描述的元素之间进行任意区分。因此,这些术语不一定旨在指示这种元素的时间或其他优先级。
Claims (15)
1.一种在包括主机的系统中的方法,所述主机被配置为向加速组件集合中的任一加速组件发送与服务相对应的消息,所述方法包括:
跟踪与所述加速组件集合中的每个加速组件相对应的输入缓冲器占用率;
在所述加速组件集合中的第一加速组件的第一输入缓冲器占用率满足预先确定的标准时,至少基于与所述第一加速组件相关联的所述第一输入缓冲器占用率,生成针对所述第一加速组件的第一惩罚值,并且将指示用以从所述主机接收消息的第二加速组件的可用性的第二值与第二动态更新值进行比较,以确定所述主机是否能够向所述第二加速组件发送下一个消息。
2.根据权利要求1所述的方法,还包括:如果指示所述第二加速组件的所述可用性的所述第二值大于所述第二动态更新值,那么将所述下一个消息从所述主机引导到所述第二加速组件。
3.根据权利要求1所述的方法,还包括:如果指示所述第二加速组件的所述可用性的所述第二值小于或等于所述第二动态更新值,那么只要基于指示第三加速组件的可用性的第三值与第三动态更新值的比较,所述第三加速组件被确定处于健康状态,就将所述下一个消息从所述主机引导到从所述加速组件集合之中选择的所述第三加速组件。
4.根据权利要求1所述的方法,其中所述第一动态更新值包括由负载均衡器管理的第一自由运行计数器的第一值,并且其中所述第二动态更新值包括由所述负载均衡器管理的第二自由运行计数器的第二值。
5.根据权利要求1所述的方法,还包括:将所述第一惩罚值周期性地递减指定值。
6.根据权利要求1所述的方法,其中所述第一惩罚值包括等于与所述第一输入缓冲器占用率相关联的高占用率阈值的固定惩罚值。
7.根据权利要求1所述的方法,其中所述第一惩罚值包括以字节为单位的固定惩罚值与所述第一输入缓冲器占用率的总和。
8.根据权利要求1所述的方法,其中所述第一惩罚值包括以下一项:所述固定惩罚和乘以二的所述第一输入缓冲器占用率的总和、所述固定惩罚和乘以十六的所述第一输入缓冲器占用率的总和、所述固定惩罚和乘以六十四的所述第一输入缓冲器占用率的总和。
9.一种系统,包括:
加速组件集合;
主机,所述主机被配置为向所述加速组件集合中的任一加速组件发送与服务相对应的消息;以及
负载均衡器,所述负载均衡器被配置为:(1)跟踪与所述加速组件集合中的每个加速组件相对应的输入缓冲器占用率,(2)在所述加速组件集合中的第一加速组件的第一输入缓冲器占用率满足预先确定的标准时,至少基于与所述第一加速组件相关联的所述第一输入缓冲器占用率,生成针对所述第一加速组件的第一惩罚值,并且将指示用以从所述主机接收消息的第二加速组件的可用性的第二值与第二动态更新值进行比较,以确定所述主机是否能够向所述第二加速组件发送下一个消息。
10.根据权利要求9所述的系统,其中所述负载均衡器还被配置为:如果指示所述第二加速组件的所述可用性的所述第二值大于所述第二动态更新值,那么将所述下一个消息从所述主机引导到所述第二加速组件。
11.根据权利要求9所述的系统,其中所述负载均衡器还被配置为:如果指示所述第二加速组件的可用性的所述第二值小于或等于所述第二动态更新值,那么只要基于指示第三加速组件的可用性的第三值与第三动态更新值的比较,所述第三加速组件被确定处于健康状态,就将所述下一个消息从所述主机引导到从所述加速组件集合之中选择的所述第三加速组件。
12.根据权利要求9所述的系统,其中所述第一动态更新值包括由负载均衡器管理的第一自由运行计数器的第一值,并且其中所述第二动态更新值包括由所述负载均衡器管理的第二自由运行计数器的第二值。
13.根据权利要求9所述的系统,其中所述负载均衡器还被配置为周期性地将所述第一惩罚值递减指定值。
14.根据权利要求9所述的系统,其中所述第一惩罚值至少包括等于与所述第一输入缓冲器占用率相关联的高占用率阈值的固定惩罚值。
15.一种在包括主机的系统中的方法,所述主机被配置为向加速组件集合中的任一加速组件发送与服务相对应的消息,所述方法包括:
跟踪与所述加速组件集合中的每个加速组件相对应的输入缓冲器占用率和处理速率;
只要基于指示所述第一加速组件的可用性的第一值与第一动态更新值的比较,所述第一加速组件被确定处于健康状态,所述主机就发起到从所述加速组件集合之中选择的第一加速组件的第一消息的传输;以及
在所述第一加速组件的第一输入缓冲器占用率满足预先确定的标准时,至少基于与所述第一加速组件相关联的所述第一输入缓冲器占用率和所述第一处理速率,生成针对所述第一加速组件的第一惩罚值,并且将指示用以从所述主机接收消息的第二加速组件的可用性的第二值与第二动态更新值进行比较,以确定所述主机是否能够向所述第二加速组件发送下一个消息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/398,512 US10922250B2 (en) | 2019-04-30 | 2019-04-30 | Monitoring and steering service requests to acceleration components |
US16/398,512 | 2019-04-30 | ||
PCT/US2020/026458 WO2020222972A1 (en) | 2019-04-30 | 2020-04-02 | Monitoring and steering service requests to acceleration components |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113767369A true CN113767369A (zh) | 2021-12-07 |
Family
ID=70476366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080032579.3A Pending CN113767369A (zh) | 2019-04-30 | 2020-04-02 | 监控和引导服务请求到加速组件 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10922250B2 (zh) |
CN (1) | CN113767369A (zh) |
WO (1) | WO2020222972A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12034633B2 (en) | 2019-05-23 | 2024-07-09 | Hewlett Packard Enterprise Development Lp | System and method for facilitating tracer packets in a data-driven intelligent network |
US11675599B2 (en) * | 2020-08-04 | 2023-06-13 | Dell Products L.P. | Systems and methods for managing system rollup of accelerator health |
CN114520711B (zh) * | 2020-11-19 | 2024-05-03 | 迈络思科技有限公司 | 数据包的选择性重传 |
US11386026B1 (en) | 2021-02-09 | 2022-07-12 | Microsoft Technology Licensing, Llc | Shell PCIe bridge and shared-link-interface services in a PCIe system |
US20220377006A1 (en) * | 2021-05-14 | 2022-11-24 | The Regents Of The University Of California | Techniques for safe acyclic routing in a communications network |
US12063163B2 (en) | 2021-12-16 | 2024-08-13 | Microsoft Technology Licensing, Llc | Sending and receiving messages including training data using a multi-path packet spraying protocol |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320151A1 (en) * | 2002-10-30 | 2008-12-25 | Riverbed Technology, Inc. | Transaction accelerator for client-server communications systems |
US20110320651A1 (en) * | 2010-06-24 | 2011-12-29 | Arm Limited | Buffering of a data stream |
US20160094614A1 (en) * | 2014-09-30 | 2016-03-31 | Qualcomm Incorporated | Systems and methods for user agent signaling request acceleration by transport accelerator |
US20160308649A1 (en) * | 2015-04-17 | 2016-10-20 | Microsoft Technology Licensing, Llc | Providing Services in a System having a Hardware Acceleration Plane and a Software Plane |
US20160379109A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
US20170364461A1 (en) * | 2016-06-20 | 2017-12-21 | Arm Limited | Transferring data between memory system and buffer of a master device |
US20180191609A1 (en) * | 2017-01-02 | 2018-07-05 | Microsoft Technology Licensing, Llc | Transmission of messages by acceleration components configured to accelerate a service |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6092115A (en) * | 1997-02-07 | 2000-07-18 | Lucent Technologies Inc. | Method for supporting per-connection queuing for feedback-controlled traffic |
US6657954B1 (en) * | 1999-03-31 | 2003-12-02 | International Business Machines Corporation | Adapting receiver thresholds to improve rate-based flow control |
US20020087720A1 (en) * | 2000-12-28 | 2002-07-04 | Davis Arlin R. | System and method for communications management and control over an unreliable communications network |
US6975593B2 (en) * | 2001-04-03 | 2005-12-13 | Sun Microsystems, Inc. | Method for triggering flow control packets |
US7072299B2 (en) * | 2001-08-20 | 2006-07-04 | International Business Machines Corporation | Credit-based receiver using selected transmit rates and storage thresholds for preventing under flow and over flow-methods, apparatus and program products |
US7243354B1 (en) * | 2002-04-08 | 2007-07-10 | 3Com Corporation | System and method for efficiently processing information in a multithread environment |
US7274660B2 (en) * | 2002-08-15 | 2007-09-25 | Motorola, Inc. | Method of flow control |
US7257080B2 (en) * | 2002-12-09 | 2007-08-14 | Lsi Corporation | Dynamic traffic-based packet analysis for flow control |
US7379422B2 (en) * | 2002-12-20 | 2008-05-27 | Lsi Logic Corporation | Flow control enhancement |
US20060114828A1 (en) * | 2004-12-01 | 2006-06-01 | Silicon Integrated System Corp. | Data transmission ports with flow controlling unit and method for performing the same |
US20080276029A1 (en) * | 2007-05-03 | 2008-11-06 | Haraden Ryan S | Method and System for Fast Flow Control |
US9154452B2 (en) * | 2012-03-29 | 2015-10-06 | Alcatel Lucent | Methods and apparatuses for adapting buffer capacity at routers |
US20140325524A1 (en) | 2013-04-25 | 2014-10-30 | Hewlett-Packard Development Company, L.P. | Multilevel load balancing |
US10320677B2 (en) | 2017-01-02 | 2019-06-11 | Microsoft Technology Licensing, Llc | Flow control and congestion management for acceleration components configured to accelerate a service |
US10425472B2 (en) | 2017-01-17 | 2019-09-24 | Microsoft Technology Licensing, Llc | Hardware implemented load balancing |
-
2019
- 2019-04-30 US US16/398,512 patent/US10922250B2/en active Active
-
2020
- 2020-04-02 WO PCT/US2020/026458 patent/WO2020222972A1/en active Application Filing
- 2020-04-02 CN CN202080032579.3A patent/CN113767369A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320151A1 (en) * | 2002-10-30 | 2008-12-25 | Riverbed Technology, Inc. | Transaction accelerator for client-server communications systems |
US20110320651A1 (en) * | 2010-06-24 | 2011-12-29 | Arm Limited | Buffering of a data stream |
US20160094614A1 (en) * | 2014-09-30 | 2016-03-31 | Qualcomm Incorporated | Systems and methods for user agent signaling request acceleration by transport accelerator |
US20160308649A1 (en) * | 2015-04-17 | 2016-10-20 | Microsoft Technology Licensing, Llc | Providing Services in a System having a Hardware Acceleration Plane and a Software Plane |
US20160379109A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
US20170364461A1 (en) * | 2016-06-20 | 2017-12-21 | Arm Limited | Transferring data between memory system and buffer of a master device |
US20180191609A1 (en) * | 2017-01-02 | 2018-07-05 | Microsoft Technology Licensing, Llc | Transmission of messages by acceleration components configured to accelerate a service |
Also Published As
Publication number | Publication date |
---|---|
WO2020222972A1 (en) | 2020-11-05 |
US20200349098A1 (en) | 2020-11-05 |
US10922250B2 (en) | 2021-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10791054B2 (en) | Flow control and congestion management for acceleration components configured to accelerate a service | |
CN113767369A (zh) | 监控和引导服务请求到加速组件 | |
US20240195740A1 (en) | Receiver-based precision congestion control | |
EP2928136B1 (en) | Host network accelerator for data center overlay network | |
JP5828966B2 (ja) | Pcieスイッチング・ネットワークにおけるパケット伝送を実現する方法、装置、システム、及び記憶媒体 | |
US7502884B1 (en) | Resource virtualization switch | |
US9727501B2 (en) | SAN fabric online path diagnostics | |
US20040030766A1 (en) | Method and apparatus for switch fabric configuration | |
CN110121868B (zh) | 通过被配置为加速服务的加速组件的消息传输 | |
US20090080428A1 (en) | System and method for scalable switch fabric for computer network | |
US20030202520A1 (en) | Scalable switch fabric system and apparatus for computer networks | |
US20030097481A1 (en) | Method and system for performing packet integrity operations using a data movement engine | |
US20030202510A1 (en) | System and method for scalable switch fabric for computer network | |
US20020107903A1 (en) | Methods and systems for the order serialization of information in a network processing environment | |
US20020107989A1 (en) | Network endpoint system with accelerated data path | |
US20060184949A1 (en) | Methods, systems, and storage mediums for timing work requests and completion processing | |
Alvarez et al. | Specializing the network for scatter-gather workloads | |
US8976667B1 (en) | Method and system for programmable delay before transmission pausing | |
US8055818B2 (en) | Low latency queue pairs for I/O adapters | |
US20230208776A1 (en) | On chip router | |
US9154569B1 (en) | Method and system for buffer management | |
US20230359582A1 (en) | In-network collective operations | |
US20230208913A1 (en) | In-order streaming in-network computation | |
US20230403233A1 (en) | Congestion notification in a multi-queue environment | |
US20240205143A1 (en) | Management of packet transmission and responses |
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 |