李祎(1994-), 女, 本科在读硕士生, 主要研究方向为高性能互连网络
陈淑平(1983-), 男, 助理研究员, 主要研究方向为高性能互连网络
何王全(1975-), 男, 高级工程师, 主要研究领域为高性能计算体系结构, 并行语言设计, 编译优化, 运行时系统
IPoIB是一种在InfiniBand网络上支持IP的协议, 使IP 应用程序可以运行在InfiniBand网络上. 我们在国产并行系统上实现了IPoIB, 通过乱序处理、内存拷贝优化、网络参数调优和避免应答延迟的优化手段, 实现了IPoIB在国产并行系统上的性能提升. 实验结果表明, IPoIB在国产并行系统上正确运行, 网络带宽与优化前相比提高近6倍, 与10GbE万兆以太网相比, IPoIB更具优势, 乱序处理机制减少乱序效果明显.
IPoIB is a protocol that supports traditional Ethernet over InfiniBand networks, allowing IP applications to run on InfiniBand networks. We realize IPoIB on the domestic parallel system to improve the performance of IPoIB on the system, we also propose four optimization methods, namely, reordering packets, optimizing memory copy, tuning network parameters, and avoiding delayed acknowledgement. Practice shows IPoIB runs correctly on the domestic parallel system, and under the methods of optimum, IPoIB’s network bandwidth performance is nearly 6x higher than the not-tuned version. IPoIB has more advantages compared with 10 GbE, and the reordering method shows obvious effects.
最新公布的HPC top 500显示, 有207台超级计算机使用以太网作为互连网络, 这表明TCP/IP是广泛使用的网络协议. 但随着众多学科领域对网络性能需求的不断提升, TCP/IP协议中频繁数据拷贝、复杂协议处理机制和中断上下文切换逐渐成为数据传输瓶颈. 而IB[
IB是一种高性能、低延迟的基于通道的高速互连结构标准, 支持RDMA技术, 具有零拷贝以及CPU负载卸载的特点, 能够有效减少系统CPU和内存的开销, 提高网络吞吐量并降低网络延迟. IPoIB是一种在IB网络之上构建TCP/IP的技术, 隐藏IB网络的复杂性, 使得TCP/IP 应用程序可以不加修改地在以IB协议为基础的网络之上运行, 同时还能利用IB网络特有的优势以获得更好的网络传输性能[
众核处理器具有计算能力强、性能功耗比高等突出优点, 异构众核架构已成为当前超级计算机体系结构的重要发展方向. 本文基于“国产异构众核并行系统”展开, 对IPoIB进行移植, 并在已有优化方法上研究进一步提升IPoIB网络性能的手段, 对于支持TCP/IP应用具有重要的意义.
文章的后续部分组织如下: 第1节介绍国产并行系统平台环境, 第2节给出相关工作介绍, 第3节简要介绍IPoIB的实现, 第4节详细阐述IPoIB在国产并行系统上的优化手段, 第5节是实验结果, 最后对本文进行总结.
“国产并行系统”[
运算系统采用申威众核处理器构建, 通过中心交换网络和管理网络与存储系统和管理系统连接, 系统的登陆界面和存储空间采用单一映像组织, 为用户提供统一的视图.
数据中心网络一般采用TCP/IP协议并基于以太网技术搭建, 近年来, 为了满足数据中心网络对高带宽、低延迟、低能耗的需求, 减少TCP/IP协议处理对CPU产生的负担, 业内研究者重点着眼于TCP/IP协议卸载技术. TOE (TCP卸载引擎)技术利用硬件分担CPU对TCP/IP协议处理所造成的负担, 将协议的处理放到网卡专用硬件中, 使CPU占用率大幅下降, 带宽性能也有一定提升, 但由于网卡和主机接口的不兼容性和延迟增加的额外消耗, 其发展难以维系.
研究者又从新型高速网络(IB、FC等)与传统TCP/IP协议结合以提升网络性能的角度出发, 提出iWARP、RoCE、SDP等网络融合技术: iWARP (Internet Wide Area RDMA Protocol)[
IPoIB作为在IB中兼容TCP/IP应用的主要技术, 其性能优化一直是研究热点, 研究人员从IPoIB的多个方面对其进行了数据处理方面的优化探索: 包括支持LRO、aRFS、RSS、TSS等CPU负载卸载技术、优化中断处理流程、实现隧道卸载、利用多个pkeys实现VLAN等, 实现了IPoIB在多数据流多处理器下的性能提升.
上述工作都是关于网络融合技术在商用平台上的研究进展, 目前在国产系统上尚未有网络融合技术的应用. 本文做了一种新的研究尝试, 将IPoIB协议应用到国产并行系统中, 对移植后的IPoIB进行性能测试和评估, 并且使用一系列优化方法来提高IPoIB在国产并行系统中的通信性能.
IB是IBTA提出的一种基于通道的高速互连结构标准, 可提供低延迟、高带宽的数据传输能力, 在HPC领域具有广泛的应用. 它采用RDMA编程语义, 为用户提供IB verbs编程接口, 但其语义和编程方法与Socket编程语义有非常大的差异, 传统的TCP/IP应用不能在其上直接运行. IPoIB解决了该问题, 它将HCA卡虚拟成网卡设备, 使通用的TCP/IP 应用程序不加修改地在IB网络中运行, 拓展了IB应用领域及范围.
IPoIB协议架构图
IPoIB分别利用两种IB服务进行数据传输, 其中RC (reliable connected)是面向连接的可靠传输服务, 最大可发送2 GB大小的数据; UD (Unreliable Datagram)是不可靠的数据报服务, 一次最多发送4 KB数据.
IPoIB主要实现下列功能: (1)地址解析: 将IB地址信息编码进MAC地址, 通过ARP获取目的方MAC地址, 进而获得QPN (Queue Pair Number)、LID等IB地址信息; (2)报文封装: IPoIB为IP报文添加4字节的链路层包头, 并封装成一条IB消息, 通过IB网络发送给远程节点, 完整的IPoIB 数据包如
发送过程: 应用程序通过sys_socketcall系统调用进入socket内核层, socket层再通过sock_sendmsg函数调用进入inet_sendmsg函数, 然后调用TCP层发送函数tcp_sendmsg, 该函数在准备好sk_buff结构后调用skb_do_copy_data_nocache将用户数据拷贝到内核层, 然后数据包依次通过IP层、设备驱动层, 最后利用IPoIB驱动中的ipoib_hard_header函数为ip报文添加4字节报文头, 然后调用ipoib_start_xmit函数, 将数据内存地址进行DMA映射, 并通过IB的send操作将数据发送出去.
接收过程: 应用进程调用sys_socketcall系统调用进入内核层, 再通过socket层的接收函数sock_recvmsg进入到TCP层, TCP调用tcp_recvmsg函数接收数据, 当没有数据包到来时, 用户接收进程会休眠. IPoIB驱动程序通过NAPI轮询函数ipoib_poll检查是否有数据到达, 并对数据包进行正确性检验, 去掉IPoIB层链路头, 然后通过netif_receive_skb函数将数据依次移交给IP层、TCP层处理. TCP层再通过skb_copy_datagram_iovec将内核层的数据拷贝到用户层缓冲区.
IPoIB数据包格式图
IPoIB数据包协议处理流程图
IPoIB数据包在TCP/IP协议栈处理过程中会占用较多的CPU时间和内存资源, 主要包括数据拷贝、协议处理机制、延迟应答等3个方面. 数据拷贝包括数据包在网卡和内核空间以及内核空间与用户空间之间的拷贝; 协议处理机制包括复杂的拥塞控制[
非确定性路由中数据包沿不同的路径到达接收端以及数据包在发送单元中调度顺序与到达顺序不一致等因素都会导致接收端产生乱序数据包[
窗口长度
乱序处理示意图
详细算法描述如算法1.
算法1. 乱序处理算法
INPUT:
到达接收端的数据包序号
预期序列号
BEGIN
IF(
BEGIN
DO{
将数据包转交给上层;
}WHILE(
END
ELSE IF(
将数据包转交给上层;
ELSE IF(
暂时缓存数据包;
ELSE IF(
DO{
IF(
BEGIN
将该数据包转交给上层;
END
}WHILE(
END
优化内存拷贝是提高IPoIB性能的重要手段. 在
网络参数调优是提高IPoIB性能的手段之一, 通过调整内核参数达到提升IPoIB性能的目的.
网络参数调优对内核环境影响较小, 但是网络性能提升效果却较为明显. 需要注意的是, 内核参数多种多样, 参数的设置受具体的服务器系统环境影响, 需要根据实际网络应用负载对参数进行适应性调整, 在寻找最优参数中必须分清主次, 突出改善主要参数, 使网络尽可能得到有效利用. 针对具体的输入数据流, 本文利用sysctl命令设置网络参数, 试验了网络参数优化模型中不同的参数变量值和不同的参数组合, 找出能为IPoIB带来性能提升的参数组合及其数值. 根据试验结果, 给出令IPoIB通信性能最优的配置策略: (1)启用tcp_low_latency, 要求TCP/IP栈在高吞吐量的情况下尽量保持低延时; (2) 将rmem_max和wmem_max设为16 MB, 增大TCP连接在发送和接收ACK期间所能处理的最大数据包, 从而减少传输等量数据过程中处理ACK所用时间; (3) 将tcp_rmem和tcp_wmem中的max值设为16 MB. 目的在于增大socket发送和接收缓冲区内存空间, 使一块内存空间存放尽量多的数据, 减少为数据分配多个内存块的管理开销, 优化数据传输流.
网络参数优化模型图
TCP采用应答延迟机制时, 如果当前时间与最近一次接收数据包的时间间隔小于延迟应答超时时间, 则会推迟ACK应答的发送, 积攒多个应答并将它们结合成一个响应包, 与需要沿该方向发送的数据一起发送, 从而减少协议开销. 然而, 在应用程序进行交互处理时, 延迟ACK应答时间过长可能会降低应用程序的效率. TCP协议中利用宏定义TCP_DELACK_MIN控制最小延迟确认时间, 一般默认值为(HZ/25), 也就是40 ms. 本文在不改变其它参数的情况下, 逐一试验在1 ms~40 ms范围内不同的TCP_DELACK_MIN值, 并测试网络最大带宽, 发现最小延迟应答时间设为5 ms左右时, 网络带宽可以达到最大, 既能维持较低协议开销, 又可以减少TCP传输中ACK的等待时间, 使得网络带宽最大化, 提升内存的利用率. 最佳的延迟应答时间受服务器系统环境和网络应用场景的影响, 本文所得结果在其它集群系统中可能不是最优, 但其试验方法具有普适性.
本文在国产异构众核系统上对IPoIB进行测试, 配备32 GB内存, 节点间采用40 GB/s的Infiniband EDR网络连接. 网络性能测试工具选用Netperf-2.4.5 和Iperf-2.0.2. Netperf主要用于记录两对联节点间TCP单连接带宽、延迟、CPU利用率、内存等资源的占用情况, Iperf用于记录两对联节点之间TCP多连接带宽.
利用Netperf工具测试两对联节点间单个TCP连接优化前后不同消息大小带来的带宽变化, 结果如
不同消息大小带宽对比图
从
使用Iperf测试两节点间多个TCP连接的网络最大带宽, 从2个连接测到10个连接, 如
不同连接数带宽对比图
测试数据表明, 连接数为6或7时, 网络带宽达到最大. 优化后的网络带宽可以达到1800 MB/s, 相比单连接最大带宽1340 MB/s提升1.34倍, 相比优化前多连接的网络最大带宽615 MB/s, 提高近3倍. 可以看出, 在多个进程下网络带宽能有较大提升, 主要原因是: (1)并行系统的CPU多核组得到了有效利用; (2)通过在传输过程中对数据包进行抓取, 发现在其中某个TCP连接等待ACK不发送数据包时, 另一个TCP连接不用等待ACK, 继续发包, 从而使得链路带宽得到有效利用.
在高速网络环境下, CPU的处理能力很大程度上影响网络的性能. 通过测试发现, 优化前IPoIB CPU利用率为33%, 优化后的IPoIB CPU利用率在24%左右, 优化后的CPU利用率明显低于优化前. 在最好的情况下, IPoIB优化后的CPU利用率可以降低约30%.
利用Netperf测试优化后的IPoIB在国产并行系统上两节点间通信的带宽和延迟, 并与万兆以太网对比. 万兆以太网卡型号T520, 10 GB/s, 理论带宽为1250 MB/s, 万兆网卡测试环境采用国产中标麒麟服务器, 处理器型号为申威1621. 测试结果如
IPoIB与万兆以太网性能对比
测试项 | 带宽(MB/s) | 延迟(μs) |
IPoIB | 1340 | 39 |
万兆以太网 | 1024 | 30 |
从
利用Iperf测试国产并行系统上两节点间通信处于不同流量负载时的乱序情况, 乱序处理窗口长度
不同流量负载下乱序处理效果
发送速率(MB/s) | 乱序处理前后乱序次数 | 乱序减少比例(%) | |
处理前(次/s) | 处理后(次/s) | ||
1800 | 3815 | 184 | 95.2 |
800 | 1411 | 37 | 97.4 |
400 | 469 | 0 | 100 |
为了验证乱序较重时窗口长度
不同窗口长度的网络性能对比
窗口长度 | 乱序减少比例(%) | 最大网络带宽(MB/s) |
32 | 95.8 | 1782.32 |
80 | 98.3 | 1624.71 |
本文将IPoIB移植到国产异构众核并行系统上, 并进行了乱序处理、拷贝优化、网络参数调优以及应答延迟避免等一系列优化措施. 测试结果显示, 优化后IPoIB基础带宽峰值性能为1340 MB/s, 比优化前IPoIB带宽提升近6倍, 也高于10 GB万兆以太网; 多连接下带宽达到1800 MB/s, 相比单连接提升1.34倍; CPU利用率也有了显著降低; 乱序处理机制作用效果明显.
IPoIB基于IB的send/receive异步消息机制实现, 而没有利用具有零拷贝、CPU负载卸载优势的RDMA机制, 考虑到在一些特定的应用场景下利用RDMA实现IPoIB的通信效果可能会更好, 后续将制定以RDMA为底层通信机制的IPoIB实现策略, 以期进一步提高IPoIB通信性能.
徐迪威, 余焯佳. InfiniBand高速互连网络设计的研究. 电脑与电信, 2012, (7): 26–29.
刘爱华, 钱德沛, 董小社, 等. IPoIB体系结构及其应用. 计算机科学, 2003, 30(9): 85–88.
朱叶青, 牛德姣, 蔡涛, 等. 不同网络环境下大数据系统的测试与分析. 江苏大学学报(自然科学版), 2016, 37(4): 429–437.
何王全, 刘勇, 方燕飞, 等. 面向国产异构众核系统的Parallel C语言设计与实现. 软件学报, 2017, 28(4): 764–785.
Kaur G, Kumar M, Bala M. Comparing Ethernet and soft RoCE for MPI communication. IOSR Journal of Computer Engineering, 2014, 16(4): 52–58.
秦宣龙, 李大刚, 都政, 等. 面向数据中心网络的高速数据传输技术. 软件, 2016, 37(9): 1–7.
伍卫国, 杜哲君, 刘娟, 等. InfiniBand结构中SDP协议分析. 微电子学与计算机, 2004, 21(9): 144–148.
孔金生, 任平英. TCP网络拥塞控制研究. 计算机技术与发展, 2014, 24(1): 43–46.
王敏杰, 徐昌彪, 刘光明. 无线网络下TCP重传定时器研究. 计算机工程与应用, 2004, 40(36): 146–150.
胡晓峰, 孙志刚, 苏金树. 基于NewReno拥塞控制机制的TCP分组乱序影响分析. 计算机工程与科学, 2009, 31(5): 8–12.