中国科技核心期刊      中国指挥与控制学会会刊     军事装备类重点期刊
武器信息系统

基于跨机内存映射的高速互联机制

  • 张桉齐 ,
  • 张利彬
展开
  • 北京宇航系统研究所, 北京 100076

张桉齐(1992—),男,工程师,研究方向为指挥控制系统相关设计。

张利彬(1982—),男,工程师。

Copy editor: 许韦韦

收稿日期: 2024-07-11

  修回日期: 2024-09-22

  网络出版日期: 2025-05-28

A high-speed interconnection mechanism based on multi-hosts memory mapping

  • ZHANG Anqi ,
  • ZHANG Libin
Expand
  • Beijing Institute of Astronautical Systems Engineering, Beijing 100076, China

Received date: 2024-07-11

  Revised date: 2024-09-22

  Online published: 2025-05-28

摘要

针对指挥控制、仿真推演高性能集群系统对按需数据共享、实时数据流传输等能力的需求,利用原生的PCIe通道,结合提出的单向消息队列,设计了一种基于跨机内存映射的高速互联机制。该互联机制设计了三种不同的协议来传输数据,包括内嵌协议、短协议和长协议。结合PCIe跨主机内存段映射方法,实现了系统节点之间的内存共享、RDMA等功能,具备低开销、低延迟、高带宽等特点,可支持指挥控制、仿真推演系统中批量数据在局域节点之间的共享与流动。通过功能性能实验,对设计的局域高速互联机制进行了测试,测试结果表明提出的互联机制具备高速数据传输能力,PCIe X16情况下RDMA传输速率可达到9 000 MB/s,同时可以有效降低数据传输延迟。

本文引用格式

张桉齐 , 张利彬 . 基于跨机内存映射的高速互联机制[J]. 指挥控制与仿真, 2025 , 47(3) : 109 -115 . DOI: 10.3969/j.issn.1673-3819.2025.03.015

Abstract

In order to meet the requirements of on-demand data sharing and real-time data stream transmission in Command Control and Simulation high-performance cluster systems, a high-speed interconnection mechanism based on Multi-hosts memory mapping is designed by using the native PCIe channel and the proposed one-way message queue. The interconnection mechanism provides three different protocols for transferring data, including inline, short, and long protocols. Combined with the PCIe Multi-hosts memory segment mapping method, it implements the functions of memory sharing, reflection memory, RDMA and other functions between the nodes. The proposal has the characteristics of low overhead, low latency, high bandwidth, etc., and can support the sharing and flow of batch data between local nodes in Command Control and Simulation systems. The final test results show that the proposed interconnection mechanism has high-speed data transmission capability, and the RDMA transmission rate can reach 9 000 MB/s with PCIe X16 lanes, and the data transmission delay can be effectively reduced.

Key words: PCIe; computing cluster; NTB; RDMA

随着信息化、智能化的不断发展应用,信息系统中目标传感器增多、探测精度增高、信息范围变广、数据类型多样化、信息量变大,数据爆炸式增长对指挥控制、仿真推演高性能集群系统内部数据传输的能力要求越来越高[1]。数据传输已由以往系统与外界的南北网络流量主导,变为东西网络流量主导[2]。指挥控制、仿真推演高性能集群系统的设计指标发生了重大转变,从追求单主机节点的性能变成追求多机系统的性能可扩展性(从Scale-up向Scale-out的转变)[3]。系统互联网络承载了节点成员之间的数据发送、传输、解析等功能。节点成员之间的互联网络性能,对于指挥控制、仿真推演集群系统有着至关重要的作用[4-5]。在多节点协同计算系统中,节点处理器、协处理器的处理速度和节点之间数据共享访问速度的不匹配造成了节点协作效率挑战,多核甚至众核处理器虽然提高了计算速度,但是并无法处理模块之间数据共享访问能力,甚至加剧了这种挑战,造成了集群系统内部分布式计算资源的浪费,难以有效地最大化挖潜集群系统效能[6]
当前,集群系统中主流数据传输技术都是依赖传统以太网的TCP/IP 协议,传输数据需在用户缓冲区和内核缓冲区之间进行多次拷贝[7]。这种反复读写操作降低了 CPU的利用率,并消耗内存带宽[8],存在着传输延迟高、占用处理器资源多、吞吐量小等问题,难以充分发挥多核CPU、GPU、NPU等性能,间接限制了指挥控制、仿真推演高性能集群系统的效能[9]
Intel、 Cisco、 Compaq、 EMC、 富士通等公司共同发起了InfiniBand(IB)架构,其核心就是将I/O系统从服务器主机中分离出来。其采用定制的通信协议,既可以支持节点内I/O设备的互联,又可以支持节点间的互联[10]。IB通过硬件实现了大量的协议处理和地址转换功能,减轻CPU的开销,又可以减少操作系统内核的介入,被广泛应用于高性能异构计算系统中局域节点的互联。然而,IB并不支持处理器Load/Store指令直接访问远程内存,只能通过RDMA(Remote Direct Memory Access)引擎进行数据块访问,需要额外的驱动或者编程库才能实现远程内存访问,难以提供较好的灵活性和透明性,且生态封闭无法国产化[11]
为此,本文研究拓展了传统用于主机与设备连接的PCIe(PCI Express)通道,设计了一种基于跨机内存映射的高速互联机制,对应设计了专用的内嵌协议、短协议和长协议,高效实现了系节点之间的内存共享、RDMA等功能,具备高效数据共享、实时数据流传输能力,能够为指挥控制、仿真推演高性能集群系统提供一种可替代非国产IB的国产化解决方案。

