用于带宽不平衡数据传输的节流的制作方法

文档序号:17049156发布日期:2019-03-05 19:51阅读:150来源:国知局
用于带宽不平衡数据传输的节流的制作方法

本发明是在由国防部授予的合同号h98230b-13-d-0124-0132的政府支持下进行的。政府具有本发明的某些权利。



背景技术:

网络链路在传统上已经是节点之间网络传输的限制因素。这主要是由于网络链路的性能比节点内存储器层次的性能慢。因此,数据通信协议已被设计成将数据尽可能快地注入网络,以便最小化等待时间并实现高带宽。只要节点内存储器层次的宿(sink)带宽能够维持来自网络的外出速率,这些通信协议就是合适的。

非易失性存储器(nvm)技术的出现将有趣的细微差别引入至节点级存储器层次结构。nvm提供比常规动态随机存取存储器(dram)更高的密度、更低的成本和更低的功耗。给定这些益处,nvm正在被部署于各种环境中,包括高性能数据中心系统、数据密集型科学和数据分析系统、以及高性能计算(hpc)系统,这里仅举几例。在这些系统中的许多系统中,高性能网络结构已达到100gb/s的速度,这导致源/宿不匹配,因为高性能网络结构带宽显著地高于nvm的写入带宽。在这些环境中,使用传统通信协议的网络传输很可能由于源/宿不匹配而淹没(overwhelm)接收器。

附图说明

所附附图不旨在按比例绘制。在附图中,在各图中例示的每个相同或几乎相同的组件由相的数字表示,如在上下文中阅读时将理解的那样。

图1例示出根据本文描述的至少一些实施例的节流传输协议的一些实施例可在其中操作的示例操作环境。

图2例示出根据本文描述的节流传输协议的至少一些实施例的追加至优先级列表和溢出列表的示例匹配列表条目(me)的所选内容。

图3是例示出根据本文描述的节流传输协议的至少一些实施例的用于处理对短协议消息的发送的示例方法的流程图。

图4是例示出根据本文描述的节流传输协议的至少一些实施例的用于处理对消息的接收的示例方法的流程图。

图5是例示出根据本文描述的节流传输协议的至少一些实施例的用于处理对短协议消息的接收的示例方法的流程图。

图6是例示出根据本文描述的节流传输协议的至少一些实施例的用于处理块获取序列的示例方法的流程图。

在以下详细描述中,对所附附图进行参考,所附附图形成本文的一部分。在附图中,除非上下文另有指示,否则类似的符号通常标识类似的组件。在具体实施方式、附图和权利要求中描述的示例性实施例并不意味着限制。可使用其他实施例并且可进行其他改变而不脱离本文所呈现主题的精神或范围。如本文中一般描述的以及在附图中例示的本公开的方面能以各种不同配置来布置、替换、组合、分开和设计,本文中明确预期了上述各种配置。

具体实施方式

公开了用于对网络结构上带宽不平衡数据传输进行节流的技术。通过将大量数据的单个传输(例如,“有效载荷”的大量传输)分割(分解)成多个数据块并个体地传输每个数据块来实现节流。有效载荷排除包括在消息中的控制信息(例如,头部、寻址信息、排序信息、错误检测码等)以助益有效载荷递送。每个数据块的传输可被调度成使得后续数据块传输在先前数据块传输的执行完成之际开始。例如,阈值数量的块传输可被发起并变成未完成块传输,而剩余数量的块传输被调度以供执行。一旦已发起块传输完成,就可发起经调度块传输。每个块的大小(块大小)和/或允许未完成的块传输的阈值数量可被选择(设置),以甚至在存在带宽不匹配的情况下避免使网络结构拥塞(例如,淹没网络缓冲器)。

如前所述,当前通信协议不适用于其中网络传输的限制因素是网络节点(例如,网络能力显著地高于nvm的写入带宽)的环境。使用当前通信协议在这些环境中进行大消息传输将填充网络节点(例如,网络交换机)中的所有可用缓冲器(存储器)空间,并最终导致网络拥塞。这是由于数据未被足够快地写入nvm以跟上网络上数据的到达。由少量此类带宽不平衡的大消息传输造成的拥塞会消极地影响整个网络。

在高性能计算(hpc)系统中,大量(例如,数百、或数千至数十万、或者更多)处理器或计算节点通过高速网络结构彼此连接。每个计算节点具有相关联的资源,包括本地存储器,如上所述,该本地存储器很可能是nvm。hpc系统中的多个数量的计算节点可被配置为在用于被设计成解决复杂任务(例如,物理仿真、大数据分析和机器学习应用,这里仅举几例)的并行应用的计算任务上并行工作。例如,多个计算节点中的每一个可执行并行应用的线程或实例,并且通过在高速网络结构上传递大消息(例如,包含非常大量数据的消息)来协调计算任务的线程的执行。然而,在执行线程时,计算节点很可能将所接收数据直接写入其nvm中,因为数据大小使得采用高速缓存是不切实际的。在hpc系统中,或在其中网络结构性能超过存储器性能的任何系统中,大消息传输会降低网络结构性能,并最终影响hpc系统的整体性能。

