APP下载

一种面向不可靠网络的快速RDMA通信方法

2015-09-06王绍刚等

湖南大学学报·自然科学版 2015年8期

王绍刚等

摘要:大数据量的远程内存访问(RDMA)传输是并行计算机中最基本的通信模式之一,对系统整体性能的影响很大.随着并行计算机系统的规模扩大,系统的容错性设计面临着很大的挑战,互连网络具有链路不可靠、自适应路由等特点,如何面向不可靠网络实现可靠的端到端RDMA传输是并行系统体系结构设计的一大难题.提出一种面向不可靠网络下的快速RDMA传输方法,方法能够在节点控制器芯片上高效实现,对上层驱动软件和应用提供可靠的端到端RDMA传输服务.与传统的建立连接的方法相比,方法的硬件设计复杂度大大降低;方法另一优点是实现了按需重传,避免了传统方法中一次RDMA传输出现错误时,需要重传整个RDMA数据的开销,在相同的错误概率下,新方法的传输效率得到了很大的提升.

关键词:远程内存访问;RDMA;MPI;滑动窗口

中图分类号:TP302.1 文献标识码:A

A Fast RDMA Offload Method for Unreliable

Interconnection Networks

WANG Shaogang,XU Weixia,WU Dan,PANG Zhengbin,XIA Jun

(College of Computer, National Univ of Defense Technology, Changsha, Hunan410073, China)

Abstract:Large data RDMA (Remote Data Memory Access) transport is the most commonly used parallel communication mode for parallel computers, which has great impact on the whole system performance. As the system size increases, the faulttolerate architecture design faces new challenges. The interconnection network usually uses the adaptive routing mode and becomes more unreliable. This paper proposed a fast RDMA offload method for unreliable interconnection networks, which can be efficiently implemented on the NIC hardware and provides reliable RDMA communication for upper driver and programs. Compared with the traditional approaches, the hardware overhead is greatly reduced. Another benefit is that it can partially retransmit the fault data, which greatly reduces the whole RDMA delay. Simulation results show that the RDMA delay is greatly reduced, compared with the traditional methods.

Key words:remote data memory access, RDMA, MPI, sliding window approach

高性能并行计算机系统发展迅速,2013年11月份发布的Top500高性能计算机排行榜中,系统峰值性能已经达到50 P (Petaflops),处理核数达到数十万的规模.据此发展趋势,国际上高性能计算机计算水平将在2015年左右达到100 P量级,在2016年达到1 E (Exaflops)量级[1-4].如此大规模的系统需要支持数百万个节点的高效通信,节点间通信机制已成为制约系统性能乃至成败的关键因素.

并行计算机互连网络中,Serdes链路速率已达40Gbps[5-7],高速链路的误码率大大增加,给链路级的可靠传输带来了很大的挑战;随着网络规模的扩大,网络的平均故障时间越来越短,并行计算机的互连网络变得越来越“不可靠”.在这种条件下,并行计算机体系结构设计迫切需要进行对应的容错设计.

远程内存访问(RDMA)是并行机系统中最基本的通信模式之一[1,3],其他复杂的聚合通信也依赖基本的RDMA支持,在其基础上实现的并行软件运行库(MPI,PGAS等)是并行作业的基础,对作业的性能影响很大.在实现方案上,基于节点控制器硬件支持的RDMA操作是提高通信性能的有效方式,也是控制器设计中的难点.在高速互连网络环境下,如何实现可靠的端到端RDMA传输,需要有效解决报文到达乱序、链路层校验漏检、链路故障处理等问题.

硬件支持RDMA通信的现有方法包括文献[2-4,8]中的工作.总体来看,现有方法存在的主要问题是方法的可扩展性不高,在提高并行RDMA传输的数量时,硬件资源的开销增长较快;单报文出错的情况下,需要将整个RDMA报文完全重传,带来了不必要的开销.

针对现有方法的缺点,本文提出了面向不可靠网络快速RDMA通信的实现方法,方法可高效的实现在节点控制器中.本文针对底层互连网络的假设为:1)由于自适应路由、链路流量控制等原因,互连网络是乱序的;2)由于链路故障等原因,互连网络可能丢弃报文.

本文提出的面向不可靠网络的快速RDMA传输方法具有如下的创新点:

1)方法更易于在硬件中实现,具有很好的扩展性,在同等硬件资源的条件下,本文方法能够将节点控制器所支持的并行RDMA传输数量大大提升.

2)本文提出的方法最大限度地减少了数据重传,通过采用部分重传的方法,避免了现有方法在单报文出错或丢失时,需要将整个RDMA数据进行重传所带来的开销.

1远程内存访问(RDMA)

1.1概念

远程内存访问(RDMA)是并行计算环境下基本的通信模式,在此基础上能够实现多种软件通信协议,如MPI,TCP/IP通信协议等[9].因而RDMA通信模式的效率对系统通信性能具有显著的影响.一次RDMA传输的基本操作是将发送方指定内存区域中的数据搬移到接收方指定的内存区域中,可以通过表1的参数进行描述.