1 总体互联架构

基于原生PCIe协议的总体架构中,各主机节点通过PCIe适配卡的端口连接(通过光缆或铜缆),如图1所示。为了支持星型互联,连接之间可按需选配独立PCIe交换机。区别于传统的透明桥配置模式,用于互联的PCIe适配卡端口配置为非透明NTB (Non-Transparent Bridge)模式。NTB模式下,不同的PCIe适配卡隶属于不同的PCIe总线域,既可以充分利用PCIe的高速通道,又可以实现连接主机节点之间的互相隔离。
图1 基于原生PCIe协议的互联架构

Fig.1 Interconnection architecture based on the native PCIe protocol

在上述总体架构的PCIe连接通道基础上,后续研究工作主要包括:设计不同PCIe总线域的硬件地址转换机制,实现各连接主机节点跨机内存之间的映射,然后设计单向消息队列,并提供支持跨节点直接内存访问的数据传输协议,最终实现节点之间的内存共享、反射内存、RDMA等功能。相关研究工作介绍如下。

2 跨机内存之间映射

不同主机节点之间内存段映射,需要先分配主机内存空间,映射为本地PCIe域的地址空间,然后通过PCIe适配卡NTB模式下的跨域地址转换机制,实现本地节点内存地址到其他节点内存地址空间的转换映射。基于PCIe 适配卡的NTB端口和本地主机(Local Host)访问远程主机(Remote Host)内存的原理如图2所示。
图2 主机之间内存访问原理

Fig.2 Principles of memory access between hosts

内存段映射过程如图3所示,远程主机建立内存片段(Memory Segment),本地主机发起连接。然后在本地主机侧,从NTB基地址寄存器BAR(Base Address Register)窗口中分配地址,建立到远程主机物理内存的地址映射。
图3 内存段映射过程

Fig.3 Memory segment mapping process

本地主机的CPU访问NTB窗口地址,由PCIe 适配卡将内存读写TLP(Transaction Layer Packet)包转换成远程主机物理地址,实现访问远程主机的物理内存数据。这种利用PCIe适配卡实现地址映射的方式,不会引入额外的CPU开销。
本地主机内存段被映射到远程主机的内存段,当本地主机节点向该存储区域写入数据时,通过设计的地址转换映射机制,远程主机对应内存段的也会被更新,从而实现两节点之间内存共享功能。如果多个节点之间建立这种映射关系,则可以实现多个主机节点之间的数据共享、传输功能。

3 RDMA数据传输机制设计