为此,公开了用于对网络结构上的带宽不平衡数据传输进行节流的技术。例如,可在hpc系统中实现这些技术,以在hpc系统的计算节点之间实现大消息传输(大有效载荷的传输),而不使hpc系统内的网络结构的性能降级。这些技术提供了用于网络节点(例如,发送器节点和接收器节点)之间大消息传输的接收器驱动的节流传输协议,该节流传输协议透明地对带宽不匹配传输进行节流。协议是接收器驱动的,因为该协议提供对远程存储器获取操作的使用来传输单个有效载荷的全部或大部分。替代使用单个获取操作来传输有效载荷,协议提供将有效载荷分割(分解)成多个块,并使用对应数量的块获取操作(例如,一个远程存储器获取操作用于传输有效载荷的每个块)来个体地传输每个块。协议提供接收器节点来单个有效载荷数据传输操作分割成多个块获取操作、开始(执行)阈值数量的块获取操作的执行、调度剩余块获取操作以供后续执行、以及指定经调度块获取操作要被执行的方式(例如,条件或诸条件)。例如,接收器节点可指定:一个经调度块获取操作将在完成先前块获取操作之际开始执行。因此,协议允许接收器节点以用于避免淹没接收器节点的可用存储器带宽以及避免使网络结构拥塞的方式来调度有效载荷的每个块的传输。

在一些实施例中,可基于接收器节点的nvm的写入带宽、网络结构的能力(例如,网络带宽、网络中可用的缓冲量、往返传输时间等)、或者接收器节点的nvm的写入带宽与网络结构能力的组合来选择每个块的大小(块大小)和未完成的块获取操作的最大数量(例如,初始被执行的块获取操作的阈值数量)。例如,可基于写入带宽和/或网络结构能力的基准测试来确定值。以这种方式选择值可确保网络结构不会被因接收器节点处不足的写入带宽或缓冲空间而无法完成的块获取操作淹没。

在一些实施例中,可使用触发操作(例如,基于条件或诸条件而被触发的操作)来实现块获取操作。在一些实施例中,触发操作可由计数器来触发。例如,一旦触发操作附连的计数器达到指定阈值,触发操作就可开始执行。

在一些实施例中,协议可被实现为hpc系统内高性能网络通信层接口的部分。例如,在其中高性能通信层接口支持集合点(rendezvous)协议的实例中,协议可被实现为对集合点协议的增加(附加)。在一些实施例中,数据传输操作(例如,块获取操作)可被卸载至硬件(h/w)。也就是说,可使用h/w组件(诸如,专用集成电路(asic)、场可编程门阵列(fpga)、或被配置成解释和/或执行程序指令和/或处理数据的任何其他电路)来实现数据传输操作。数据传输操作的h/w实现的一个技术优点是不需要软件干预(例如,以附加处理线程的形式)来发起数据传输操作。

现转向附图,图1例示出根据本文描述的至少一些实施例的节流传输协议的一些实施例可在其中操作的示例操作环境100。如以上所讨论的,如本文所描述的包括协议的各种实施例的技术可适用于对hpc系统中的带宽不平衡数据传输进行节流。尽管如此,本领域技术人员将理解,本公开中描述的技术广泛适用于其他通信模型(例如,除本文具体描述的那些之外的其他系统、协议和/或操作)。而且,本领域技术人员将理解,本公开中描述的技术的实施例广泛适用于带宽不平衡数据传输。

在hpc系统的上下文中,环境100可包括多个计算节点102a-102p,每个计算节点102a-102p连接至网络结构104。计算节点102a-102p在本文中可被统称为计算节点102,或者在本文中被单独称为计算节点102。在所例示示例中,示出了计算节点102a-102p。然而,环境100中描绘的计算节点102的数量仅用于例示,并且本领域技术人员将理解,可存在不同数量的计算节点。例如,在超级计算机的情形中,可存在较小数量的计算节点或数千个计算节点。网络结构104允许所连接的计算节点102以非常高的速度和低等待时间来进行通信。网络结构104可包括任何合适的高速网络架构,诸如omnipath架构、无限带宽技术(infiniband)、以太网、lan、wan(例如,wan上的iwarp)等。如此,网络结构104可包括一个或多个交换机和/或路由器。

每个计算节点102可被具体化为能够进行通信并且具有足够处理器功率和存储器容量来执行本公开中描述的操作的任何类型的计算设备或计算系统。例如,计算节点102可以是机架式服务器、刀片服务器、独立服务器、工作站、台式计算机、膝上型计算机、手持式计算机、平板计算机(例如,ipadtm平板计算机)、移动计算或通信设备(例如,iphonetm移动通信设备、androidtm移动通信设备等)、机顶盒和游戏控制台,这里仅举几例。在一些实施例中,诸计算节点102可以是类似的,因为每个计算节点102包括相同的硬件和操作系统。在一些实施例中,计算节点102中的一些可包括与其他计算节点102中的一些不同的硬件和/或操作系统。

如所描绘的,计算节点102可包括处理器106、存储器108、数据存储110、hpc中间件层112、节点结构接口层114以及节流传输协议116。处理器106、存储器108、数据存储110、hpc中间件层112以及节点结构接口层114可通信地耦合至其他各项中的一个或多个。本领域技术人员将理解,计算节点102可包括可能未在本文明确例示或描述的其他或附加组件,诸如输入/输出(i/o)子系统、存储器控制器和总线接口,这里仅举几例。

处理器106可包括适用于在hpc系统中使用的任何处理单元,诸如pentiumd(奔腾d)处理器、xeon处理器或任何其他合适的多核处理器。通常,处理器106可包括任何合适的专用或通用计算机、计算实体、或者包括各种计算机硬件或固件的计算或处理设备,并且可被配置成执行存储在任何可适用计算机可读存储介质上的指令,诸如程序指令。例如,处理器106可包括微处理器、中央处理单元(cpu)、微控制器、数字信号处理器(dsp)、专用集成电路(asic)、场可编程门阵列(fpga)、复杂指令集计算机(cisc)、精简指令集计算机(risc)、多核、或者被配置成解释和/或执行程序指令和/或处理数据——无论是从存储器加载还是在硬件中直接实现的——的任何其他数字或模拟电路。虽然在图1中被例示为单个处理器,但是处理器106可包括任何数量的处理器和/或处理器核,这些处理器和/或处理器核被配置成单独地或共同地执行或指导本公开中描述的任何数量的操作的执行。