2.2连接上下文格式

连接上下文是记录RDMA传输状态的表格数据结构,表格中每一个表项记录一次RDMA传输过程中的状态.在硬件实现上,上下文记录表主要保存在片内存储器中,上下文表项的个数是折衷性能和硬件资源而确定的.上下文表项的项数越多,则其他节点与该节点可以建立的连接数越多,因而系统中可以并发进行的RDMA传输越多,并发传输规模对大系统的可扩展性具有意义.

在本文提出的方法中,连接上下文包括发送端和接收端两部分,进行RDMA传输时,需要在发送端和接收端的连接上下文间建立连接,上下文表项的结构由表4所示.

2.3RDMA传输流程

2.3.1连接建立流程

建立连接的过程是在发送方和接收方的上下文中为本次RDMA传输分配资源.发送方的上下文资源在节点收到处理器发出的RDMA请求时分配,并向接收方节点发送连接请求当前窗口的数据报文接收标志,由向量格式表示,向量的位宽表明当前接收窗口的大小,即系统可支持的一次RDMA传输中并发报文传输数量. 第i 位为1时,表示接收方已经收到序列号为WBASE + i的RDMA数据报文(为了计算方便,向量索引的下标从1开始计数).〖BG)F〗〖HJ〗〖HT5SS〗

接收方将分配的结果,即CID号,通过RDMA_RSP报文通知发送方.接收方无可用上下文资源而导致分配失败时,也通过RDMA_RSP报文告知发送方,发送方可按照策略(延迟重试等)重试.

2.3.2正常数据传输流程

在高性能并行计算机中,互连网络由于链路带宽平衡、自适应路由等特性,网络经常是乱序的,即报文在发送端发送的顺序和报文在接收端接收的顺序不一致.互连网络的链路故障也会导致报文丢失.为了解决以上的问题,本文采用滑动窗口的方式支持上述的网络特性.

举例来说明数据的传输流程,假设发送方需要发送5个数据报文到接收方,报文的序列号分别为0至4, 由于网络乱序的原因,到达接收方时的顺序为2,1,0,4,3,接收方接收的流程如图2所示.

在接收上下文中,WBASE的含义是当前期望接收的数据报文的最小序列号,即序号之前的报文全部接收.在建立连接时,WBASE初始化为0,即RDMA报文序列中的第1个报文.接收标志向量表明的是WBASE序号之后的128个(假设标志向量的位宽为128位)数据报文是否已经收到,为了计算方便,向量的下标从1开始计数,如果WVEC的第i位为1,则表明序号为WBASE+i的报文已经被接收方成功接收.

如果接收方收到报文的序列号在接收窗口内,但不是最小的未接收报文的序列号,即:PIDX>WBASE,并且PIDX≤WBASE+128.在这种情况下,只需要将WVEC[PIDXWBASE]置为1即可,表明已经收到了序号为PIDX的数据报文.即在向量WVEC中,索引下标为i的位为1时,表示收到了序号为WBASE+i的数据报文.

如果收到的报文等于WBASE,则表明收到了下一个最小序号的数据报文,在这种情况下,需要更新当前窗口的WBASE和WVEC.窗口WBASE需要更新为未接收报文中的下一个最小的序号,可以根据当前WBASE和WVEC的值计算得到:

WBASE=WBASE+LOC(WVEC).

WVEC的更新方法是:

WVEC=WVEC<

其中,LOC(WVEC)表示向量WVEC从最低位开始连续1的个数.

2.3.3窗口外报文处理

在某些极端互连网络延迟情况下,有可能接收方收到的报文在窗口之外,即:PIDXWBASE+128.

PIDX

PIDX>WBASE+128的情况是由于网络乱序,或某些极端情况下的重传引起的,此时,由于接收方的窗口还不能覆盖该报文的序号,接收方也将丢弃此类报文,由于接收方主存还未写入数据,因而接收方需要向发送方返回RDMA_RESEND报文,通知发送方重发该报文.

综上所述,接收方收到报文后的处理流程如图3所示.在算法描述中,假设窗口向量的位宽为128位,为了方便计算,下标从1开始计数.

2.3.4异常数据传输流程

RDMA传输过程中可能出现的异常情况包括:接收方报文接收超时、接收到窗口范围之外的报文、僵尸报文处理.

1)接收方超时处理

基于本文提出的滑动窗口RDMA传输方法,接收方为上下文中WBASE所指示的数据报文建立超时机制,也就是滑动窗口中序列号最小的那个报文,因而每个窗口只需要一个超时计数器进行超时计数.如果当前滑动窗口最底部的报文超时,接收方将主动向发送方发出RDMA_RESEND报文,该报文中携带着当前WBASE指针,要求发送方重发序号为WBASE的报文.发送方收到RDMA_RESEND报文后,需要根据RDMA请求中,源方的基地址以及报文序号,从源方内存中重新读取该报文的数据.