RDMA数据传输功能基于上述跨机内存映射机制实现。通常,DMA(Direct Memory Access)包括请求、响应、传输、结束四个步骤。而RDMA则需要利用PCIe通道将传统的单机内DMA机制拓展到不同主机节点之间。利用PCIe通道将一台计算机的内存数据批量更新到另一台计算机的内存中,能够在仅引入较小操作系统开销的前提下,实现节点之间数据高效传输。
为了达到上述目的,本文使用原生PCIe协议维护DMA传输的过程中,定义了专用的DMA队列维护、管理DMA操作。专用DMA队列的数据结构变量名称定义为smi_dma_queue,对应句柄变量名称定义为smi_dma_queue_t。smi_dma_queue队列用于将待传输数据提交给PCIe或CPU的DMA引擎,以便通过主机之间的PCIe通道完成RDMA数据传输过程。smi_dma_queue队列包括以下几种状态:
(1) Idle状态:表示smi_dma_queue队列已创建,但队列为空,未被使用。
(2) Gather状态:表示smi_dma_queue队列正在接收提交的数据传输请求。
(3) Posted状态:表示smi_dma_queue队列中的待传输数据请求已经被提交给DMA引擎,互联机制正在处理该传输过程。
(4) Done状态:表示smi_dma_queue队列中所有的数据请求全部被成功传输。
(5) Aborted状态:表示PCIe或CPU的DMA引擎在处理传输操作过程中,收到了其他中断事件。
(6) Error状态:表示smi_dma_queue队列数据请求传输过程中出现了传输失败的情况。
正常DMA传输过程中,smi_dma_queue队列会先后经历Idle、Gather、Posted、Done四个状态;如果正常传输的Posted状态下发生错误,则转入Error状态;如果收到系统或程序的中断事件,则会转入Aborted状态。
进行RDMA数据传输时,smi_dma_queue队列所经历的状态迁移及流程如图4所示。
图4 RDMA 队列操作及传输状态图

Fig.4 RDMA queue operation and transmission status diagram

(1) 使用PCIe通道启动RDMA传输之前,首先利用CreateDMAQueue()接口函数创建smi_dma_queue队列,此时smi_dma_queue队列进入Idle状态。
(2) 转入Idle状态的smi_dma_queue队列,使用EnqueueDMATransfer()将待传输内存数据的地址放置到该队列中, smi_dma_queue队列随即转入Posted状态。
(3) smi_dma_queue队列处于Posted状态时,相关参数指定位置的内存数据处于传输状态。为了监控smi_dma_queue队列传输过程,设置一个循环计时器,周期性地运行WaitForDMAQueue(),获取队列的传输状态,不同的状态会触发不同的处理流程。
(4) 如果smi_dma_queue队列传输成功则会转入Done状态,利用ResetDMAQueue()接口函数重置队列,继续下一次DMA传输或者完成传输并删除队列,释放对应的内存资源。如果数据传输过程中调用了AbortDMAQueue()函数,smi_dma_queue队列则会转入Aborted状态。

4 兼容性消息队列设计

为了兼容标准的Socket接口,在上述RDMA基础上,设计高效的消息队列。使用消息队列提供单向、非阻塞的面向流的数据传输功能,以更好地支持第三方应用程序。消息队列中消息头(MSG_HEAD)的结构定义如图5所示,多数条目被对齐到恰好低于128字节的边界,以便在条目被写入时启用隐式流缓冲区刷新。
图5 MSG_HEAD的结构体

Fig.5 Structure of MSG_HEAD

最重要的元素是发送tx变量和接受rx变量,即环状短/长接收缓冲区的发送(尾部)和接收(头部)指针。发送方和接收方都维护一个在特定时间点同步的MSG_HEAD副本。由于tx变量仅由发送方修改,rx变量仅由接收方修改,不需要锁定,可提高数据传输效率。
与此同时,为消息队列提供了3种不同的消息协议,包括内嵌消息协议、短消息协议和长消息协议。内嵌消息发送和接收缓冲区适用于单独的极低延迟协议,而短协议发送缓冲区适用于将小消息收集和拼接成的大块。不同的协议用于应对不同类型传输需求,整体上提高PCIe通道的利用率。
(1)内嵌消息协议
内嵌消息协议是为小消息的极低延迟传输而设计的。即同步信息与数据合在一起,在单个传输事务中发送。图6显示了内嵌消息的格式。其总大小为128字节,对应于流缓冲区大小。字节127用于同步。因为PCIe适配卡总是从低到高写入地址,所以同步元素只在数据到达内存后才被写入。接收者可以在seq轮询以等待消息。
图6 内嵌消息的结构