存储器108可包括计算机可读存储介质,该计算机可读存储介质被配置成用于携带或具有存储在其上的计算机可执行指令或数据结构。此类计算机可读存储介质可包括能由诸如处理器106之类的通用或专用计算机访问的任何可用介质。作为示例而非限制,此类计算机可读存储介质可包括非瞬态计算机可读存储介质,包括随机存取存储器(ram)、动态随机存取存储器(dram)、同步动态随机存取存储器(sdram)、双倍数据速率2(ddr2)ram、3-d堆叠dram、静态随机存取存储器(sram)、nvm或任何其他合适的存储介质,这些存储介质可被用于以计算机可执行指令或数据结构的形式携带或存储特定程序代码,并且可由通用或专用计算机来访问。上述组合也可被包括在计算机可读介质的范围内。

数据存储110可包括被配置成用于数据的短期或长期存储的任何类型的计算机可读存储介质。作为示例而非限制,此类计算机可读存储介质可包括硬盘驱动器、固态驱动器、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、紧凑盘只读存储器(cd-rom)或其他光盘存储、磁盘存储或其他磁存储设备、闪存设备(例如,固态存储器设备)、nvm或任何其他存储介质,包括以上结合存储器108提供的那些存储介质,这些存储介质可被用于以计算机可执行指令或数据结构的形式携带或存储特定程序代码,并且可由通用或专用计算机来访问。上述组合也可被包括在计算机可读介质的范围内。

计算机可执行指令可包括例如被配置成使处理器106执行某一操作或操作组的指令和数据。在一些实施例中,处理器106可被配置成解释和/或执行存储在存储器108、数据存储110、或者存储器108和数据存储110中的程序指令和/或处理存储在存储器108、数据存储110、或者存储器108和数据存储110中的数据。在一些实施例中,处理器106可从数据存储110取出程序指令并将程序指令加载至存储器108中。在程序指令被加载至存储器108中之后,处理器106可执行程序指令。

例如,在一些实施例中,计算节点102的组件和/或模块中的任何一个或多个可作为程序指令被包括在数据存储110中。处理器106可从数据存储110取出程序指令中的一些或全部,并且可将所取出的程序指令加载至存储器108中。在将程序指令加载至存储器108中后,处理器106可执行程序指令,使得计算节点102可实现如由指令指导的操作,包括如本文描述的节流传输协议116。

hpc中间件层112被配置成助益并行进程(例如,执行应用程序的实例的计算节点)之间的消息传递,包括数据的交换。例如,hpc中间件层112可暴露应用程序接口(api)以向应用程序提供用于并行编程的消息传递功能。合适的消息传递api的示例包括消息传递接口(mpi)、对称分层存储器访问(shmem)、openshmem(开放式shmem)、统一并行c(upc)、bsd套接字、rsocket(r套接字)以及高级消息排队协议(amqp)消息队列。在一些实施例中,hpc中间件112可包括消息传递接口(mpi)库,该消息传递接口(mpi)库实现mpiapi,以提供消息传递功能。mpi库支持用于大消息(大消息有效载荷)传输的集合点协议。

节点结构接口层114被配置成将计算节点102通信地耦合至网络结构104。节点结构接口层114助益网络结构104上的通信,包括消息(例如,网络分组、网络流、网络流量等)从源至目的地(例如,发送器计算节点至接收器计算节点)的传输。在一些实施例中,节点结构接口层114可暴露并包括门户4(portals4)api和实现。门户4是用于高性能计算系统上的高性能联网的低级api。门户4api定义了用于支持mpi和其他hpc中间件层的高性能实现的基本操作。此外,门户4api定义了联网层,该联网层具有能够进行硬件卸载的丰富原语集。因此,在一些实施例中,可使用节点结构接口层114的一个或多个硬件组件(例如,网络接口卡、控制器芯片、芯片组等)来实现门户4api。在其他实施例中,节点结构接口层114可暴露并包括开放式结构(openfabrics)接口(ofi)库结构(libfabric)api。

节流传输协议116被配置成提供接收器驱动集合点协议,该集合点协议透明地对带宽不匹配数据传输进行节流。节流传输协议116将消息有效载荷的传输分割或分解成诸块,并使用对应数量的块获取操作来个体地传输每个块。每个块的传输可由有效载荷的接收器调度,以避免淹没接收器的可用存储器带宽。在一些实施例中,可使用门户4接口来实现节流传输协议116。在门户4实现中,节流传输协议116利用远程直接存储器访问(rdma)读取操作(门户4中的ptlget(ptl获取))来执行块获取操作以传输消息有效载荷中的大部分。这与使用单个rdma读取操作来传输所有或剩余有效载荷的当前现有协议形成对比。在一些实施例中,节流传输协议116利用门户4的触发操作特征来将块获取操作实现为触发操作。触发操作需要至少两个附加参数:计数器句柄和阈值。一旦附连的计数器达到(或大于)阈值,就执行触发操作。当被实现为触发操作时,节点结构接口层114,并且特别地,由节点结构接口层114提供的门户4实现,基于针对块获取操作中每一个的触发阈值来自动开始对块获取操作的执行。例如,阈值可被设置成使得后续(经调度)块获取操作在先前(正执行)块获取操作完成之际开始。在一些实施例中,可在不涉及主机cpu的情况下执行触发操作,并且由此提供计算和通信的异步进程。例如,可将触发操作卸载至h/w组件。

图2例示出根据本文描述的节流传输协议的至少一些实施例的追加至优先级列表和溢出列表的示例匹配列表条目(me)的所选内容。me被用来暴露用于由门户4支持的rdma放置(put)、获取(get)和原子操作的存储器区域。三个me被例示为追加至优先级列表,并且两个me被例示为追加至溢出列表。追加至优先级列表和溢出列表的me的数量是用于例示的,并且本领域技术人员将理解,可存在不同数量的追加至优先级列表的me以及不同数量的追加至溢出列表的me。例如,优先级列表可包括比所例示的更小数量或更大数量的me。类似地,溢出列表可包括比所例示的更小数量或更大数量的me。

如所例示的,每个me包括对等id、mpi标签、通信器id以及缓冲器信息。对等id标识对等并行进程(对等mpi进程),该对等并行进程是对应于me的mpi消息的源。mpi标签标识消息(即,对应于me的mpi消息)。mpi标签是由应用层选择的整数。通信器id标识用于消息的通信上下文或环境。在给定通信器id上发送的消息仅可通过同一通信器id上执行的接收操作来接收。通信器id包括附加匹配信息。在一些实例中,标签和通信器id可被组合成用于匹配的单个64位实现级标签值。缓冲器信息指定缓冲器的位置、大小和布局,数据通过消息从该缓冲器传输或传输至该缓冲器。me还可包括标识相关联计数器的计数器id。相关联计数器可被配置成对不同类型的事件(诸如,成功传输或传输的字节)计数。将理解,信息中的一些可不被包括在me中。例如,在一些实施例中,me中的一个或多个可不包括计数器。还将理解,除上述信息之外的信息也可被包括在me中。例如,在一些实施例中,me中的一个或多个可包括特征标记,该特征标记修改其行为(例如,一次使用或多次使用)、保护信息、或者会导致匹配信息的某些块被忽略的掩码。

并行进程(mpi进程)可将多个me追加至溢出列表以从对等并行进程(对等mpi进程)接收非预期消息。追加至溢出列表的每个me可包括用于对等id和mpi标签的通配符值,并指定回弹缓冲器。因此,追加至溢出列表的me可被用于匹配(接收)非预期消息,并将包括在非预期消息中的第一有效载荷块复制到回弹缓冲器中。

对预期消息的接收操作可通过将针对预期消息的me追加至优先级列表来实现。在将me追加至优先级列表之前,针对匹配me来进行对被接收至溢出列表中的消息的搜索。如果在溢出列表中未找到匹配消息,则将针对预期消息的me追加至优先级列表。为了处理传入消息,搜索优先级列表以寻找匹配me。如果在优先级列表中未找到匹配me,则将传入消息作为非预期消息来与溢出列表中的可用me匹配。以下结合图4-6进一步讨论通过节流传输协议116对预期消息和传入消息的处理。

图3是例示出根据本文描述的节流传输协议的至少一些实施例的用于处理对消息的发送的示例方法300的流程图。图4是例示出根据本文描述的节流传输协议的至少一些实施例的用于处理对消息的接收的示例方法400的流程图。图5是例示出根据本文描述的节流传输协议的至少一些实施例的用于处理对短协议消息的接收的示例方法500的流程图。图6是例示出根据本文描述的节流传输协议的至少一些实施例的用于处理块获取序列的示例方法600的流程图。在一些实施例中,由方法300、400、500和600例示的操作、功能或动作可由hpc系统执行,并且更具体地,由图1的计算节点102执行。方法300、400、500和600的相应框中描述的操作、功能或动作还可作为计算机可执行指令被存储在计算机可读介质(诸如,计算节点102的存储器108和/或数据存储110)中。

本领域技术人员将理解,对于本文公开的这些和其他过程和方法,在过程和方法中执行的功能能以不同次序来实现。附加地或替代地,两个或更多个操作可在同一时间被执行。此外,概述的动作和操作仅作为示例被提供,并且动作和操作中的一些可以是任选的、可被组合成更少的动作和操作、或者被扩展成附加的动作和操作而不偏离所公开的实施例的本质。

参看图3,方法300可始于框302,其中发送器(例如,运行在发送器计算节点上的mpi进程)针对要发送至接收器(例如,运行在接收器计算节点上的对等mpi进程)的消息来创建短协议消息。发送器指定标签和通信器句柄的值,这些值被包括在短协议消息的头部中。发送器还指定包含要被发送数据的存储器的位置、大小和布局。发送器将消息中达紧迫(eager)/集合点阈值的前k个字节(有效载荷前k个字节)包括在短协议消息中。紧迫/集合点阈值指定可被包括在短协议消息中的数据量(大小)。在一些实施例中,短协议消息用作针对从发送器至接收器的消息的“准备发送”消息。

在一些实施例中,发送器还可在短协议消息的头部中指定匹配现时数(nonce),该匹配现时数将此发送操作与发送器发出的其他发送操作唯一地区分开。现时数可被用于区分具有相同匹配准则的消息,从而允许以任何次序检索消息块。如果未使用现时数,或者所有现时数已被指派给未决操作,则需要以发送短协议消息的次序来检索消息块。可保留一个现时数值,从而允许发送器向接收器指示此状况。

框302之后可跟随判决框304,在判决框304中,发送器检查以确定消息中是否存在更多有效载荷(例如,消息是否是大消息——大量数据的传输)。也就是说,发送器检查以确定除包括在短协议消息中的k个字节(即,第一块)之外是否还存在附加数据要发送(消息有效载荷是否大于包括在短协议消息中的k个字节)。如果发送器确定存在附加数据(有效载荷)要发送,则判决框304之后可跟随框306。

在框306处,发送器针对后续获取操作(例如,获取块操作)创建me,这些操作将由接收器执行以检索消息的剩余数据(剩余有效载荷)。发送器将计数器附连(关联)至所创建的me,并将例如具有预期值的计数器配置成对所传输字节的总数进行计数。当接收器执行后续获取操作来检索剩余数据时,发送器将计数器值与预期值进行比较,并且一旦计数器值达到预期值,发送器就可确定消息的发送已完成。在一些实施例中,计数器可被配置成对检索剩余数据所需的成功获取操作进行计数。

框306之后可跟随框308,其中发送器执行放置操作以发送短协议消息。在框306之后跟随框308的实例中,存在供接收器检索的附加有效载荷,并且因此整体有效载荷尚未被发送。

否则,如果在判决框304处,发送器确定没有附加数据要发送(例如,消息有效载荷是包括在短协议消息中的k个字节),则判决框304之可跟随框308,其中发送器执行放置操作以发送短协议消息。在判决框304跟随框308的实例中,消息的整体有效载荷被包括在短协议消息中,并且因此整体有效载荷被发送。

参看图4,方法400可始于框402,其中接收器(例如,运行在接收器计算节点上的mpi进程)针对来自发送器(例如,运行在发送器计算节点上的对等mpi进程)的预期消息来创建me。me包括源、标签、通信器句柄的值以及关于预期消息的其他自变量(例如,数据将被写入的缓冲器的位置、大小和布局)。在将me追加至优先级列表之前,接收器进行检查以确定发送器是否试图发送消息。也就是说,接收器进行检查以确定发送器是否发送了表示预期消息或与预期消息相关联的短协议消息。

框402之后可跟随判决框404,其中接收器进行检查以确定针对预期消息创建的me是否与被接收至溢出列表中的消息匹配。也就是说,接收器检查溢出列表以确定针对预期消息创建的me是否与非预期消息(例如,接收器非预期地接收的短协议消息)匹配。如果接收器确定针对预期消息创建的me与溢出列表中me中的任何一个不匹配,则判决框404之后可跟随框406,其中接收器将me追加至优先级列表。追加至优先级列表的me是接收器要接收的消息(例如,短协议消息)的“占位符”。在一些实施例中,接收器可检查非预期头部列表以确定是否存在与针对预期消息创建的me的匹配(例如,针对预期消息创建的me是否与非预期头部列表中的条目匹配)。非预期头部列表可包括针对接收器接收的非预期短协议消息的条目。在一些实施例中,接收器可确定接收缓冲器(目的地缓冲器)是否将导致自网络结构的缓慢外出。如果接收缓冲器将导致自网络结构的缓慢外出,例如,接收缓冲器是nvm,则接收器可选择利用节流传输协议。在这种情况下,接收器可在me中设置标记以指示节流传输协议将被使用。附加地或替代地,接收器可发布具有一缓冲器大小的me,该缓冲器大小等于短协议消息有效载荷的大小(例如,缓冲器大小等于紧迫/集合点阈值)。否则,接收器可选择利用非节流传输协议(例如,现有基于放置的协议)。例如,非节流传输协议在数据将被写入快速存储器的实例中可能是高效的。

否则,如果在判决框404处,接收器确定针对预期消息创建的me确实与溢出列表(或者,在一些实施例中,非预期头部列表)中的me匹配,则判决框404之后可跟随框408,其中接收器捕捉完整事件(例如,消息的接收)。事件指示匹配位(例如,mpi标签、通信器句柄和现时数)、消息大小(例如,有效载荷大小)、以及紧迫数据块的量(例如,包含于实际存储在回弹缓冲器中的短协议消息中的有效载荷的前k个字节)。

框408之后可跟随框410,其中接收器将消息的第一块(紧迫数据块)从回弹缓冲器复制到接收缓冲器中。在一些实施例中,接收缓冲器可以是接收器计算节点的nvm中的存储器位置。

框410之后可跟随判决框412,其中接收器进行检查以确定是否存在附加数据要检索(是否存在除从回弹缓冲器复制的数据之外的附加有效载荷)。如果接收器确定存在附加数据要检索,则判决框412之后可跟随框414,其中接收器执行块获取序列(节流传输协议)以检索附加数据。在一些实施例中,接收器可用单个获取来检索附加数据。对于数据被写入快速存储器的情形,这潜在地更为有效。

否则,如果在判决框412处,接收器确定没有附加数据要检索,则判决框412之后可跟随框416,其中接收器确定接收到消息有效载荷。也就是说,整体有效载荷被包括在短协议消息中。

接收器可迭代方法400以创建和发布针对来自同一mpi进程或不同mpi进程的、要由接收器接收的其他消息的me。

参看图5,方法500可始于框502,其中接收器接收短协议消息。框502之后可跟随判决框504,其中接收器进行检查以确定所接收短协议消息是否是预期消息。如果接收器确定所接收短协议消息不是预期消息,则判决框504之后可跟随框506,其中接收器将包括在所接收短协议消息中的数据(例如,有效载荷的k个字节)复制到回弹缓冲器中。包括在短协议消息中的数据是消息有效载荷的紧迫数据块。

框506之后可跟随框508,其中接收器搜索溢出列表以得到匹配的me。在一些实施例中,接收器(mpi进程)将被配置成与接收器接收的非预期消息匹配的多个me追加至溢出列表。接收器随后可将所接收非预期短协议消息匹配到溢出列表中的me中的一个。

框508之后可跟随框510,其中接收器可在非预期头部列表中针对所接收非预期短协议消息创建条目。条目包括关于所接收非预期短协议消息的信息,诸如匹配位、消息大小、以及包含于实际存储在回弹缓冲器中的短协议消息中的k字节数据的量。在一些实施例中,接收器可向发送器发送消息以指示接收器尚未为消息做好准备(例如,消息有效载荷已被“截短”),并且接收器将检索剩余数据(剩余有效载荷)。该消息可用作对发送器的指示,该指示为:接收器将利用节流传输协议来检索剩余数据,以及发送器将等待接收器执行获取操作。在一些实施例中,在非预期头部列表中针对非预期短协议消息创建条目之后,接收器可在溢出列表中移除针对非预期短协议消息的条目。例如,接收器可解除me与溢出列表的链接。

否则,如果在判决框504处,接收器确定所接收短协议消息是预期消息,则判决框504之后可跟随框512,其中接收器将包括在所接收短协议消息中的数据(例如,有效载荷的k个字节)复制到接收缓冲器中。在一些实施例中,接收缓冲器可以是接收器计算节点的nvm中的存储器位置。

框512之后可跟随判决框514,其中接收器进行检查以确定是否存在附加数据要检索(例如,是否还存在除从回弹缓冲器复制的数据之外的附加有效载荷)。如果接收器确定存在附加数据要检索,则判决框514之后可跟随判决框516,其中接收器进行检查以确定节流传输协议是否将被用于检索附加有效载荷。例如,可能先前例如在将me发布在优先级列表中时已做出使用节流传输协议的判决。如果接收器确定将使用节流传输协议,则判决框516之后可跟随框518,其中接收器执行块获取序列(节流传输协议)以检索附加数据。否则,如果接收器确定将不使用节流传输协议,则判决框516之后可跟随框520,其中接收器向发送器发送允许发送消息(acleartosendmessage)。响应于接收到允许发送消息,发送器将剩余有效载荷推送(例如,非节流传输协议)至接收器。

否则,如果在判决框514处,接收器确定没有附加数据要检索,则判决框514之后可跟随框522,其中接收器确定接收到消息有效载荷。也就是说,全部有效载荷被包括在短协议消息中。

参看图6,方法600可始于框602,其中接收器将单个有效载荷数据传输操作分割成多个块获取操作。例如,单个有效载荷数据传输操作可以是与接收器接收的短协议消息相关联的剩余有效载荷(例如,超过包括在短协议消息中的k个字节的有效载荷)。每个块获取操作可以是rdma获取操作,用于检索消息中还要从发送器传输至接收器的剩余有效载荷的相应块。在一些实施例中,接收器可基于所检索剩余有效载荷将被写入的nvm的写入带宽和/或剩余有效负载将在其上被检索的网络结构的能力来确定要为剩余有效载荷创建的块的数量(例如,每个块的大小)。

框602之后可跟随框604,其中接收器开始执行阈值数量c个块获取操作。也就是说,接收器开始执行c个rdma获取以检索消息中的剩余有效载荷的c个块。在一些实施例中,接收器可基于每个块的大小、所检索剩余有效载荷将被写入的nvm的写入带宽和/或剩余有效负载将在其上被检索的网络结构的能力来确定阈值数量c。

框604之后可跟随框606,其中接收器调度剩余块获取操作以用于后续执行。也就是说,接收器调度超过开始且正在执行的c个rdma获取的剩余数量的rdma获取以供后续执行。在一些实施例中,接收器调度剩余的块获取操作,使得在任何时间点不超过c个块获取操作是未完成(正执行)的。

在一些实施例中,接收器可执行块获取序列(例如,块获取操作的执行)作为触发操作。例如,接收器可利用门户4的触发操作特征来实现块获取操作的调度和后续发出(开始)。在一些实施例中,触发操作可被附连至计数器,并且在计数器达到针对触发操作中的每一个而设置的相应阈值时被发出(开始)。

通过示例,假设存在六个块获取操作;c的值被确定为1;计数器被配置成对已完成块获取操作的数量进行计数;并且一个经调度块获取操作将在正执行(未完成)块获取操作完成之际被触发,以确保不超过c个块获取操作是未完成的。在此实例中,接收器可如下指定针对六个块获取操作的计数器阈值:

阈值0:发出块获取操作

阈值1:发出块获取操作

阈值2:发出块获取操作

阈值3:发出块获取操作

阈值4:发出块获取操作

阈值5:发出块获取操作

在计数器阈值0处被触发以开始执行的块获取操作(例如,零个已完成块获取操作)是作为初始c个块获取操作的部分开始执行的初始块获取操作。当计数器达到阈值1(即,一个正执行块获取操作完成)时,在计数器阈值1下被触发以开始执行的块获取操作开始执行。类似地,当计数器达到阈值2(即,另一正执行块获取操作完成)时,在计数器阈值2下被触发以开始执行的块获取操作开始执行。第四、第五和第六经调度块获取操作以与第二和第三块获取操作类似的方式被触发并开始执行。

作为另一示例,假设以上示例中的c被确定为3。在此实例中,接收器可如下指定针对六个块获取操作的计数器阈值:

阈值0:发出块获取操作

阈值0:发出块获取操作

阈值0:发出块获取操作

阈值1:发出块获取操作

阈值2:发出块获取操作

阈值3:发出块获取操作

在计数器阈值0下被触发以开始执行的块获取操作(例如,零个已完成块获取操作)是作为初始c个块获取操作的部分开始执行的初始块获取操作。在此情形中,前三个块获取操作作为初始c个块获取操作的部分开始执行。当计数器达到阈值1(即,三个正执行块获取操作中的一个完成)时,在计数器阈值1下被触发以开始执行的块获取操作开始执行。类似地,当计数器达到阈值2(即,三个正执行块获取操作中的另一个完成)时,在计数器阈值2下被触发以开始执行的块获取操作开始执行。当计数器达到阈值3(即,三个正执行块获取操作中的另一个完成)时,在计数器阈值3下被触发以开始执行的块获取操作开始执行。

框606之后可跟随判决框608,其中接收器检查以确定正执行(未完成)块获取操作是否完成。接收器可进行检查以确定由未完成块获取操作检索的数据块是否被写入接收缓冲器(例如,nvm)中。例如,当块获取操作正检索的数据的块(数据块)被写入接收缓冲器(例如,nvm)中时,可确定正执行块获取操作完成。如果接收器确定正执行块获取操作完成,则判决框608之后可跟随判决框610。否则,如果接收器确定没有正执行块获取操作已完成,则接收器可针对完成继续检查(例如,轮询)正执行块获取操作(在判决框608处继续)。

在判决框610处,接收器可进行检查以确定是否存在需要执行的更多经调度块获取操作(是否存在任何更多经调度块获取操作要发出)。如果接收器确定存在更多经调度块获取操作,则判决框610之后可跟随框612,其中接收器开始执行经调度块获取操作。在一些实施例中,接收器可依次(例如,预定次序)开始执行经调度块获取操作。框612之后可跟随判决框608,其中接收器进行检查以确定正执行(未完成)块获取操作是否完成。

否则,如果在判决框610处,接收器确定不存在更多经调度块获取操作,则判决框610之后可跟随框614,其中接收器处理正执行(未完成)块获取操作。在此实例中,对所有经调度块获取操作的执行已开始,并且仍在执行的块获取操作需要完成。

如以上所指示的,本公开中描述的实施例可包括对包含各种计算机硬件或软件模块的专用或通用计算机(例如,图1的处理器106)的使用,如本文更详细地讨论的。此外,如以上所指示的,可使用用于携带或具有存储在其上的计算机可执行指令或数据结构的计算机可读介质(例如,图1的存储器108)来实现本公开中描述的实施例。

示例实施例

以下示例涉及进一步的实施例,大量的排列和配置将根据这些实施例变得显而易见。

示例1是用于对带宽不平衡数据传输进行节流的系统。系统包括一个或多个非瞬态机器可读介质,这一个或多个非瞬态机器可读介质被配置成存储指令;以及一个或多个处理器,这一个或多个处理器被配置成执行存储在一个或多个非瞬态机器可读介质上的指令。指令被配置成使一个或多个处理器用于:将网络结构上的有效载荷数据传输操作分割成多个块获取操作;执行多个块获取操作中的阈值数量c个块获取操作;调度多个块获取操作中的剩余块获取操作作为经调度块获取操作以供后续执行;以及响应于对正执行块获取操作的完成的确定以及对至少一个经调度块获取操作的确定,执行经调度块获取操作中的块获取操作。

示例2包括示例1的主题,其中块获取操作包括用于传输有效载荷块的远程存储器获取操作。

示例3包括示例1和2的主题,其中有效载荷数据传输操作是在高性能网络结构上的。

示例4包括示例1至3中任一项的主题,其中有效载荷数据传输操作包括对非易失性存储器的写入操作。

示例5包括示例1至4中任一项的主题,其中有效载荷数据传输操作在高性能计算系统中进行。

示例6包括示例1至5中任一项的主题,其中分割有效载荷数据传输操作是基于网络结构的能力的。

示例7包括示例1至6中任一项的主题,其中阈值数量c是基于网络结构的能力的。

示例8包括示例1至7中任一项的主题,其中块获取操作是触发操作。

示例9包括示例8的主题,其中触发操作是基于计数器的。

示例10包括示例8至9中任一项的主题,其中触发操作包括硬件实现。

示例11包括示例1至10中任一项的主题,其中经调度块获取操作被依次执行。

示例12是用于对带宽不平衡数据传输进行节流的计算机实现的方法。方法包括将网络结构上的有效载荷数据传输操作分割成多个块获取操作;执行多个块获取操作中的阈值数量c个块获取操作;调度多个块获取操作中的剩余块获取操作作为经调度块获取操作以供后续执行;以及响应于对正执行块获取操作的完成的确定以及对至少一个经调度块获取操作的确定,执行经调度块获取操作中的块获取操作。

示例13包括示例12的主题,其中块获取操作包括用于传输有效载荷块的远程存储器获取操作。

示例14包括示例12和13的主题,其中有效载荷数据传输操作是在高性能网络结构上的。

示例15包括示例12至14中任一项的主题,其中有效载荷数据传输操作包括对非易失性存储器的写入操作。

示例16包括示例12至15中任一项的主题,其中有效载荷数据传输操作在高性能计算系统中进行。

示例17包括示例12至16中任一项的主题,其中分割有效载荷数据传输操作是基于网络结构的能力的。

示例18包括示例12至17中任一项的主题,其中阈值数量c是基于网络结构的能力的。

示例19包括示例12至18中任一项的主题,其中块获取操作是触发操作。

示例20包括示例19的主题,其中触发操作是基于计数器的。

示例21包括示例19至20中任一项的主题,其中触发操作包括硬件实现。

示例22包括示例12至21中任一项的主题,其中经调度块获取操作被依次执行。

