用于优化约束系统内的网络数据流的方法
【专利说明】用于优化约束系统内的网络数据流的方法
【背景技术】
[0001] 近年来,"基于云"的服务、高性能计算(HPC)、以及应用数据中心的其它活动等的 实现已经被广泛采用。在典型的数据中心安装情况中,安装在服务器类和服务器机架中的 大量服务器在使用网络连接(例如,以太网或InfiniBand)和各种开关机构(例如,开关闸 刀/模块和"架顶式"(ToR)开关)进行的通信中互连。
[0002] 在HPC的方面中,实现非常大量的计算节点以并行或实质上并行的方式来解决各 种任务。本质上,每一个计算节点执行更大型、更复杂任务中的一部分。为了实现所述机制, 存在输入数据和输出数据必须在计算节点之中进行交换的需要。所述数据使用一个或多个 互连进行通信。
[0003] 使用各种类型的互连来使互连层次结构中的计算节点互连。例如,在所述层次结 构的顶端的是在同一处理器中的计算核心之间的互连。下一级是同一平台(例如,服务器 刀片或模块)中的处理器之间的互连。下一级是平台之间的互连,例如,刀片服务器中的底 板。紧接着是服务器机箱和/或ToR开关之间的互连、服务器机架之间的互连、并且最终是 数据中心之间的互连。通常,当一个节点移动到层次结构中的更下层时,节点之间的通信带 宽减少。
[0004] 除了与通过互连链路本身的传送相对应的延迟(其随着链路带宽以及长度以及 切换速度而改变)之外,明显的延迟由在接口处对互连和/或附加处理所执行的操作和/ 或需要准备通过互连层次结构中的各种互连链路传送的数据造成。这些数据传送延迟共同 减少了通信性能,以及因此减少了整体HPC实现的性能,并且可能呈现出计算节点的总体 延迟(处理和数据传送)的重要部分。
[0005] HPC的另一重要方面是软件架构。以并行的方式实现使用数十万的计算节点的软 件需要与常规应用所使用的相比显著不同的软件架构。另外,特定的软件模块已经被开发 以使用相对应类型的互连,例如,用于通过Infiniband进行通信的软件模块。
【附图说明】
[0006] 前述的方面和本发明的许多附随的优点将通过对下面的【具体实施方式】的提及同 时结合所附的附图而变得显而易见同时变得更容易理解,其中,在各种视图中,类似的附图 标记指代类似的部分,除非特殊指出:
[0007] 图1是包括本地插槽和远程插槽的2-插槽服务器平台的示意图;
[0008] 图2是被配置为使用代理数据路径来实现数据传送的2-插槽服务器的示意图;
[0009] 图3是根据一个实施例的示出了在主机和MIC中实现的用于实现代理数据传送的 软件部件的示意图;
[0010] 图4是根据一个实施例的示出了用于实现代理数据传送的部件和队列对的图;
[0011] 图5是根据一个实施例的示出了在用于使用多个数据段来实现代理RDM数据传 送的传送的来源侧上的部件之间的互连;
[0012] 图6是示出了被执行以实现图5的RDM数据传送的操作的流程图;
[0013] 图7a和图7b是根据一个实施例的示出了一对2-插槽服务器平台之间的本地到 本地数据传送的实现的示意图;
[0014] 图8a和图8b是根据一个实施例的示出了一对2-插槽服务器平台之间的本地到 远程数据传送的实现的示意图;
[0015] 图9a和图9b是根据一个实施例的示出了一对2-插槽服务器平台之间的远程到 远程数据传送的实现的示意图;
[0016] 图10是示出了单独的平台上的各种端点之间的数据传送的数据传送路径的表;
[0017] 图11是根据一个实施例的示出了用于实现通过SCIF和InfiniBand的RDM的软 件架构的图;以及
[0018] 图12是根据一个实施例的示出了用于实现MPI双核DAPL的操作和逻辑的流程 图。
【具体实施方式】
[0019] 本文描述了用于优化约束系统内的网络数据流的方法和装置的实施例。在下面的 描述中,阐述了各种具体细节来提供对本发明的实施例的透彻的理解。然而,相关领域的技 术人员将认识到,本发明可以在没有所述具体细节的一个和多个或在具有其他方法、部件、 材料等的情况下来进行实施。在其它实例中,公知的结构、材料、或操作没有被示出或详细 描述,以避免使本发明的方面难以理解。
[0020] 在整个说明书中对"一个实施例"或"实施例"的提及意味着结合所述实施例所描 述的特定的特征、结构、或特性被包括在本发明的至少一个实施例中。由此,在本说明书的 各个位置中短语"在一个实施例中"或"在实施例中"的出现并不一定全部指代同一实施例。 此外,所述特定的特征、结构、或特性可以以任何合适的方式被组合在一个或更多个实施例 中。
[0021] 为了清楚起见,在本文中附图中单独的部件还可以由附图中它们的标签而不是由 特定的附图标记所指代。此外,指代特定类型的部件(与特定的部件相对)的附图标记还 可以利用跟随有"(typ) "的附图标记示出,其中"(typ) "表示"典型的"。应当理解,这些部 件的配置将是类似部件的典型部件,所述类似的部件出于简洁和清晰可以存在但没有在附 图中示出;或者另外没有被标记单独的附图标记的类似部件。相反,"(typ)"不应被解释为 表示部件、元件等通常被用于其所公开的功能、实现、目的等。
[0022] 图1示出了具有架构的服务器平台100,其示出了约束系统的示例。服务器包括两 个Ime丨?Xeon?处理器(亦称CPU) 102和104,每一个都与单独的插槽相关联,所述单独 的插槽被描绘为远程插槽106和本地插槽108。每一个插槽包括共同被操作为服务器平台 100的单独的服务器子系统的部件的集合。对于远程插槽106,所示出的部件包括主机存储 器110、输入-输出集线器(IOH) 112、PCIe(快速外围部件互连)互连114、以及一对PCIe 卡116和118。类似地,对于本地插槽108,所示出的部件包括主机存储器120、输入-输出 集线器(IOH) 122、PCIe互连124、以及一对PCIe卡126和128。如图1所进一步示出的,处 理器102和104经由快速路径互连:? (QPI)链路130进行连接。
[0023] 指出的是,图1和本文中的其他图所示出的架构是示例性的,并且具体的部件仅 仅是更通用部件的类型的表示,所述更通用部件可以被实现用于特定的功能、功能的集合、 或实现。例如,Xeon旬处理器和IOH是通用CPU和IO子系统的表示。
[0024] PCIe互连结构包括多个基于串行的互连,所述基于串行的互连通常被实现为多通 路物理链路;通路宽度由PCIenx进行标识,其中,n为1、2、4、8、16、或32。由更早期的PCI 标准发展而来的PCIe被实现为并行总线结构。在一些情况下,平台上的PCIe互连结构可 以被称为PCIe总线,注意,实际的互连结构本身包括点对点(多通路)链路。出于历史原 因,PCIe互连结构的逻辑层次结构被描绘为类似于总线的结构,因为PCIe操作的各个方面 (例如,PCIe设备列举)是继承自PCI的类似操作的。
[0025] 正如PCI-样,PCIe根联合体位于PCIe互连层次结构的顶部。取决于所述架构, 一个或多个PCIe根联合体可以存在于IOH和/或采用片上系统(SoC)架构的处理器中。 在图1所示出的配置中,IOH112和122中的每一个都包括耦合到PCIe接口(I/F) 134的 PCIe根联合体132。
[0026] PCIe根联合体用作连接到其物理互连结构的设备的管理器,以及用作这样的设备 和主机CPU之间的接口。大部分现代的计算机和服务器包括一个或多个PCIe槽,其中,相 对应的PCIe卡能够安装在所述一个或多个PCIe槽中。在某些设计中,每一个PCI槽具有 相同数量的PCIe通路,同时,在其他设计中,槽的PCIe通路的数量可以不同,例如,针对更 高速度的外围设备(例如,图形卡和网络适配器)使用更宽的互连。
[0027] 在启动期间,每一个PCIe根联合体将执行测试来查看哪些设备出现在其相关联 的PCIe槽中,并且列举这些设备。通常,PCIe互连层次结构可以支持到除PCIe卡之外的其 他设备的连接,所述其他设备例如,安装到服务器主板的各种芯片和接口或耦合到主板的 另一板。这些设备也被列举出。在图1中,PCIe卡116和118被列举作为PCIe设备1和 2,其中所附的"r"用于指示它们是远程插槽106上的PCIe设备1和2。类似地,PCIe卡 126和128被列举作为本地插槽108上的设备1和2 (并且由此被标记为11和21)。
[0028] 通常,通过PCIe互连的大部分通信都与CPU和PCI设备(例如,PCIe卡和外围部 件)之间的数据传送相关。例如,假设应用希望将数据(例如,存储器块)经由计算机网络 发送到另一服务器平台,并且假设PCIe卡128是网路适配器卡,例如,以太网卡。通常,该 应用结合运行在处理器104上的可适用的网络栈软件将生成包含有文件数据并且被缓存 在主机存储器120的数据分组流,并且将经由PCIe写将数据分组发送到PCIe卡128,PCIe 卡128然后经由网络将所述分组传输到其它服务器平台。更高级的网络适配器还可以被实 现用于支持直接存储器访问(DMA)读和写,其涉及更少的处理器开销并且促成甚至更高的 数据传送率。
[0029] 在前述的CPU到PCIe端点(例如,PCIe卡128)传送中,传送率通常被限制为PCIe 互连124的带宽,所述PCIe互连124的带宽受到由于互连上的PCIe事务的竞争的延迟而减 小。在PCIe3. 0的情况下,最大带宽是985MB/S每通路,而8通路(8x)互连支持大约8GB/ s的带宽,以及16通路(16x)互连支持大约16GB/s的带宽。
[0030] PCIe的另一特征支持对等(P2P)通信,所述对等(P2P)通信允许PCIe设备之间的 以及由PCIe根联合体促成的直连通信,而不涉及CPU的处理器核心。例如,P2PPCIe数据 传送可以被应用以能够实现相同PCIe互连层次结构内的PCIe卡/设备之间(例如,本地 插槽108上的PCIe卡126和128之间以及远程插槽106上的PCIe卡116和118之间)的 读和写数据传送。
[0031] 对IOH的使用源自于公知的北桥/南桥计算机系统架构,IOH与南桥相对应。因为 P2P数据传送历史以来不常见,所以不存在修改现存IOH设计以促成更高的P2P传送率的动 机。结果,PCIe设备之间的P2P读被限制为大约lGB/s,而PCIe写未被限制。使用P2P技 术的单独的插槽上的PCIe设备之间的数据传送针对PCIe读和写二者被限制为大约300MB/ s。这些限制导致由PCIe根联合体架构而不是PCIe互连和PCIe接口提供的处理能力的缺 乏。
[0032] 最近,Intel?引入了XeonPhi?协处理器系列,其包括具有在PCIe卡上实现的许 多集成核心的处理器。设备的种类在本文中被称为多集成核心设备或简称为MIC。在一个 实施例中,MIC包括大约60个核心,未来一代的XeonPhi?协处理器被计划为包括多达100 个核心以及更多。
[0033] MIC架构能够使单个服务器平台支持大量的计算处理核心,尤其是当多个MIC被 安装在同一平台中时。这对