Fig.6 Structure of the inline message

内嵌消息保存在发送方和接收方相同大小的环形缓冲区中。发送缓冲区用于组装消息,然后将消息传输到接收者上相应的环形缓冲区元素,顺序号(SEQ)还用于管理发送方的缓冲区分配。每次发送新消息时,顺序号中的序列号都会递增,并最终溢出归零。
另外,通过在消息中增加循环冗余校验,使用错误检查对低延迟操作进行优化。通过循环冗余校验和重传可以确保可靠传输。data116、data52和data4用于通过将数据与流缓冲区的末端对齐来优化拷贝大小。表1列出了可能的消息大小以及相应的偏移量和副本大小。
表1 内嵌消息大小和偏移量

Tab.1 Inline message size and offset

消息大小 偏移量 成员 复制大小
1-4 112 data 4 16
5-52 64 data 52 64
53-116 0 data 116 128
(2)短消息协议
短消息协议是为中等大小的消息设计的,用于收集小块数据合并为一条大消息发送,以提高数据流吞吐量。短消息以消息描述符开始,消息描述符包含类型(短)、数据长度和消息序列号。消息序列号用于确保短消息、长消息与内嵌消息之间的顺序。消息描述符之后就是数据部分,图7展示了短消息协议的布局。
图7 短消息的结构体

Fig.7 Structure of the short message

为了发送短消息,数据会被复制到本地发送缓冲区,消息描述符被建立,完整的消息通过远程写操作被传送到远程接收缓冲区。通常需要一或两次完成,具体复制操作次数需要根据消息是否接近接收缓冲区的末端确定。
(3)长消息协议
长消息协议旨在用于大包消息。与短消息协议的区别在于,数据直接复制到接收缓冲区,而没有中间本地副本。长消息协议源缓冲区必须与4字节边界对齐,以符合内存拷贝过程,图8显示了长消息的结构。
图8 长消息的结构体

Fig.8 Structure of the long message

长消息需要分两步发送,首先将消息描述符复制到远程缓冲区,然后将数据从调用者的发送缓冲区传输到远程接收缓冲区。数据总是从消息描述符之外的下一个128字节边界开始,以尽量获得最好的性能。 长消息协议的错误检查和协议信息处理与短消息协议基本相同。

5 性能分析

为了分析基于跨机内存映射的高速互联机制的性能,完成了基准测试。选用安装Ubuntu 18.04操作系统的国产鲲鹏920 CPU 服务器搭建了测试环境。两台鲲鹏920 CPU 服务器的PCIe适配卡之间分别通过PCIe X4 、PCIe X8 、PCIe X16方式连接。
考虑不同数据包大小对整体传输性能的影响,分别循环5 000次测试了从64字节到512 K字节数据包大小的情况。如图9所示,随着消息包大小的不断增大,两台鲲鹏920 CPU 服务器之间的实测数据吞吐量逐渐增加,并在消息大小达到16K之后传输速率趋于最大,这是因为RDMA是针对批量数据传输而设计的。PCIe X4情况下RDMA传输速率可达到3 040.09 MB/s、PCIe X8情况下RDMA传输速率可达到5 109.72 MB/s、PCIe X16情况下RDMA传输速率可达到9 011.14 MB/s。
图9 RDMA传输速率实测结果

Fig.9 The results of RDMA transmission rate

图10测试了两台鲲鹏920 CPU 服务器之间基于跨机内存映射的高速互联机制的数据传输延迟,考虑不同数据包大小对传输延迟的影响,分别测试了从1字节到8 K字节数据大小的情况。如图10所示,随着传输消息包的不断增大(达到10 us左右),两台鲲鹏920 CPU 服务器之间的数据传输延迟逐渐增加。与普通的万兆以太网相比,本文的互联机制具备更低的传输延迟,普通万兆以太网的数据传输延迟是本文互联机制数据传输延迟的10倍至20倍。
图10 传输延迟测试实测结果

Fig.10 The results of transmission delay

另外,测试了两台鲲鹏920 CPU 服务器之间基于跨机内存映射的高速互联机制的反射内存功能和性能。如图11所示,随着内存读写操作数据包的不断增加,反射内存的数据同步延时逐渐增加,两台鲲鹏920 CPU 服务器之间数据同步吞吐量逐渐增加,X8通道情况下达到了1 600 MB/s。
图11 反射内存测试结果