示例23是一种计算机程序产品,包括用指令编码的一个或多个非瞬态机器可读介质,该指令在由一个或多个处理器执行时,使得执行用于对带宽不平衡数据传输进行节流的进程。进程包括将网络结构上的有效载荷数据传输操作分割成多个块获取操作;发出多个块获取操作中的阈值数量c个块获取操作;调度多个块获取操作中的剩余块获取操作作为经调度块获取操作以供后续执行;以及响应于对正执行块获取操作的完成的确定以及对至少一个经调度块获取操作的确定,发出经调度块获取操作中的块获取操作。

示例24包括示例23的主题,其中块获取操作包括用于传输有效载荷块的远程存储器获取操作。

示例25包括示例23和24的主题,其中有效载荷数据传输操作是在高性能网络结构上的。

示例26包括示例23至25中任一项的主题,其中有效载荷数据传输操作包括对非易失性存储器的写入操作。

示例27包括示例23至26中任一项的主题,其中有效载荷数据传输操作包括高性能计算系统中的传输操作。

示例28包括示例23至27中任一项的主题,其中分割有效载荷数据传输操作是基于网络结构的能力的。

示例29包括示例23至28中任一项的主题,其中阈值数量c是基于网络结构的能力的。

示例30包括示例23至29中任一项的主题,其中块获取操作是触发操作。

示例31包括示例30的主题,其中触发操作是基于计数器的。

示例32包括示例30至31中任一项的主题,其中触发操作包括硬件实现。

示例33包括示例23至32中任一项的主题,其中经调度块获取操作被依次执行。

示例34是用于对带宽不平衡数据传输进行节流的系统。系统包括用于将网络结构上的有效载荷数据传输操作分割成多个块获取操作的装置;用于执行多个块获取操作中的阈值数量c个块获取操作的装置;用于调度多个块获取操作中的剩余块获取操作作为经调度块获取操作以供后续执行的装置;以及用于响应于对正执行块获取操作的完成的确定以及对至少一个经调度块获取操作的确定,执行经调度块获取操作中的块获取操作的装置。

示例35包括示例34的主题,其中块获取操作包括用于传输有效载荷块的远程存储器获取操作。

示例36包括示例34和35的主题,其中有效载荷数据传输操作是在高性能网络结构上的。

示例37包括示例34至36中任一项的主题,其中有效载荷数据传输操作包括对非易失性存储器的写入操作。

示例38包括示例34至37中任一项的主题,其中有效载荷数据传输操作在高性能计算系统中进行。

示例39包括示例34至37中任一项的主题,其中分割有效载荷数据传输操作是基于网络结构的能力的。

示例40包括示例34至39中任一项的主题,其中阈值数量c是基于网络结构的能力的。

示例41包括示例34至40中任一项的主题,其中块获取操作是触发操作。

示例42包括示例41的主题,其中触发操作是基于计数器的。

示例43包括示例41至42中任一项的主题,其中触发操作包括硬件实现。

示例44包括示例34至43中任一项的主题,其中经调度块获取操作被依次执行。

如在本公开中使用的,术语“模块”或“组件”可指代被配置成执行可存储在计算系统的通用硬件(例如,计算机可读介质、处理设备等)上和/或由其执行的模块或组件和/或软件对象或软件例程的动作的特定硬件实现。在一些实施例中,本公开中描述的不同组件、模块、引擎和服务可被实现为在计算系统上执行的对象或进程(例如,作为分开的线程)。虽然本公开中描述的系统和方法中的一些一般被描述成以软件实现(存储在通用硬件上和/或由通用硬件执行),但是特定硬件实现、固件实现或其任何组合也是可能的和预期的。在本说明书中,“计算实体”可以是如先前在本公开中描述的任何计算系统,或者是在计算系统上执行的任何模块或调制的组合。

本公开和所附权利要求(例如,所附权利要求的主体)中使用的术语一般旨在作为“开放”术语(例如,术语“包括”应被解释为“包括但不限于”、术语“具有”应被解释为“至少具有”、术语“包含”应被解释为“包含但不限于”等)。

另外,如果所引入权利要求叙述的具体数量是有意的,则这样的意图将在权利要求中被明确地陈述,而在没有此类叙述的情况下,不存在此类意图。例如,为了帮助理解,以下所附权利要求可包含对介绍性短语“至少一个”和“一个或多个”的使用以引入权利要求叙述。然而,对此类短语的使用不应被解释为暗示由不定冠词“一”或“一个”对权利要求的引入将包含此类所引入权利要求叙述的任何特定权利要求限制为仅包含一个此类叙述的实施例,即使当同一权利要求包括引入短语“一个或多个”或“至少一个”,以及诸如“一”或“一个”之类的不定冠词(例如,“一”和/或“一个”应该被解释为“至少一个”或“一个或多个”);这对于用于引入权利要求叙述的定冠词的使用同样适用。

另外,即使明确叙述了所引入权利要求叙述的具体数量,本领域技术人员将认识到,此类叙述应该被解释为意指至少是所叙述的数量(例如,仅仅是“两个叙述”而没有其他修饰语意指至少两个叙述,或者两个或更多个叙述)。此外,在使用类似于“a、b和c等中的至少一个”或“a、b和c中的一个或多个等”惯例的那些实例中,通常此类结构旨在包括单独的a,单独的b,单独的c,a和b一起,a和c一起,b和c一起,或a、b和c一起等。

本公开中记载的所有示例和条件语言旨在用于教学对象以帮助读者理解本公开和由发明人提供的用于促进领域的概念,并且应被解释为不对此类具体叙述的示例和条件进行任何限制。尽管已经详细描述了本公开的实施例,但是在不脱离本公开的精神和范围的情况下,可对其进行各种改变、替换和变更。因此,意指本公开的范围不是由该详细说明书限制而是由所附权利要求限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1