用于使用RDMA的数据传输的方法和设备技术

技术编号:10292126 阅读:108 留言:0更新日期:2014-08-06 19:39
本发明专利技术的实施方式涉及用于使用RDMA的数据传输的方法和设备。一种用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间通过第三实体进行使用RDMA的数据传输的方法。第三实体耦合到一个表,该表高速缓存第一数据结构类型的第一数据结构的指纹以及相关联的第二数据结构类型的第二数据结构。特定的第一数据结构及其相关联的第二数据结构代表特定的同样的RDMA功能调用。在第一步骤中,从第一实体向第三实体发送代表特定的RDMA功能调用的第一数据结构类型的第一数据结构。在第二步骤中,确定被发送的第一数据结构的指纹。在第三步骤中,在表中查找与被确定的指纹相关联的第二数据结构类型的第二数据结构,查找的第二数据结构代表特定的RDMA功能调用。在第四步骤中,向第二实体发送查找的第二数据结构。

【技术实现步骤摘要】
用于使用RDMA的数据传输的方法和设备
本专利技术涉及一种用于使用RDMA(远程直接存储器访问)的数据传输的方法和设备。
技术介绍
RDMA是通信范例,其中应用数据从计算机的本地应用存储器直接取出并且直接放到远程计算机的应用存储器中。在旁路操作系统以及避免主存储器中的中间数据拷贝中,RDMA显著减少了大数据传递的CPU成本。如果网络接口控制器(NIC)能够使用DMA引擎在应用(缓冲区)存储器和NIC缓冲区之间直接移动联网的数据,则实现了完全的数据拷贝避免(零拷贝)。文档WO2011/135515A1示出了一种用于在没有中间缓冲的设备上数据传输的方法。请求被接收,以通过网络从该设备向第二设备传输数据。来自应用存储器的数据被格式化,以用于向第二设备传送。发送队列的长度被检索。数据被从所述设备向所述第二设备传送而无中间缓冲。将所述发送队列的长度与希望的发送队列长度相比较。如果发送队列的长度至少等于和/或小于希望的发送队列长度,产生完成单元。文档US2011/0078410A1描述了一种用于在包括多个处理子系统的处理系统中多方通信的方法和系统。处理子系统中每一个包括中央处理单元和用于将所述每个处理子系统连接到其他处理子系统的一个或多个网络适配器。大量节点被建立或创建,并且这些节点中的每一个与处理子系统中的一个相关。这里,在3个节点之间使用RDMA的管线通信可以被包含,其中第一节点将大的通信分解成多个部分并且使用RDMA将这些部分一个接一个地向第二节点发送,然后在通信的所有部分从第一节点到达之前,第二节点吸收并转发这些部分中的每一个至第三节点。而且,MattWelsh和DavidCuller公开了Jaguar:在Java中使能高效通信和I/O。他们假设以Java实现高效通信和I/O机制要求对低级系统资源(比如网络和原始盘接口)的快速访问和直接操作Java堆外部的存储器区域(比如通信和I/O缓冲)。Java本地方法执行这些操作成本太高并且提高了严重保护的顾虑。在Jaguar中,提供了一种通过保留Java环境的保护利用对系统资源的高效访问来使用Java应用的机制。这通过将特定Java字节代码编译时转换成内联机器代码段而实现。在这篇文章中,对从Java接口到VIA快速通信层使用Jaguar进行了说明,其实现与C和预序列化对象几乎相同的性能,一种降低Java对象序列化成本的机制。特别地,RDMA可能对运行云计算工作负载的数据中心是有用的,因为非常关注低延迟、高吞吐量和功耗。很多云计算应用是用Java和其他解释语言(如C#)写的。但是,对解释语言的高性能RDMA支持是困难的和昂贵的。为此,RDMA数据结构需要转换为C数据结构或依赖于硬件的表述。总之,RDMA功能调用的序列化在解释语言(如Java或C#)中是昂贵的。特别地,RDMA功能调用可以提供为必须被产生和序列化的工作描述符的二维列表,这在Java中是慢的。当将工作描述符的二维列表传递到C库时或者当将列表写到网络接口控制器时,这需要被完成。
技术实现思路
根据第一方面,建议了一种用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间在第三实体上使用RDMA的数据传输的方法。第三实体耦合到表,该表高速缓存第一数据结构类型的第一数据结构的指纹以及相关联的第二数据结构类型的第二数据结构。特定的第一数据结构及其相关联的第二数据结构代表特定的同样的RDMA功能调用。在第一步骤中,从第一实体向第三实体发送代表特定的RDMA功能调用的第一数据结构类型的第一数据结构。在第二步骤中,确定被发送的第一数据结构的指纹。在第三步骤中,在表中查找与被确定的指纹相关联的第二数据结构类型的第二数据结构,查找的第二数据结构代表特定的RDMA功能调用。在第四步骤中,向第二实体发送查找的第二数据结构。因为通常RDMA功能调用是再次发生的,如读或写同一缓冲区几次,这对RDMA功能调用采指纹以及高速缓存所有序列化的数据结构是有用的。在此,对于每一对第一数据结构类型的第一数据结构及其相关联的代表相同RDMA功能调用的第二数据结构类型的第二数据结构,生成可被高速缓存在表中的指纹。如果特定的RDMA功能调用再次发生,在给出指纹的表中查找被高速缓存的第二数据结构。于是,在再次发生RDMA功能调用期间避免了序列化成本。因此,减少了延迟和CPU开销。根据一些实施方式,特定的RDMA功能调用包括至少一个工作描述符。对于一个单一工作描述符的情况,与没有RDMA功能调用高速缓存的常规系统相比,本方法对于缓冲区大小小于16k的可减少延迟约30%。对于具有更高数目的工作描述符的操作,改善可能甚至更大。在一个实施方式中,第一数据结构类型的第一数据结构被实现为RDMA功能调用的独立于硬件的表示。RDMA功能调用的独立于硬件的表示可以由例如Java或C#提供。在又一个实施方式中,第二数据结构类型的第二数据结构被实现为RDMA功能调用的依赖于硬件的表示。RDMA功能调用的依赖于硬件的表示可以被适应为被网络接口控制器(NIC)直接解释。在又一个实施方式中,第一实体通过用于从网络发送和接收数据的处理器的应用来实现,第二实体通过网络接口控制器(NIC)来实现,并且第三实体通过RDMA库和RDMA用户驱动器来实现。在又一个实施方式中,第一实体通过网络接口控制器来实现,第二实体通过用于从网络发送和接收数据的处理器的应用来实现,以及第三实体通过RDMA库和RDMA用户驱动器来实现。以上两个实施方式分别反映了适应于发送情况和接收情况的相同架构。在以上两个实施方式中,没有使用处理器的操作系统上的路径,因此应用和网络接口控制器之间的这个路径也可称为用于在应用和NIC之间发送和接收数据的快路径。所以,包括工作描述符的RDMA功能调用,特别是包含对实际数据缓冲区的引用的RDMA功能调用,可以使用存储器映射的I/O而被直接映射到NIC。根据一些实施方式,网络可以是将单个或一组计算元件或处理元件,例如处理器或指定节点,与FPGA(FPGA:现场可编程门阵列)互相连接的互连的系统。它可以是外部的,例如LAN,或者内部的,例如处理器互连,或者单个服务器中的多个NIC(NIC:网络接口卡),用于给定系统安装。在后者中,可能的通信模式将会是:第一处理器P1可访问第一NIC1以及使用第一NIC1经由网络向第二NIC2发送数据。而且,第二NIC2被第二处理器P2操控和/或处理,其接收数据。即使所有4个实体P1、P2、NIC1、NIC2可以是单个物理系统的一部分。在又一个实施方式中,第一数据结构类型通过第一编程语言的格式来实现。例如,第一编程语言是Java或C#。在又一个实施方式中,另一表耦合到第二实体,所述另一表适合于高速缓存第二数据结构类型的数据结构的指纹以及由第四实体使用的相关联的第三数据结构类型的数据结构。在又一个实施方式中,该方法还具有下列步骤:-在第二实体处接收在耦合到第三实体的表处查找的第二数据结构,-确定接收的第二数据结构的指纹,-在另一表中查找与确定的指纹相关联的第三数据结构类型的第三数据结构,查找的第三数据结构代表特定RDMA功能调用,以及-向第四实体发送查找的第三数据结构。在这个实施方式中,第一实体可通过应用来实现,第二实体通过R本文档来自技高网
...
用于使用RDMA的数据传输的方法和设备

【技术保护点】
一种用于在使用第一数据结构类型的第一实体(10)和使用第二数据结构类型的第二实体(20)之间通过第三实体(30)使用RDMA的数据传输的方法,所述方法包括:从所述第一实体(10)向所述第三实体(30)发送(101,401)代表特定的RDMA功能调用的所述第一数据结构类型的第一数据结构(DS1),所述第三实体(30)耦合到表(50),所述表(50)高速缓存第一数据结构类型的第一数据结构(DS1)的指纹(F(DS1,DS2))以及相关联的所述第二数据结构类型的第二数据结构(DS2),针对发送的所述第一数据结构(DS1)确定(102,402)指纹(F(DS1,DS2)),在所述表(50)中查找(103,403)与确定的所述指纹(F(DS1,DS2))相关联的所述第二数据结构类型的第二数据结构(DS2),查找的所述第二数据结构(DS2)代表所述特定RDMA功能调用,以及向所述第二实体(20)发送(104,404)查找的所述第二数据结构(DS2)。

【技术特征摘要】
2013.01.31 GB 1301667.01.一种用于在使用第一数据结构类型的第一实体(10)和使用第二数据结构类型的第二实体(20)之间通过第三实体(30)使用RDMA的数据传输的方法,所述方法包括:从所述第一实体(10)向所述第三实体(30)发送(101,401)代表特定的RDMA功能调用的所述第一数据结构类型的第一数据结构(DS1),所述第三实体(30)耦合到表(50),所述表(50)高速缓存第一数据结构类型的第一数据结构(DS1)的指纹(F(DS1,DS2))以及相关联的所述第二数据结构类型的第二数据结构(DS2),其中所述发送(101,401)代表特定的RDMA功能调用的所述第一数据结构类型的第一数据结构(DS1)没有使用第一实体(10)的处理器上的操作系统上的路径,针对发送的所述第一数据结构(DS1)确定(102,402)指纹(F(DS1,DS2)),在所述表(50)中查找(103,403)与确定的所述指纹(F(DS1,DS2))相关联的所述第二数据结构类型的第二数据结构(DS2),查找的所述第二数据结构(DS2)代表所述特定RDMA功能调用,以及向所述第二实体(20)发送(104,404)查找的所述第二数据结构(DS2)。2.根据权利要求1所述的方法,其中所述第一数据结构类型的所述第一数据结构(DS1)被实现为RDMA功能调用的独立于硬件的表示。3.根据权利要求2所述的方法,其中所述第二数据结构类型的所述第二数据结构(DS2)被实现为RDMA功能调用的依赖于硬件的表示。4.根据权利要求1到3中之一所述的方法,其中所述第一实体(10)通过用于从网络发送和接收数据的处理器的应用来实现,所述第二实体(20)通过网络接口控制器(NIC)来实现,以及所述第三实体(30)通过RDMA库(31)和RDMA用户驱动器(32)来实现。5.根据权利要求1到3中之一所述的方法,其中所述第一实体(10)通过网络接口控制器来实现,所述第二实体(20)通过用于从网络发送和接收数据的处理器的应用来实现,并且所述第三实体(30)通过RDMA库(31)和RDMA用户驱动器(32)来实现。6.根据权利要求1所述的方法,其中所述第一数据结构类型通过第一编程语言格式来实现。7.根据权利要求1到3中之一所述的方法,其中另一表(60)耦合到所述第二实体(20),所述另一表(60)适于高速缓存所述第二数据结构类型的第二数据结构(DS2)的指纹(F(DS2,DS3))以及由第四实体(40)使用的相关联的第三数据结构类型的数据结构(DS3)。8.根据权利要求7所述的方法,还包括:在所述第二实体(20)处接收(405)在耦合到所述第三实体(30)的表(50)处查找的所述第二数据...

【专利技术属性】
技术研发人员:P·施蒂B·梅茨勒A·K·特里维迪
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1