Fig.11 The results of reflection memory

6 结束语

针对指挥控制、仿真推演高性能集群系统对按需数据共享、实时数据流传输等能力的需求,利用原生的PCIe通道,设计了一种基于跨机内存映射的高速互联机制。互联机制中提出的单向消息队列提供了三种不同的协议来传输数据,包括内嵌协议、短协议和长协议。结合PCIe跨主机内存段映射方法,实现了系统节点之间的内存共享、RDMA等功能。最后对局域高速互联机制的传输性能和延迟进行了测试,测试结果表明提出的互联机制可以提供高速数据传输能力,PCIe X16情况下RDMA传输速率可达到9 000 MB/s,同时可以有效降低数据传输延迟,具备低开销、低延迟、高带宽等特点。设计的互联机制目前支持的节点数量有限,后续计划进一步研究多个PCIe交换机级联技术拓展连接能力。
[1]
孙长秋, 杜长斌, 李欣宇, 等. 智算中心关键技术研究[J]. 通信管理与技术, 2024(2): 33-37,52.

SUN C Q, DU C B, LI X Y, et al. Research on key technologies of intelligent computing center[J]. Communications Management and Technology, 2024(2): 33-37,52.

[2]
李仁刚, 王彦伟, 等. Direct xPU:一种新型节点间通信优化的分布式异构计算架构[J]. 计算机研究与发展, 2024, 61(6):1388-1 400.

LI R G, WANG Y W, et al. Direct xPU: a novel distributed heterogeneous computing architecture optimized for inter-node communication optimization[J]. Journal of Computer Research and Development, 2024, 61(6):1388-1 400.

[3]
HOU W, ZHANG J, et al. Understanding routable PCIe performance for composable infrastructures[C]// Symposium on Networked Systems Design and Implementation, Santa Clara CA USA 2024, 297-312.

[4]
CAO W, ZHANG Y, YANG X, et al. PolarDB serverless:a cloud native database for disaggregated data centers[C]// International Conference on Management of Data, Virtual Event, China 2021, 2 477-2 479.

[5]
梁晨, 陈昊, 杨舟, 等. 机载嵌入式超算平台RDMA技术研究及实现[J]. 航空电子技术, 2023, 54(4): 36-42.

LIANG C, CHEN H, YANG Z, et al. Research and implementation of RDMA technology for airborne high performance embedded computing platform[J]. Avionics Technology, 2023, 54(4): 36-42.

[6]
XU J, CHEN Y, et al. LightPool: a NVMe-oF-based high-performance and lightweight storage pool architecture for cloud-Native distributed database[C]// 2024 IEEE International Symposium on High-Performance Computer Architecture (HPCA), Edinburgh United Kingdom, 2024, 983-995.

[7]
LIU H, CHEN B, et al. Virtualization solution for fast storage based on RoCE+P2P technology in heterogeneous environment[C]// The 6th Information Technology, Networking, Electronic and Automation Control Conference, Chongqing China, 2023, 6:620-625.

[8]
HURWITZ J, FENG W C. End-to-end performance of 10-gigabit Ethernet on commodity systems[J]. IEEE Micro, 2004, 24(1):10-22.

[9]
翁创. 一种面向虚拟化环境的Linux TCP/IP流程优化方法[J]. 软件导刊, 2024, 23(1): 81-89.

WENG C. An optimization method for linux TCP/IP processing in virtualized environments[J]. Software Guide, 2024, 23(1): 81-89.

[10]
张众钦. 基于InfiniBand的高性能计算机技术研究[J]. 信息记录材料, 2021, 22(11):231-232.

ZHANG Z Q. Study on high-performance computer technology based on InfiniBand[J]. Information Recording Materials, 2021, 22(11):231-232.

[11]
徐德发. 基于HPC的RoCE网络和InfiniBand网络性能对比[J]. 无线互联科技, 2024, 21(9):111-116.

XU D F. Performance comparison of the RoCE networks and InfiniBand networks based on HPC[J]. Wireless Internet Science and Technology, 2024, 21(9):111-116.

文章导航

/