CN107925593B - 用于聚合消息处理的计算节点、方法、设备和可读介质 - Google Patents
用于聚合消息处理的计算节点、方法、设备和可读介质 Download PDFInfo
- Publication number
- CN107925593B CN107925593B CN201680048798.4A CN201680048798A CN107925593B CN 107925593 B CN107925593 B CN 107925593B CN 201680048798 A CN201680048798 A CN 201680048798A CN 107925593 B CN107925593 B CN 107925593B
- Authority
- CN
- China
- Prior art keywords
- computing node
- message
- event
- initiator
- node
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/41—Flow control; Congestion control by acting on aggregated flows or links
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
用于基于聚合的消息处理的技术包括多个计算节点通过网络进行通信。计算节点从远程计算节点接收消息,响应于接收消息而使事件计数器递增,响应于使计数器递增来确定事件触发器是否被满足,并且如果事件触发器被满足而将完成事件写入到事件队列。计算节点的应用针对完成事件来监视事件队列。该应用可以由计算节点的处理器核心执行,并且其他操作可以由计算节点的主机结构接口来执行。计算节点可以是目标节点并且对从发起者节点接收到的单端消息进行计数,或者计算节点可以是发起者节点并且对从目标节点接收的确认消息进行计数。描述和要求保护其他实施例。
Description
相关美国专利申请的交叉引用
本申请要求2015年9月23日提交的题为“TECHNOLOGIES FOR AGGREGATION-BASEDMESSAGE SYNCHRONIZATION”的序号为第 14/862,854的美国专利申请的优先权。
关于联邦资助研究的声明
本发明是根据国防部授予的合同号H98230B-13-D-0124在政府的支持下完成的。政府对本发明有一定的权利。
背景技术
包括高性能计算系统在内的许多分布式计算系统通过在联网的计算节点之间传递消息来进行通信。通常,目标节点的处理器核心必须确定消息已经到达。对于发送小型消息的高速的系统,每个消息的开销可能会降低消息处理速率。为了减少每个消息的开销,典型的消息传送解决方案可以对事件进行计数(例如,发送的消息或接收到的确认的数量)。某些系统可能使用联网硬件来对事件计数,这可能会减少或消除每个消息的软件开销。例如,某些系统可能支持硬件事件计数器。事件计数器可以被理论上存储在存储器中,但实际上是可高速缓存的,使得计数器可以被目标节点快速更新,而不需要完整的往返存储器。
处理器核心可轮询计数器的值以确定计数器值何时已经改变。但是,由处理器核心对事件计数器的轮询可能导致事件计数器的高速缓存行在每次处理器尝试读取事件计数器时被无效(或降级为共享状态)。当下一条消息到达时,计数器增量可能会延迟,而联网硬件重新获取处于可写状态的事件计数器的高速缓存行。因此,在一些系统中,事件计数器上的软件轮询可能导致高速缓存行在联网硬件和处理器高速缓存之间“弹跳”,这可能降低消息处理速率。某些系统可能会降低处理器核心轮询速率,使高速缓存行在较长的时间内保持可在联网硬件高速缓存中写入。降低轮询速率可以允许联网硬件以高速率接收消息,但是可能要求在每个核心轮询事件之间相对较长的延迟。
附图说明
本文描述的概念在附图中以示例而非限制的方式示出。为了示出的简单和清楚,图中所示的元件不一定按比例绘制。在认为适当的情况下,附图标记在图中重复以指示相对应或类似的元件。
图1是用于基于聚合的消息同步的系统的至少一个实施例的简化的框图;
图2是示出了可以由图1的系统执行的基于聚合的消息同步技术的简化的交互图;
图3是可以由图1的系统的计算节点建立的环境的至少一个实施例的简化的框图;
图4是可以由图1和图3的系统的计算节点执行的用于发起者节点消息处理的方法的至少一个实施例的简化流程图;
图5是示出了可以由图1和图3的系统使用的用于基于聚合的消息同步机制的示意图;以及
图6是可以由图1和图3的系统的计算节点执行的用于目标节点消息处理的方法的至少一个实施例的简化的流程图。
具体实施方式
虽然本公开的概念易于进行各种修改和替代形式,但是其具体实施例已经在附图中通过示例的方式示出,并且将在本文中进行详细描述。然而,应当理解,不意图将本公开的概念限制为所公开的特定形式,而是相反,意图是覆盖与本公开和所附权利要求一致的所有修改方案、等同方案和替代方案。
说明书中对“一个实施例”,“实施例”,“示出性实施例”等的提及表示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可以或不必包括该特定的特征、结构或特性。此外,这样的短语不一定指代同一实施例。此外,当结合实施例描述特定特征、结构或特性时,认为结合无论是否明确描述的其他实施例来实现这样的特征、结构或特性在本领域技术人员的知识内。此外,应当意识到,列表中以“A,B和C中的至少一个”的形式包括的项目可以表示(A);(B);(C):(A和B);(A和C); (B和C);或(A,B和C)。类似地,以“A,B或C中的至少一个”的形式列出的项目可以是(A);(B);(C):(A和B);(A和C);(B和C);或(A,B和C)。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合实现。所公开的实施例还可以被实现为由一个或多个暂时性或非暂时性机器可读(例如,计算机可读)存储介质承载或在其上存储的指令,所述指令可由一个或多个处理器读取和执行。机器可读存储介质可以被实施为用于存储或发送以机器可读的形式的信息的任何存储设备、机构或其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。
在附图中,可以以具体的布置和/或顺序示出一些结构或方法特征。然而,应当意识到,可能不需要这种具体的布置和/或排序。相反,在一些实施例中,这些特征可以以与示出性图中所示的不同的方式和/或顺序进行布置。另外,在特定附图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中可以不包括这些特征或者可以将其与其它特征组合。
现在参考图1,在示出性实施例中,用于基于聚合的消息同步的系统 100包括通过网络104进行通信的多个计算节点102。所示的系统100包括两个计算节点102a、102b;然而,应当理解,系统100可以包括更多的计算节点102。在使用中,如下面更详细描述的,发起者计算节点102a将多个单端存储器访问消息(例如,获取消息、放置消息、原子操作或其他消息)发送到目标计算节点102b。这些消息可能很小,可能会以较高的速率发送。在接收到每个消息之后,目标计算节点102b将确认消息(ACK)发送回发起者节点102a。每个计算节点102维护响应于接收到消息(例如,单端消息或确认消息)而递增的事件计数器。当事件触发器基于事件计数器的值被满足时,计算节点102生成可由计算节点102的应用消费的事件。如在下面进一步描述的,事件计数器可以递增,并且事件触发器可以由计算节点102的专用、高性能网络硬件(例如主机结构接口)评估和触发。
现在参考图2,交互图200示出了可以由系统100执行的用于基于聚合的消息同步的技术。如图所示,发起者计算节点102a将一系列单端消息 MSG发送到目标计算节点102b。每个MSG由发起者计算节点102a的处理器核心122生成并由目标计算节点102b的主机结构接口124接收。响应于每个MSG,目标计算节点102b的主机结构接口124发送由发起者计算节点102a的主机结构接口124接收到的确认消息ACK。发起者计算节点102a 的主机结构接口124在接收到每个ACK之后使事件计数器递增,并且当达到预定义的触发值时,主机结构接口124生成由处理器核心122消耗的事件。在示出性实施例中,触发值是三个ACK;然而,触发值可以由处理器核心122设置为不同的值。另外,如下所述,处理器核心122可以使用任何适当的技术来监视事件,所述技术包括轮询存储器中的事件队列。
类似地,目标计算节点102b的主机结构接口124在接收到每个MSG 之后使事件计数器递增,并且当达到预定义的触发值时,主机结构接口124 生成由处理器核心122消耗的事件。在示出性实施例中,触发值是三个MSG,然而触发器可以由处理器核心122设置为不同的值。虽然被示出为分离的计算节点102a,102b,但应当理解,单个计算节点102可以执行发起者节点和目标节点功能。另外,计算节点102的发起者节点功能和目标节点功能二者可以使用相同的事件队列和/或事件计数器。
因此,系统100可以在没有软件轮询存储器事件计数器的情况下处理消息,这可以通过防止主机结构接口与处理器高速缓存之间的高速缓存行弹跳并且通过防止其他开销来提高性能。另外,系统100可以允许软件轮询事件队列,而不用调节或以其他方式人为地减少轮询速率,这可以减少在处理器核心122可以处理消息之前的延时或其他延迟。因此,系统100 可以通过减少不合需要的延迟工作并避免级联工作延迟(例如避免然后用于实现进一步通信和进一步工作的结果的延迟)来提高整体进度的速度。另外,通过减少延迟,系统100可以减少延迟的资源重用。消息通常使用临时存储或其他资源,但来自第一消息的资源不能被重新用于第二消息,直到来自第一消息的所有需求被满足并且资源被释放。重复使用的延迟可能会使得消息传送耗尽存储器或其他资源,从而延迟消息传送,甚至是完成的工作已准备好进行消息传送,并且否则可能会继续进行时。系统100 还可以支持硬件卸载以消除每个消息处理开销,同时仍然使得快速缓冲器重用和计算-通信重叠。
除了潜在的性能改进之外,在一些实施例中,将事件聚合卸载到联网硬件可以允许计算节点102使一个或多个处理器核心进入休眠状态,这可以改善功耗。因此,系统100可以用来高效地实现一个或多个消息同步操作(例如,SHMEM消息传送系统的shmem_quiet()函数),而不对事件计数器进行轮询。另外,系统100可用于提供更高效的技术以等待事件计数器,例如结合如James Dinan等人的“Reducing Synchronization Overhead ThroughBundled Communication”,OpenSHMEM&Related Techs.Experiences, Implementations&Tools,163-77(2014)中所述的SHMEM计数置入提议。系统100还可以用于结合如在JamesDinan&Mario Flajslik的“Contexts:A Mechanism for High Throughput Communicationin OpenSHMEM,”Proc.of the 8th Int'l Conf.on Partitioned Global Address SpaceProgramming Models (2014)中所描述的SHMEM上下文提议来支持多上下文间同步。
再次参考图1,每个计算节点102可以体现为能够执行本文所述功能的任何类型的计算或计算机设备,包括但不限于计算机、服务器、机架式服务器、高性能计算节点;台式计算机、工作站、膝上型计算机、笔记本计算机、平板计算机、移动计算设备、可穿戴计算设备、网络设备、分布式计算系统、基于处理器的系统和/或消费电子设备。如图1所示,计算节点102示出性地包括处理器120、输入/输出子系统126、存储器128、数据存储设备130和通信电路132。当然,计算节点102可以包括其他或另外的组件,诸如在其他实施例中,在服务器计算机中常见的那些(例如,各种输入/输出设备)。另外,在一些实施例中,示出性组件中的一个或多个可以并入另一个组件,或以其他方式形成另一个组件的一部分。例如,在一些实施例中,存储器128或其部分可以被并入处理器120中。
处理器120可以体现为能够执行本文所描述的功能的任何类型的处理器。示出性处理器120是具有两个处理器核心122的双核处理器120,每个处理器核心122是能够执行编程指令的独立处理单元。应该理解的是,在其他实施例中,处理器120可以体现为单核或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路。
示出性处理器120还包括主机结构接口124。主机结构接口124可以体现为能够实现通过网络104的处理器120和其他远程计算节点102和/或其他远程设备之间的通信的任何通信接口,诸如网络接口控制器、通信电路、设备或其集合。主机结构接口124可以被配置为使用任何一种或多种通信技术和相关联的协议(例如以太网、全向通路架构等) 来实现这种通信。在一些实施例中,主机结构接口124可以暴露类似于低级网络应用编程接口的接口,例如门户网络编程接口。尽管被示出为包括在处理器120中,但是应当理解,在一些实施例中,主机结构接口124可以是计算节点102的单独组件,或者包括在计算节点102的单独组件(诸如网络接口控制器或网络接口卡)中。另外地或可替代地,虽然被示出为包括单个处理器120,但是应该理解,每个计算节点102可以包括多个处理器120,并且每个处理器120可以包括集成主机结构接口124。
存储器128可以体现为能够执行本文描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器128可以存储在计算节点102的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动。存储器128经由I/O子系统126通信地耦合到处理器120,该I/O子系统126可以体现为用于促进与处理器120、存储器128以及计算节点102的其他组件的输入/输出操作的电路和/或组件。例如,I/O子系统 126可以体现为或以其它方式包括存储器控制器集线器、输入/输出控制集线器、平台控制器集线器、固件设备、通信链路(即,点对点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或促进输入/输出操作的其他组件和子系统。在一些实施例中,I/O子系统126可以形成片上系统 (SoC)的一部分并且与处理器120、存储器128以及计算节点102的其他组件一起并入单个集成电路芯片中。
数据存储设备130可以体现为被配置用于数据的短期或长期存储的任何类型的一个或多个设备,例如存储设备和电路、存储卡、硬盘驱动器、固态驱动器或其他数据存储设备。计算节点102的通信电路132可以体现为能够实现通过网络104的计算节点102和一个或多个远程计算节点102 和/或其他远程设备之间的通信的任何通信电路、设备或其集合。通信电路 132可以被配置为使用任何一种或多种通信技术(例如,有线或无线通信) 和相关联的协议(例如,以太网、全向通路架构、WiMAX等)来实现这种通信。
如下面更详细讨论的,计算节点102可以被配置为通过网络104在彼此之间和/或与系统100的其他设备发送和接收数据。网络104可以体现为任意数量的各种有线和/或无线网络。例如,网络104可以体现为或者以其他方式包括有线或无线局域网(LAN)、有线或无线广域网(WAN)、蜂窝网络和/或可公开访问的全局网络,如互联网。这样,网络104可以包括任何数量的附加设备,例如附加计算机、路由器和交换机,以促进系统100 的设备当中的通信。
现在参考图3,在示出性实施例中,每个计算节点102建立在操作期间的环境300。在示出性实施例中,计算节点102a被示出为发起者节点并且计算节点102b被示出为目标节点;然而,如图所示,两个计算节点102a、 102b可以建立相同的环境300,并且因此在一些实施例中这些计算节点102a、 102b的角色可以被颠倒和/或组合。例如,在一些实施例中,计算节点102a 可以充当关于与计算节点102b交换的消息的发起者和目标,反之亦然。
示出性环境300包括应用模块302和消息传送模块306。环境300的各种模块可以体现为硬件、固件、软件或其组合。例如,环境300的各种模块、逻辑和其他组件可以形成处理器120、主机结构接口124或计算节点 102的其他硬件组件的一部分或以其他方式由处理器120、主机结构接口124 或计算节点102的其他硬件组件来建立。因此,在一些实施例中,环境300 的任何一个或多个模块可以体现为电气设备的电路或集合(例如,应用电路302和/或消息传送电路306)。
应用模块302被配置为由计算节点102的应用304针对完成事件来监视事件队列。应用304可以体现为由计算节点102执行的任何可执行代码、本地代码、管理的代码、用户应用、系统应用或其他程序,并且与一个或多个远程计算节点102发送和/或接收消息。如下面进一步描述的,事件队列可以体现为存储器128中的一个或多个数据结构,例如循环缓冲器。应用304可以例如通过轮询存储器128中的事件队列或通过阻塞事件队列来监视事件队列。应用模块302可以被配置为由应用304将一个或多个消息写入到包括在存储器128中的消息缓冲器中。应用模块302还可以被配置为响应于确定完成事件已被写入到事件队列而由应用304处理存储器128 中的消息缓冲器。应用模块302可以由处理器120的处理器核心122中的一个或多个托管,执行或以其他方式建立。因此,应用304可以由处理器核心122执行。
消息传送模块306被配置为从远程计算节点102接收消息,响应于接收消息而使事件计数器递增,在增加事件计数器之后确定事件触发器是否被满足,并且如果事件触发器被满足则将完成事件写入到事件队列。消息传送模块306可以由主机结构接口124托管、执行或以其他方式建立。因此,消息传送模块306的那些操作可以独立于处理器核心122来执行。
在一些实施例中,计算节点102可以用作发起者计算节点102a。在那些实施例中,消息传送模块306可以被配置为从消息缓冲器向远程计算节点102发送发起者消息(例如,诸如获取消息、放置消息或原子操作之类的单端消息)。在那些实施例中,计算节点102a响应于原始发起者消息的发送而从远程计算节点102b接收确认消息,并响应于接收到每个确认消息而使事件计数器递增。在那些实施例中,消息传送模块306可以被配置为通过将事件计数器与原始发送的发起者消息的数量进行比较来确定是否事件触发器被满足。
另外地或替代地,在一些实施例中,计算节点102可以用作目标计算节点102b。在那些实施例中,消息传送模块306可以被配置为将发起者消息接收到存储器128中的消息缓冲器中,并且响应于接收每个发起者消息而使事件计数器递增。消息传送模块306可以被配置为响应于接收到每个发起者消息而将事件计数器递增1。在那些实施例中,消息传送模块306可以被配置为通过将事件计数器与预期有多少发起者消息的预定计数进行比较来确定事件触发器是否被满足。在一些实施例中,消息传送模块306可以被配置为基于发起者消息的大小(例如,通过消息中的字节数)来使事件计数器递增。在那些实施例中,消息传送模块306可以被配置为通过确定事件计数器是否与消息缓冲器的大小具有预定的关系(例如,通过确定消息缓冲器是否已满)来确定事件触发器是否被满足。消息传送模块306 还可以被配置为基于在消息缓冲器之间建立的依赖性,当原始缓冲器满时,将附加的发起者消息接收到新的消息缓冲器中。应该理解,消息传送模块 306的功能可以由一个或多个子模块(诸如,发起者模块308和/或目标模块310)执行。
现在参考图4,在使用中,计算节点102a可以执行用于发起者节点消息处理的方法400。方法400从框402开始,其中计算节点102a准备用于在计算节点102a的存储器128中的一个或多个消息缓冲器中传输的消息。消息可以体现为例如单端消息,例如获取消息或放置消息、原子更新消息或其他消息。因为计算节点102a充当发起者节点,所以这些消息可以被称为发起者消息。计算节点102a可以准备用于传输的消息,例如通过以适当的格式将它们复制到消息缓冲器中。处理器核心122中的一个或多个可以例如通过执行应用304来准备消息。
在框404中,计算节点102a将每个消息缓冲器指派给聚合器块。聚合器块可以体现为包括存储器缓冲区、事件计数器、事件触发器和/或用于生成聚合的消息同步事件的其他组件的逻辑结构。计算节点102a可以建立多个聚合器块,并且每个聚合器块可以与专用消息缓冲器相关联。消息缓冲器可以是分离的,或者可以各自是包括消息的更大的、连续的存储器缓冲区的一部分。处理器核心122可以通过向主机结构接口124发送一个或多个命令来将每个消息缓冲器指派给聚合器块。
现在参考图5,示意图500示出了可以由系统100建立的消息聚合机制的至少一个实施例。如图所示,每个计算节点102建立事件队列502(在下面进一步描述)和一个或多个聚合器块504。在示出性实施例中,发起者计算节点102a建立两个聚合器块504a、504b;然而,应当理解,发起者计算节点102a可以具有不同数目的聚合器块504(例如,一个聚合器块504或者三个或更多个聚合器块504)。如图所示,每个聚合器块504包括缓冲器 506、事件计数器508和事件触发器510。缓冲器506与存储器128中的特定存储器缓冲区相关联,所述特定存储器缓冲区可以包含由应用304准备的用于发送到目标计算节点102b的消息。每个聚合器块504被指派给单独的缓冲器506,并且缓冲器506的每个可以是较大缓冲器的一部分。例如,在示出性实施例中,缓冲器506a、506b的每个可为存储器128中较大的、连续缓冲器的一部分。另外,虽然每一聚合器块504被示出为包括用于发送到单个目标计算节点102b的消息,应当理解,在一些实施例中,单个聚合器块504可以用于将发起者计算节点102a与许多目标计算节点102b聚合。
参考回图4,在框406中,计算节点102a初始化与每个消息缓冲器506 相关联的事件计数器508,以对接收到的确认消息(ACK)进行计数。处理器核心122可以通过向主机结构接口124发送一个或多个命令来初始化事件计数器508。计算节点102a可以针对包括用于发送到目标计算节点102b 的消息的每个消息缓冲器506初始化事件计数器508。
在框408中,计算节点102a利用将由聚合器块504发送的消息的数量来初始化与每个事件计数器508相关联的事件触发器510。计算节点102a 可以使用任何适当的技术来初始化事件触发器510。例如,在一些实施例中,计算节点102a可以生成指向当前计算节点102a的触发的放置消息,所述触发的放置消息当事件计数器508达到事件触发器510被初始化的确认消息的数量时被触发。触发的放置消息可以由主机结构接口124以硬件处理。计算节点102a可以初始化针对与用于发送到目标计算节点102b的消息相关联的每个事件计数器508的事件触发器510。
在框410中,计算节点102a将消息从消息缓冲器506发送到目标计算节点102b。计算节点102a可以使用用于发送消息的任何技术。例如,处理器核心122可以卸载发送消息到主机结构接口124,并且主机结构接口124 可以独立于处理器核心122发送消息。虽然示出为顺序地准备消息缓冲器 506,初始化事件计数器508以及初始化事件触发器510,应该理解,在一些实施例中,这些操作可以以不同的顺序和/或独立地执行。例如,计算节点102a可以初始化事件计数器508和/或事件触发器510,然后通过消息缓冲器506发送消息。
在发送消息之后,方法400并行地进行到框412、416。如下面进一步描述的,框412可以由计算节点102a的处理器核心122执行,并且框416 可以由计算节点102a的主机结构接口124执行。在框412中,计算节点102a 针对完成事件来监视事件队列502。事件队列502可以体现为存储器128中的缓冲器或其他结构。例如,在示出性实施例中,事件队列502是循环缓冲器。计算节点102a可以使用任何技术来监视事件队列502,包括针对变化来轮询事件队列502,阻塞事件队列,等待中断或任何其他适当的技术。例如,执行应用304的处理器核心122可以从存储器重复地读取事件队列 502以检测新的完成事件。如下面进一步描述的,当处理器核心122正在监视事件队列502时,主机结构接口124可以独立地将完成事件写入到事件队列502。在框414中,计算节点102确定是否已经检测到完成事件。如果不是,则方法400循环回到框412以继续监视事件队列502。如果已经检测到完成事件,则方法400前进到框426,如下面所描述的。
参考回到框410,如上所述,在发送消息之后,方法400并行地进行到框412、416。在框416中,计算节点102a的主机结构接口124监视来自目标计算节点102b的确认消息(ACK)。目标计算节点102b在接收到由发起者节点102a发送的消息之后,将ACK发送回发起者计算节点102a。如上所述,主机结构接口124在处理器核心122可以监视事件队列502的同时监视ACK。在框418,主机结构接口124确定是否已经接收到ACK。如果否,则方法400循环回到框416以继续监视ACK。如果已经接收到ACK,则方法400前进到框420。
在框420中,主机结构接口124使事件计数器递增508。主机结构接口 124递增与聚合器块504和/或发送到目标计算节点102b的原始消息的消息缓冲器506相关联的事件计数器508。事件计数器508可以体现为可以由主机结构接口124访问的任何存储位置。例如,事件计数器508可以体现为存储器128和/或高速缓存、寄存器中的位置或主机结构接口124本地的其他存储器位置。处理器核心122可以访问事件计数器508(例如,通过一致性高速缓存);然而,如以上结合框412所述,处理器核心122监视事件队列502而不监视事件计数器508。
在框422中,主机结构接口124确定事件触发器510是否已被满足。例如,主机结构接口124可以将事件计数器508的值与如上面结合框408 所描述的由处理器核心122指派的预定义值进行比较。因此,在主机结构接口124已经接收的ACK的数量等于最初发送到目标计算节点102b的消息的数量之后,可以满足事件触发器510。如果事件触发器510未被满足,则方法400循环回到框416以继续监视ACKS。如果事件触发器510被满足,则方法400前进到框424。
在框424中,主机结构接口124将完成事件写入到事件队列502。如上所述,事件队列502可以体现为存储器128中的缓冲区或其他结构。完成事件可以包括可以被用来识别生成完成事件的聚合器块504和/或消息缓冲器506的数据。例如,在类似于门户网络编程接口的系统中,完成事件可以由向计算节点102a的触发的放置消息而生成。当触发的放置的触发器(即,事件触发器510)被满足时,主机结构接口124将完成事件写入到事件队列 502。触发的放置可以被配置为生成具有适当的user_ptr字段的完整事件,所述适当的user_ptr字段描述适当的聚合器块504。如上所述,在完成事件被写入到事件队列502之后,来自框414的方法400的执行加入来自框424 的方法400的执行,并且方法400进行至框426。
在框426中,计算节点102a释放和/或重新使用与完成事件相关联的消息缓冲器506。计算节点102a的处理器核心122可以释放缓冲区,调整一个或多个存储器指针,或以其他方式使与缓冲器506相关联的存储器128 可用于重用。因为完成事件是在多个消息已经被发送和确认之后触发的,所以处理器核心122有效地能够响应于单个事件来完成或以其他方式处理所有这些消息。此外,计算节点102a释放与完成事件相关联的聚合器块504,例如通过将聚合器块504标记为空闲,将聚合器块504标记为“释放以重用”,将聚合器块504放回到释放聚合器列表上,或执行任何其他技术以允许聚合器块504重用。在释放消息缓冲器506和聚合器块504之后,方法 400循环回到框402,其中计算节点102a可以准备用于发送到目标计算节点102b的附加消息。
现在参考图6,在使用中,计算节点102b可以执行方法600以用于目标节点消息处理。方法600从框602开始,其中计算节点102b准备一个或多个消息缓冲器以从发起者计算节点102a接收消息。如上所述,消息可以体现为例如单端消息,诸如获取消息或放置消息、原子更新消息或其它消息。处理器核心122中的一个或多个可以例如通过执行应用304来准备消息缓冲器。
在框604中,计算节点102b确定是否将接收到已知数量的消息。例如,应用304可被配置为接收已知数量的消息或接收未知数量的消息。如果将接收到未知数量的消息,则方法600分支到框612,如下所述。如果将接收到已知数量的消息,则方法600分支到框606。
在框606中,计算节点102b将每个消息缓冲器指派给聚合器块。如上所述,并且如图5所示,聚合器块504可以体现为如下的逻辑结构,所述逻辑结构包括消息缓冲器506、事件计数器508、事件触发器510和/或用于生成聚合的消息同步事件的其他组件。计算节点102b可以建立多个聚合器块504,并且每个聚合器块504可以与将从发起者计算节点102a接收消息的专用消息缓冲器506相关联。消息缓冲器506可以是分离的,或者每个可以都是更大的、连续存储器缓冲区的一部分。处理器核心122可以通过向主机结构接口124发送一个或多个命令来将每个消息缓冲器506指派给聚合器块504。另外,尽管每个聚合器块504被示出为从单个发起者计算节点102a接收消息,但是应当理解,在一些实施例中,单个聚合器块504可以用于将目标计算节点102b与许多发起者计算节点102a进行聚合。
在框608中,计算节点102b初始化与每个消息缓冲器506相关联的事件计数器508,以对从发起者计算节点102a接收到的消息进行计数。处理器核心122可以通过向主机结构接口124发送一个或多个命令来初始化事件计数器508。计算节点102b可以针对从发起者计算节点102a接收消息的每个消息缓冲器506初始化事件计数器508。
在框610中,计算节点102b利用预期将从发起者计算节点102a接收到的消息的数目来初始化与每个消息缓冲器506相关联的事件触发器510。计算节点102b可以使用任何适当的技术来初始化事件触发器510。例如,在一些实施例中,计算节点102b可以生成指向当前计算节点102b的触发的放置消息,该触发的放置消息按预期接收的消息数量而被触发。触发的放置消息可以由主机结构接口124以硬件处理。计算节点102b可以针对将从发起者计算节点102a接收消息的每个消息缓冲器506来初始化事件触发器510。在初始化事件触发器510之后,方法600并行地进行到框618、622,如下所述。
参考回到框604,如果计算节点102b确定将接收到未知数量的消息,则方法600分支到框612。在框612中,计算节点102b将每个消息缓冲器 506指派给聚合器块504,在聚合器块504之间设置适当的依赖性。如上所述,并且如图5所示,聚合器块504可以体现为如下的逻辑结构,所述逻辑结构包括消息缓冲器506、事件计数器508、事件触发器510和/或用于生成聚合的消息同步事件的其他组件。计算节点102b可以建立多个聚合器块 504,并且每个聚合器块504可以与将从发起者计算节点102a接收消息的专用消息缓冲器506相关联。消息缓冲器506可以是分离的,或者每个可以都是更大的、连续存储器缓冲区的一部分。图5示出了在目标计算节点 102b的聚合器块504a和504b之间建立的依赖性512。如下面进一步描述的,在当前缓冲器506被填充时,聚合器块504之间的依赖性允许主机结构接口124自动地将消息存储在新缓冲器506中。例如,在示出性实施例中,当缓冲器506a填充有消息时,主机结构接口124可以基于缓冲器506a、 506b之间的依赖性512自动开始利用消息来填充缓冲器506b。处理器核心 122可以通过向主机结构接口124发送一个或多个命令来将消息缓冲器506 指派给聚合器块504,并指派依赖性。
在框614中,计算节点102b初始化与每个消息缓冲器506相关联的事件计数器508,以对从发起者计算节点102a接收到的字节进行计数。对字节而不是消息进行计数可以允许计算节点102b在缓冲器506被填充时生成事件。处理器核心122可以通过向主机结构接口124发送一个或多个命令来初始化事件计数器508。计算节点102b可以针对从发起者计算节点102a 接收消息的每个消息缓冲器506来初始化事件计数器508。尽管被示出为对字节进行计数,但是应该理解,每个事件计数器508可以被配置为对指示所接收的消息的大小的任何度量进行计数。
在框616中,计算节点102b利用多个字节来初始化与消息缓冲器506 相关联的事件触发器510。用于事件触发器510的字节数可以基于消息缓冲器506的大小。例如,字节数可以等于消息缓冲器506的大小。然而,在许多实施例中,用于事件触发器510的字节数可以小于消息缓冲器506的大小,以允许消息缓冲器506中的额外空间用于存储最后的消息而不被截断。附加地或可替换地,代替截断消息,如果允许对消息进行重新排序,则计算节点102b可以将较大的消息放置到下一个聚合器块504的消息缓冲器506中,并且然后将较小的跟随消息放入原始缓冲器506中。计算节点 102b可以使用任何适当的技术来初始化事件触发器510。例如,在一些实施例中,计算节点102b可以生成指向当前计算节点102b的触发的放置消息,按字节数触发。触发的放置消息可以由主机结构接口124处理。计算节点102b可以针对从发起者计算节点102a接收消息的每个消息缓冲器506 来初始化事件触发器510。
在框610、616中初始化事件触发器510之后,方法600并行地进行到框618、622。如下面进一步描述的,框618可以由计算节点102a的处理器核心122执行,并且框622可以由计算节点102a的主机结构接口124执行。在框618中,计算节点102b针对完成事件来监视事件队列502。如上所述,事件队列502可以体现为存储器128中的缓冲器或其他结构,例如循环缓冲器。计算节点102b可以使用任何技术来监视事件队列502,包括针对变化来轮询事件队列502,阻塞事件队列,等待中断或任何其他适当的技术。例如,执行应用304的处理器核心122可以从存储器重复地读取事件队列 502以检测新的完成事件。如下面进一步描述的,当处理器核心122正在监视事件队列502时,主机结构接口124可以独立地将完成事件写入到事件队列502。在框620中,计算节点102确定是否已经检测到完成事件。如果不是,则方法600循环回到框618以继续监视事件队列502。如果已经检测到完成事件,则方法600前进到框634,如下面描述的。
参考回到框610、616,如上所述,在初始化事件触发器510之后,方法600并行地前进到框618、622。在框622中,计算节点102b的主机结构接口124监视来自发起者计算节点102a的消息(例如,获取消息、放置消息、原子操作等)。如上所述,主机结构接口124在处理器核心122可以监视事件队列502的同时监视消息。在框624中,主机结构接口124确定是否已经接收到消息。如果不是,则方法600循环回到框622以继续监视消息。如果已经接收到消息,则方法600前进到框626。
在框626中,主机结构接口124使事件计数器递增508。主机结构接口 124递增与从发起者计算节点102a接收到消息的聚合器块504和/或消息缓冲器506相关联的事件计数器508。如上所述,事件计数器508可以被配置为递增1(即,用于对消息进行计数)或者递增所接收的字节的数量(或指示所接收的消息的大小的其他度量)。事件计数器508可以体现为可以由主机结构接口124访问的任何存储位置。例如,事件计数器508可以体现为存储器128和/或高速缓存、寄存器中的位置或主机结构接口124本地的其他存储器位置。处理器核心122可以访问事件计数器508(例如,通过一致性高速缓存);然而,如以上结合框618所描述的,处理器核心122监视事件队列502而不监视事件计数器508。
在框628中,主机结构接口124确定事件触发器510是否已被满足。例如,主机结构接口124可以将事件计数器508的值与如上面结合框610、 616所描述的由处理器核心122指派的预定义值进行比较。因此,可以在主机结构接口124已经接收到的消息的数量等于期望发送的消息的数量之后,或者在主机结构接口124已经接收到预定量的数据之后,事件触发器510 可以被满足。如果事件触发器510未被满足,则方法600循环回到框622 以继续监视消息。如果事件触发器510被满足,则方法600前进到框630。
在框630中,主机结构接口124将完成事件写入到事件队列502。如上所述,事件队列502可以体现为存储器128中的缓冲器或其他结构。完成事件可以包括可以是用于识别生成完成事件的聚合器块504和/或消息缓冲器506的数据。例如,在类似于门户网络编程接口的系统中,完成事件可以通过向计算节点102b的触发的放置消息来生成。当触发的放置的触发器 (即,事件触发器510)被满足时,主机结构接口124将完成事件写入到事件队列502。触发的放置可以被配置为生成具有适当的user_ptr字段的完整事件,所述适当的user_ptr字段描述了适当的聚合器块504。附加地或可选地,在一些实施例中,主机结构接口124可以响应于 AUTO_UNLINK/AUTO_FREE事件来写入完成事件,其中,当缓冲器506 已满并且列表条目未被链接时自动生成所述AUTO_UNLINK/AUTO_FREE 事件。在一些实施例中,在框632中,主机结构接口124可以自动地在如由聚合器块504之间建立的依赖性所确定的下一个消息缓冲器506中从发起者计算节点102a接收消息。例如,如图5所示,计算节点102b的主机结构接口124可以基于消息缓冲器506a、506b之间的依赖性512,在消息缓冲器506a被填充之后自动地将消息接收到消息缓冲器506b中。因此,计算节点102b可以在已经填充缓冲器并且已经生成完成事件之后继续接收消息。如上所述,在完成事件被写入到事件队列502之后,自框620的方法600的执行接合自框632的方法600的执行,并且方法600前进至框634。
在框634中,计算节点102b处理与完成事件相关联的消息缓冲器506。由处理器核心122执行的应用304可以将缓冲器506的内容复制到存储器 128中的另一个位置或以其他方式处理接收到缓冲器506中的消息。处理器核心122还可以释放、解除链接或以其他方式使消息缓冲器506和关联的聚合器块504可用于重新使用。例如,在一些实施例中,处理器核心122 可以将消息缓冲器506从消息缓冲器506的链接列表中解除链接,然后在链接列表的末尾处重新链接消息缓冲器506,使得消息缓冲器506可用于重新使用。在处理消息缓冲器506之后,方法600循环回到框602,其中计算节点102b可以准备从发起者计算节点102a接收附加消息。
示例
下面提供了本文公开的技术的示出性示例。这些技术的实施例可以包括下面描述的示例中的任何一个或多个以及任何组合。
示例1包括用于聚合消息处理的计算节点,所述计算节点包括:消息传送电路,用于(i)从远程计算节点接收消息,(ii)响应于接收到消息,递增计算节点的事件计数器,(iii)响应于事件计数器的递增而确定事件触发器是否被满足,(iv),并且响应于确定事件触发器被满足而将完成事件写入到事件队列,其中事件队列被包括在计算节点的存储器中;以及应用电路,其用于由计算节点的应用针对完成事件来监视事件队列。
示例2包括示例1的主题,并且还包括主机结构接口,其中主机结构接口包括消息传送电路;以及处理器核心,其中处理器核心包括应用电路。
示例3包括示例1和2中任一示例的主题,并且其中将完成事件写入到事件队列包括由主机结构接口处理向计算节点的触发的放置消息。
示例4包括示例1-3中的任一示例的主题,并且其中监视事件队列包括轮询存储器中的事件队列。
示例5包括示例1-4中的任一示例的主题,并且其中监视事件队列包括阻塞事件队列。
示例6包括示例1-5中任一示例的主题,并且其中应用电路还用于响应于对事件队列的监视而由应用确定完成事件是否已被写入到事件队列;以及响应于确定完成事件已被写入到事件队列,由应用处理消息缓冲器,其中消息缓冲器被包括在计算节点的存储器中。
示例7包括示例1-6中任一示例的主题,并且其中计算节点包括发起者计算节点;远程计算节点包括目标计算节点;应用电路还用于由应用将发起者消息写入在消息缓冲器中,其中消息缓冲器被包括在计算节点的存储器中;消息传送电路还用于将发起者消息从消息缓冲器发送到远程计算节点;从远程计算节点接收消息包括响应于发起者消息的发送,从远程计算节点接收确认消息;并且使事件计数器递增包括响应于接收到确认消息而使事件计数器递增。
示例8包括示例1-7中的任一示例的主题,并且其中应用电路还用于由应用将多个发起者消息写入在消息缓冲器中,其中多个发起者消息包括所述发起者信息;并且确定事件触发器是否被满足包括将事件计数器与多个发起者消息的计数进行比较。
示例9包括示例1-8中任一示例的主题,并且还包括主机结构接口,其中主机结构接口包括消息传送电路;以及处理器核心,其中处理器核心包括应用电路。
示例10包括示例1-9中任一示例的主题,并且其中计算节点包括目标计算节点;远程计算节点包括发起者计算节点;从远程计算节点接收消息包括发起者消息接收到计算节点的消息缓冲器中,其中消息缓冲器被包括在计算节点的存储器中;并且使事件计数器递增包括响应于接收到发起者消息而使事件计数器递增。
示例11包括示例1-10中的任一示例的主题,并且其中,使事件计数器递增包括响应于接收到发起者消息而将事件计数器递增一;并且确定事件触发器是否被满足包括将事件计数器与发起者消息的预定计数进行比较。
示例12包括示例1-11中任一示例的主题,并且其中,使事件计数器递增包括基于发起者消息的大小来使事件计数器递增;并且确定所述事件触发器是否被满足包括确定所述事件计数器是否与所述消息缓冲器的大小具有预定的关系。
示例13包括示例1-12中的任一示例的主题,并且还包括主机结构接口,其中主机结构接口包括消息传送电路;其中所述消息传送电路还用于响应于确定所述事件触发器被满足而将第二发起者消息到第二消息缓冲器中,其中所述第二消息缓冲器被包括在所述计算节点的存储器中,并且依赖性是在消息缓冲器和第二消息缓冲器之间建立的。
示例14包括示例1-13中的任一示例的主题,并且还包括主机结构接口,其中主机结构接口包括消息传送电路;其中确定所述事件触发器是否被满足包括确定所述消息缓冲器是否是满的。
示例15包括一种用于聚合消息处理的方法,该方法包括由计算节点从远程计算节点接收消息;响应于接收到所述消息,由所述计算节点使所述计算节点的事件计数器递增;响应于使事件计数器递增,由计算节点确定事件触发器是否被满足;响应于确定所述事件触发器被满足,由所述计算节点向事件队列写入完成事件,其中所述事件队列被包括在所述计算节点的存储器中;以及由计算节点的应用针对完成事件来监视事件队列。
示例16包括示例15的主题,并且其中使事件计数器递增包括通过计算节点的主机结构接口使事件计数器递增;确定事件触发器是否被满足包括通过主机结构接口确定事件触发器是否被满足;将完成事件写入到事件队列包括由主机结构接口将完成事件写入到事件队列;并且监视事件队列包括由计算节点的处理器核心来监视事件队列。
示例17包括示例15和16中任一示例的主题,并且其中由主机结构接口将完成事件写入到事件队列包括由主机结构接口处理向计算节点的触发的放置消息。
示例18包括示例15-17中的任一示例的主题,并且其中监视事件队列包括轮询存储器中的事件队列。
示例19包括示例15-18中的任一示例的主题,并且其中监视事件队列包括阻塞事件队列。
示例20包括示例15-19中任一示例的主题,并且还包括响应于监视事件队列,由计算节点的应用来确定完成事件是否已被写入到事件队列;以及响应于确定所述完成事件已被写入到所述事件队列,由所述计算节点的应用来处理消息缓冲器,其中所述消息缓冲器被包括在所述计算节点的存储器中。
示例21包括示例15-20中的任一示例的主题,并且其中计算节点包括发起者计算节点并且远程计算节点包括目标计算节点,该方法还包括:由计算节点的应用将发起者消息写入消息缓冲器中,其中消息缓冲器被包括在计算节点的存储器中;以及由所述计算节点将所述发起者消息从所述消息缓冲器发送到所述远程计算节点;其中从所述远程计算节点接收所述消息包括响应于发送所述发起者消息而从所述远程计算节点接收确认消息;并且其中使事件计数器递增包括响应于接收到确认消息而使事件计数器递增。
示例22包括示例15-21中的任一示例的主题,并且还包括由计算节点的应用将多个发起者消息写入消息缓冲器中,其中多个发起者消息包括所述发起者消息;其中确定所述事件触发器是否被满足包括将所述事件计数器与所述多个发起者消息的计数进行比较。
示例23包括示例15-22中任一示例的主题,并且其中将消息写入消息缓冲器中包括由计算节点的处理器核心将消息写入消息缓冲器中。
示例24包括示例15-23中的任一示例的主题,并且其中计算节点包括目标计算节点;远程计算节点包括发起者计算节点;从远程计算节点接收消息包括将发起者消息到计算节点的消息缓冲器中,其中消息缓冲器被包括在计算节点的存储器中;并且使事件计数器递增包括响应于接收到发起者消息而使事件计数器递增。
示例25包括示例15-24中任一示例的主题,并且其中使事件计数器递增包括响应于接收到发起者消息,使事件计数器递增一;并且确定所述事件触发器是否被满足包括将所述事件计数器与发起者消息的预定计数进行比较。
示例26包括示例15-25中的任一示例的主题,并且其中使事件计数器递增包括基于发起者消息的大小使事件计数器递增;并且确定所述事件触发器是否被满足包括确定所述事件计数器是否与所述消息缓冲器的大小具有预定的关系。
示例27包括示例15-26中的任一示例的主题,并且还包括:响应于确定事件触发器被满足,由计算节点的主机结构接口将第二发起者消息接收到第二消息缓冲器中,其中第二消息缓冲器被包括在计算节点的存储器中,并且依赖性是在消息缓冲器和第二消息缓冲器之间建立的。
示例28包括示例15-27中任一示例的主题,并且其中确定事件触发器是否被满足包括由计算节点的主机结构接口确定消息缓冲器是否是满的。
示例29包括一种计算设备,包括:处理器;以及具有存储于其中的多个指令的存储器,所述多个指令在由所述处理器执行时使所述计算设备执行示例15-28中的任一项所述的方法。
示例30包括存储于其上的多个指令的一个或多个机器可读存储介质,所述多个指令响应于被执行而引起计算设备执行示例15-28中的任何一个的方法。
示例31包括一种计算设备,其包括用于执行包括15-28中的任一个的方法的单元。
示例32包括一种用于聚合消息处理的计算节点,该计算节点包括用于从远程计算节点接收消息的单元;用于响应于接收到所述消息而使所述计算节点的事件计数器递增的单元;用于响应于使事件计数器递增来确定事件触发器是否被满足的单元;用于响应于确定所述事件触发器被满足而将完成事件写入到事件队列的单元,其中所述事件队列被包括在所述计算节点的存储器中;以及用于由计算节点的应用针对完成事件来监视事件队列的单元。
示例33包括示例32的主题,并且其中用于使事件计数器递增的单元包括用于由计算节点的主机结构接口使事件计数器递增的单元;用于确定事件触发器是否被满足的单元包括用于由主机结构接口确定事件触发器是否被满足的单元;用于将完成事件写入到事件队列的单元包括用于由主机结构接口将完成事件写入到事件队列的单元;并且用于监视事件队列的单元包括用于由计算节点的处理器核心监视事件队列的单元。
示例34包括示例32和33中任一示例的主题,并且其中用于由主机结构接口将完成事件写入到事件队列的单元包括用于由主机结构接口处理用于计算节点的触发的放置信息的单元。
示例35包括示例32-34中任一示例的主题,并且其中用于监视事件队列的单元包括用于轮询存储器中的事件队列的单元。
示例36包括示例32-35中的任一示例的主题,并且其中用于监视事件队列的单元包括用于阻塞事件队列的单元。
示例37包括示例32-36中的任一示例的主题,并且还包括用于响应于监视事件队列由计算节点的应用确定完成事件是否已经被写入到事件队列的单元;以及用于响应于确定已经所述完成事件被写入到所述事件队列而由所述应用处理消息缓冲器的单元,其中所述消息缓冲器被包括在所述计算节点的存储器中。
示例38包括示例32-37中任一示例的主题,并且其中,所述计算节点包括发起者计算节点,并且所述远程计算节点包括目标计算节点,所述计算节点还包括用于由所述计算节点的应用将发起者消息写入消息缓冲器中的单元,其中消息缓冲器被包括在计算节点的存储器中;以及用于将所述发起者消息从所述消息缓冲器发送到所述远程计算节点的单元;其中所述用于从所述远程计算节点接收所述消息的单元包括用于响应于发送所述发起者消息而从所述远程计算节点接收确认消息的单元;并且其中所述用于使事件计数器递增的单元包括用于响应于接收到确认消息而使事件计数器递增的单元。
示例39包括示例32-38中任一示例的主题,并且还包括用于由计算节点的应用将多个发起者消息写入消息缓冲器中的单元,其中多个发起者消息包括所述发起者消息;其中所述用于确定所述事件触发器是否被满足的单元包括用于将所述事件计数器与所述多个发起者消息的计数进行比较的单元。
示例40包括示例32-39中任一示例的主题,并且其中用于将消息写入消息缓冲器中的单元包括用于由计算节点的处理器核心将消息写入消息缓冲器中的单元。
示例41包括示例32-40中任一示例的主题,并且其中计算节点包括目标计算节点;远程计算节点包括发起者计算节点;用于从远程计算节点接收消息的单元包括用于将发起者消息接收到计算节点的消息缓冲器中的单元,其中消息缓冲器被包括在计算节点的存储器中;并且所述用于使事件计数器递增的单元包括用于响应于接收到发起者消息而使事件计数器递增的单元。
示例42包括示例32-41中任一示例的主题,并且其中用于使事件计数器递增的单元包括用于响应于接收到发起者消息而将事件计数器递增一的单元;并且所述用于确定所述事件触发器是否被满足的单元包括用于将所述事件计数器与发起者消息的预定计数进行比较的单元。
示例43包括示例32-42中的任一示例的主题,并且其中所述用于使事件计数器递增的单元包括用于基于发起者消息的大小而使事件计数器递增的单元;并且所述用于确定事件触发器是否被满足的单元包括用于确定事件计数器是否与消息缓冲器的大小具有预定的关系的单元。
示例44包括示例32-43中的任一示例的主题,并且还包括用于响应于确定事件触发器被满足而通过计算节点的主机结构接口将第二发起者消息接收到第二消息缓冲器中的单元,其中第二消息缓冲器被包括在计算节点的存储器中,并且依赖性是在消息缓冲器和第二消息缓冲器之间建立的。
示例45包括示例32-44中任一示例的主题,并且其中所述用于确定事件触发器是否被满足的单元包括用于由计算节点的主机结构接口确定消息缓冲器是否是满的单元。
Claims (27)
1.一种用于聚合消息处理的计算节点,所述计算节点包括:
消息传送电路,其用于(i)从远程计算节点接收消息,(ii)响应于接收到所述消息而由所述计算节点的网络接口控制器使所述计算节点的事件计数器递增,(iii)响应于所述事件计数器的递增,由所述网络接口控制器确定事件触发器是否被满足,(iv)并且响应于确定所述事件触发器被满足而由所述网络接口控制器将完成事件写入到事件队列,其中,所述事件队列被包括在所述计算节点的存储器中,并且其中,所述事件队列位于不同于所述事件计数器的存储位置的存储位置处;以及
应用电路,其用于由所述计算节点的处理器核心执行的应用针对所述完成事件来监视所述事件队列。
2.如权利要求1所述的计算节点,还包括:
主机结构接口,其中,所述主机结构接口包括所述网络接口控制器;以及
处理器,其中,所述处理器包括所述处理器核心和所述主机结构接口。
3.如权利要求2所述的计算节点,其中,将所述完成事件写入到所述事件队列包括由所述主机结构接口处理向所述计算节点的触发的放置消息。
4.如权利要求1所述的计算节点,其中,监视所述事件队列包括轮询所述存储器中的所述事件队列。
5.如权利要求1所述的计算节点,其中,所述应用电路还用于:
响应于对所述事件队列的监视,由所述应用确定所述完成事件是否已被写入到所述事件队列;以及
响应于确定所述完成事件已被写入到所述事件队列,由所述应用处理消息缓冲器,其中,所述消息缓冲器被包括在所述计算节点的所述存储器中。
6.如权利要求1所述的计算节点,其中:
所述计算节点包括发起者计算节点;
所述远程计算节点包括目标计算节点;
所述应用电路还用于由所述应用将发起者消息写入在消息缓冲器中,其中,所述消息缓冲器被包括在所述计算节点的所述存储器中;
所述消息传送电路还用于将所述发起者消息从所述消息缓冲器发送到所述远程计算节点;
从所述远程计算节点接收所述消息包括响应于所述发起者消息的发送,从所述远程计算节点接收确认消息;以及
使所述事件计数器递增包括响应于接收到所述确认消息而使所述事件计数器递增。
7.如权利要求6所述的计算节点,其中:
所述应用电路还用于由所述应用将多个发起者消息写入在所述消息缓冲器中,其中,所述多个发起者消息包括该发起者消息;以及
确定所述事件触发器是否被满足包括将所述事件计数器与所述多个发起者消息的计数进行比较。
8.如权利要求1所述的计算节点,其中:
所述计算节点包括目标计算节点;
所述远程计算节点包括发起者计算节点;
从所述远程计算节点接收所述消息包括将发起者消息接收到所述计算节点的消息缓冲器中,其中,所述消息缓冲器被包括在所述计算节点的存储器中;以及
使所述事件计数器递增包括响应于接收到所述发起者消息而使所述事件计数器递增。
9.如权利要求8所述的计算节点,其中:
使所述事件计数器递增包括响应于接收到所述发起者消息而将所述事件计数器递增一;以及
确定所述事件触发器是否被满足包括将所述事件计数器与发起者消息的预定计数进行比较。
10.如权利要求8所述的计算节点,其中:
使所述事件计数器递增包括基于所述发起者消息的大小来使所述事件计数器递增;以及
确定所述事件触发器是否被满足包括确定所述事件计数器是否与所述消息缓冲器的大小具有预定的关系。
11.如权利要求10所述的计算节点,还包括:
主机结构接口,其中,所述主机结构接口包括所述消息传送电路;
其中,确定所述事件触发器是否被满足包括确定所述消息缓冲器是否是满的。
12.一种用于聚合消息处理的方法,所述方法包括:
由计算节点从远程计算节点接收消息;
响应于接收到所述消息,由所述计算节点的网络接口控制器使所述计算节点的事件计数器递增;
响应于使所述事件计数器递增,由所述计算节点的网络接口控制器确定事件触发器是否被满足;
响应于确定所述事件触发器被满足,由所述计算节点的网络接口控制器将完成事件写入到事件队列,其中,所述事件队列被包括在所述计算节点的存储器中,并且其中,所述事件队列位于不同于所述事件计数器的存储位置的存储位置处;以及
由所述计算节点的处理器核心执行的应用针对所述完成事件来监视所述事件队列。
13.如权利要求12所述的方法,其中,监视所述事件队列包括轮询所述存储器中的所述事件队列。
14.如权利要求12所述的方法,还包括:
响应于监视所述事件队列,由所述计算节点的应用确定所述完成事件是否已被写入到所述事件队列;以及
响应于确定所述完成事件已被写入到所述事件队列,由所述计算节点的应用来处理消息缓冲器,其中,所述消息缓冲器被包括在所述计算节点的所述存储器中。
15.如权利要求12所述的方法,其中,所述计算节点包括发起者计算节点,并且所述远程计算节点包括目标计算节点,所述方法还包括:
由所述计算节点的应用将发起者消息写入在消息缓冲器中,其中,所述消息缓冲器被包括在所述计算节点的所述存储器中;以及
由所述计算节点将所述发起者消息从所述消息缓冲器发送到所述远程计算节点;
其中,从所述远程计算节点接收所述消息包括响应于发送所述发起者消息而从所述远程计算节点接收确认消息;以及
其中,使所述事件计数器递增包括响应于接收到所述确认消息而使所述事件计数器递增。
16.如权利要求15所述的方法,还包括:
由所述计算节点的应用,将多个发起者消息写入在所述消息缓冲器中,其中,所述多个发起者消息包括该发起者消息;
其中,确定所述事件触发器是否被满足包括将所述事件计数器与所述多个发起者消息的计数进行比较。
17.如权利要求12所述的方法,其中:
所述计算节点包括目标计算节点;
所述远程计算节点包括发起者计算节点;
从所述远程计算节点接收所述消息包括将发起者消息接收到所述计算节点的消息缓冲器中,其中,所述消息缓冲器被包括在所述计算节点的所述存储器中;以及
使所述事件计数器递增包括响应于接收到所述发起者消息而使所述事件计数器递增。
18.一种用于聚合消息处理的计算节点,所述计算节点包括:
用于由所述计算节点从远程计算节点接收消息的单元;
用于响应于接收到所述消息,由所述计算节点的网络接口控制器使所述计算节点的事件计数器递增的单元;
用于响应于使所述事件计数器递增,由所述计算节点的网络接口控制器确定事件触发器是否被满足的单元;
用于响应于确定所述事件触发器被满足,由所述计算节点的网络接口控制器将完成事件写入到事件队列的单元,其中,所述事件队列被包括在所述计算节点的存储器中,并且其中,所述事件队列位于不同于所述事件计数器的存储位置的存储位置处;以及
用于由所述计算节点的处理器核心执行的应用针对所述完成事件来监视所述事件队列的单元。
19.如权利要求18所述的计算节点,其中,所述用于监视所述事件队列的单元包括用于轮询所述存储器中的所述事件队列的单元。
20.如权利要求18所述的计算节点,还包括:
用于响应于监视所述事件队列,由所述计算节点的应用确定所述完成事件是否已被写入到所述事件队列的单元;以及
用于响应于确定所述完成事件已被写入到所述事件队列,由所述计算节点的应用来处理消息缓冲器的单元,其中,所述消息缓冲器被包括在所述计算节点的所述存储器中。
21.如权利要求18所述的计算节点,其中,所述计算节点包括发起者计算节点,并且所述远程计算节点包括目标计算节点,所述计算节点还包括:
用于由所述计算节点的应用将发起者消息写入在消息缓冲器中的单元,其中,所述消息缓冲器被包括在所述计算节点的所述存储器中;以及
用于由所述计算节点将所述发起者消息从所述消息缓冲器发送到所述远程计算节点的单元;
其中,所述用于从所述远程计算节点接收所述消息的单元包括用于响应于发送所述发起者消息而从所述远程计算节点接收确认消息的单元;以及
其中,所述用于使所述事件计数器递增的单元包括用于响应于接收到所述确认消息而使所述事件计数器递增的单元。
22.如权利要求21所述的计算节点,还包括:
用于由所述计算节点的应用,将多个发起者消息写入在所述消息缓冲器中的单元,其中,所述多个发起者消息包括该发起者消息;
其中,所述用于确定所述事件触发器是否被满足的单元包括用于将所述事件计数器与所述多个发起者消息的计数进行比较的单元。
23.如权利要求18所述的计算节点,其中:
所述计算节点包括目标计算节点;
所述远程计算节点包括发起者计算节点;
所述用于从所述远程计算节点接收消息的单元包括用于将发起者消息接收到所述计算节点的消息缓冲器中的单元,其中,所述消息缓冲器被包括在所述计算节点的所述存储器中;以及
所述用于使所述事件计数器递增的单元包括用于响应于接收到所述发起者消息而使所述事件计数器递增的单元。
24.如权利要求23所述的计算节点,其中:
所述用于使所述事件计数器递增的单元包括用于响应于接收到所述发起者消息而将所述事件计数器递增一的单元;以及
所述用于确定所述事件触发器是否被满足的单元包括用于将所述事件计数器与发起者消息的预定计数进行比较的单元。
25.如权利要求23所述的计算节点,其中:
所述用于使所述事件计数器递增的单元包括用于基于所述发起者消息的大小来使所述事件计数器递增的单元;以及
所述用于确定所述事件触发器是否被满足的单元包括用于确定所述事件计数器是否与所述消息缓冲器的大小具有预定的关系的单元。
26.一种用于聚合消息处理的设备,包括:
存储指令的存储器;以及
耦合到所述存储器的处理器,所述指令在被所述处理器执行时执行根据权利要求12-17中的任一项所述的方法。
27.一种具有指令的计算机可读介质,所述指令在被处理器执行时,使所述处理器执行根据权利要求12-17中的任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/862,854 US10178041B2 (en) | 2015-09-23 | 2015-09-23 | Technologies for aggregation-based message synchronization |
US14/862,854 | 2015-09-23 | ||
PCT/US2016/048162 WO2017105558A2 (en) | 2015-09-23 | 2016-08-23 | Technologies for aggregation-based message synchronization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107925593A CN107925593A (zh) | 2018-04-17 |
CN107925593B true CN107925593B (zh) | 2021-12-07 |
Family
ID=58283430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680048798.4A Active CN107925593B (zh) | 2015-09-23 | 2016-08-23 | 用于聚合消息处理的计算节点、方法、设备和可读介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10178041B2 (zh) |
CN (1) | CN107925593B (zh) |
DE (1) | DE112016004290T5 (zh) |
WO (1) | WO2017105558A2 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10599548B2 (en) * | 2018-06-28 | 2020-03-24 | Intel Corporation | Cache monitoring |
CN110602211B (zh) * | 2019-09-16 | 2022-06-14 | 无锡江南计算技术研究所 | 一种带异步通知的乱序rdma方法与装置 |
CN111045839A (zh) * | 2019-12-04 | 2020-04-21 | 中国建设银行股份有限公司 | 分布式环境下基于两阶段事务消息的顺序调用方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101755412A (zh) * | 2007-06-13 | 2010-06-23 | 高通股份有限公司 | 协议数据单元恢复 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5737535A (en) * | 1995-06-07 | 1998-04-07 | Emc Corporation | Flow control circuit for networked communications system including arrangement for reducing overhead at the beginning of a communications session by enabling message transmission before receiving flow control information |
US6718370B1 (en) | 2000-03-31 | 2004-04-06 | Intel Corporation | Completion queue management mechanism and method for checking on multiple completion queues and processing completion events |
US6910080B2 (en) * | 2001-11-06 | 2005-06-21 | International Business Machines Corporation | Communication efficiency and performance in an unreliable communication environment |
US7418730B2 (en) * | 2002-12-17 | 2008-08-26 | International Business Machines Corporation | Automatic client responses to worm or hacker attacks |
US7188219B2 (en) * | 2004-01-30 | 2007-03-06 | Micron Technology, Inc. | Buffer control system and method for a memory system having outstanding read and write request buffers |
US7606173B2 (en) * | 2006-08-30 | 2009-10-20 | Robert Bosch Gmbh | Apparatus, method, and system for minimum neighbor assurance in deployment of nodes in a multihop wireless network |
US9419867B2 (en) * | 2007-03-30 | 2016-08-16 | Blue Coat Systems, Inc. | Data and control plane architecture for network application traffic management device |
US8774203B2 (en) | 2007-06-07 | 2014-07-08 | Intel Corporation | One-way message notification with out-of-order packet delivery |
US8248936B2 (en) | 2009-04-01 | 2012-08-21 | Lockheed Martin Corporation | Tuning congestion control in IP multicast to mitigate the impact of blockage |
US8655962B2 (en) * | 2009-09-28 | 2014-02-18 | International Business Machines Corporation | Shared address collectives using counter mechanisms |
WO2012068171A1 (en) * | 2010-11-15 | 2012-05-24 | Reed Coke S | Parallel information system utilizing flow control and virtual channels |
US9374300B2 (en) | 2013-09-12 | 2016-06-21 | Oracle International Corporation | Methods, systems, and computer readable media for regulation of multi-priority traffic in a telecommunications network |
-
2015
- 2015-09-23 US US14/862,854 patent/US10178041B2/en active Active
-
2016
- 2016-08-23 DE DE112016004290.6T patent/DE112016004290T5/de active Pending
- 2016-08-23 CN CN201680048798.4A patent/CN107925593B/zh active Active
- 2016-08-23 WO PCT/US2016/048162 patent/WO2017105558A2/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101755412A (zh) * | 2007-06-13 | 2010-06-23 | 高通股份有限公司 | 协议数据单元恢复 |
Also Published As
Publication number | Publication date |
---|---|
US20170085442A1 (en) | 2017-03-23 |
US10178041B2 (en) | 2019-01-08 |
DE112016004290T5 (de) | 2018-06-21 |
WO2017105558A3 (en) | 2018-02-22 |
CN107925593A (zh) | 2018-04-17 |
WO2017105558A2 (en) | 2017-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3707882B1 (en) | Multi-path rdma transmission | |
CN109690510B (zh) | 用于将数据分发到高性能计算网络和基于云的网络中的多个接收器的多播装置和方法 | |
CN109428831B (zh) | 用于对带宽不平衡数据传输进行节流的方法及系统 | |
US10444722B2 (en) | Techniques to direct access requests to storage devices | |
CN110661725A (zh) | 用于对出口上的网络分组进行重排序的技术 | |
TWI559706B (zh) | 網路處理器中的封包調度 | |
US11474736B2 (en) | Network interface controller with non-volatile random access memory write packet log | |
CN107925593B (zh) | 用于聚合消息处理的计算节点、方法、设备和可读介质 | |
CN110659114A (zh) | 用于端到端服务质量期限感知的i/o调度的技术 | |
CN107924330B (zh) | 用于集成的线程调度的计算设备和方法 | |
US11157336B2 (en) | Technologies for extending triggered operations | |
JP7461895B2 (ja) | Gpu主導の通信のためのネットワークパケットテンプレーティング | |
US20190102107A1 (en) | Techniques for batch operations to storage devices | |
WO2016138657A1 (en) | Techniques for storing or accessing key-value item | |
US20160294926A1 (en) | Using a single work item to send multiple messages | |
US10284501B2 (en) | Technologies for multi-core wireless network data transmission | |
US20190044872A1 (en) | Technologies for targeted flow control recovery | |
US20150121094A1 (en) | Cooperative reduced power mode suspension for high input/output ('i/o') workloads | |
CN114938354A (zh) | 拥塞控制的方法、装置、设备和存储介质 | |
US20180225144A1 (en) | Technologies for queue management by a host fabric interface | |
EP3771164B1 (en) | Technologies for providing adaptive polling of packet queues | |
US9146886B2 (en) | Deterministic message processing in a direct memory access adapter | |
CN108628764B (zh) | 用于对存储器缓冲区存取进行细粒度完成跟踪的技术 | |
WO2020031675A1 (ja) | スケジューリング装置、スケジューリングシステム、スケジューリング方法、プログラム及び非一時的コンピュータ可読媒体 | |
US9936003B1 (en) | Method and system for transmitting information in a network |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |