近日,由京东IT资源服务部组织的未来数据中心核心技术研讨会活动,在京东成功举办。活动邀请了京东人工智能,大数据,云计算团队的多位研发总监,技术骨干人员一同参与。
在研讨会上,大家针对目前很火的RDMA,高性能网络相关话题,展开深入讨论。特别是随着深度学习,云计算的兴起,网络对应用性能的影响引起了大家的关注。
RDMA(Remote Direct Memory Access)技术是一种直接在内存和内存之间进行资料互传的技术,在数据传输的过程中,不需要和操作系统Kernel做沟通,完全实现了Kernel Bypass。
对比RDMA传输和传统的TCP传输,TCP传输在多处需要CPU的参与。
比如从应用层生成TCP的packet,对packet添加crc,由CPU来运行TCP协议传输数据到接收端,如果是可靠连接网络,需要由CPU来进行流量的控制,在接收端需要由CPU来查询内存地址,检验crc,还原TCP packet到应用。
这会消耗大量的CPU资源,而且容易受到CPU的noise的影响,从而影响网络传输的性能。
如果使用RDMA传输,所有上述操作都可以由网卡硬件来做,CPU不必做任何操作,这就是为什么RDMA能带来低延时、高带宽和低CPU利用率的原因。
在数据中心中使用RDMA技术可以有几种方式。
直接使用RDMA接口(verbs API)。
RDMA和TCP类似,有自定义的API可直接提供给应用层。用户可以直接使用RDMA API对应用进行编程,这种模式可以最好的利用RDMA的性能。
现在流行的deep learning 的framework TensofFlow,也可以支持直接通过RDMA 来做数据传输; 面向大数据的Spark framework,也可以使用Spark over RDMA。
京东人工智能研发团队在分布式的模型训练场景中,也使用了RDMA技术,针对模型文件的高性能传输,满足了分布式训练的需求。
目前业界主流的database系统也都可以直接使用RDMA 接口,享用RDMA 带来的高性能。
包括在并行存储文件系统的应用中,RDMA 也被广泛使用。比如IBM 的GPFS 文件系统,open source 的Lustre 文件系统和GLustre 系统,它们都有直接的RDMA 的支持。
使用一些中间件将RDMA 封装起来,这种应用主要在一些计算和存储中常见。
在面向高性能计算的MPI 应用中,所有的MPI 都可以支持RDMA传输,诸如OpenMPI, Intel MPI, OSU MVAPICH 等。在全世界前500 台最快的超级计算机中,MPI over RDMA 被广泛使用。
在主流的存储应用中,面向block 存储的iscsi 协议有iscsi over RDMA(iser)的支持,面向object 存储的CePH 有CePH over RDMA 的支持,新的NVMe over Fabric 协议定义了在数据传输的时候必须使用RDMA。
还有在一些特别的应用中也用到了这种方式,比如在一些金融、证券和多媒体等需要低延迟的应用中,VMA 可以在不改变应用接口(socket 接口)的情况下来享受到RDMA 的低延迟。
京东IT资源服务部负责人吕科在技术研讨活动中谈到:“目前京东、微软、Facebook的数据中心都在加强RDMA的使用。希望降低数据中心成本,提升应用性能,解决TCP协议带来的扩展性等问题。”
京东IT资源服务部的硬件系统部在测试RDMA时也看到,在VM的服务中,在同样物理服务器的情况下,利用RDMA 来做数据传输,可以将几乎100%的CPU 资源都提供给计算。降低了CPU 在通讯中的占用率,用户就可以利用这些CPU 资源来做更多计算或提供其他的服务,这也相当于增加了VM的数量。