Stephen Bates
简介
我在前一篇博文中介绍了Donard 项目,该项目实现了NVMe SSD与GPU、NVMe SSD及远端直接内存访问(RDMA)之间的PCIe点到点传输。现下,我倍感兴奋地宣布,在2015美国闪存峰会 (FMS)上,PMC与RDMA领域的领军公司Mellanox共同联手,将上述工作推向了更高的层次!本篇博文将稍加深入地阐述我们于8月11-13日在FMS所进行的展示,并解释为何NVMe +RDMA=非凡的性能!
闪存峰会上,我们在PMC的#213号展台进行了两项独立的NVMe+RDMA演示。头一个演示展示了如何将NVMe和RDMA组合起来,在远端大规模提供低延迟、高性能、基于块的NVM访问。第二个演示则将Mellanox的RDMA对端发起操作与PMC的Flashtec NVRAM加速卡集成在一起,以将内存映射的I/O(MMIO)作为一个RDMA目标,从而实现远端大规模的持久性内存访问。下面逐一详细介绍:
NVM Express over RDMA
NVMe over RDMA (NoR)演示向大家展示出将NVMe协议延展到RDMA之上的潜在可能。该项演示中共采用了两台电脑,一个作为客户端,另一台则作为服务器,采用Mellanox ConnectX-3 Pro NIC通过RoCEv2相连。其中采用的NVMe设备即为性能极高而延迟极低的PMC Flashtec™ NVRAM 加速卡。下图为该演示的框图。
我们的演示显示出,利用RDMA来传送NVMe命令及数据结果带来了微乎其微的额外延迟,且不影响吞吐量。
下表将本地NVMe设备与远端NVMe设备的平均延迟作了一个对比。NoR方案中延迟增加低于10微妙。
下表则比较了本地NVMe设备与远端NVMe设备的吞吐量测试结果。可以看出,NoR方案中吞吐量并无减少。
RDMA与PCIe设备之间的点到点传输
此项演示中,通过在标准 RDMA之上增加服务器CPU和DRAM的分流,采用对端发起的方式来将远端客户端与一台服务器的NVRAM/NVMe设备直连。我们将Mellanox提供的RoCEv2-capable ConnectX-3 Pro RDMA NIC与PMC的Flashtec NVRAM加速卡组合在一起,实现NIC和NVRAM之间的对端发起操作。对端发起操作可以实现远端客户对NVRAM加速卡的直接访问,相比传统的RDMA流程,可降低延迟,并卸载CPU和DRAM。
该演示采用的硬件设备包括两台电脑,一台作为客户端,另一台则作为服务器。利用服务器中的PCIe交换设备来将对端发起操作的性能提升到远远超出采用Intel CPU根联合体所能达到的指标。
下表比较了采用传统RDMA和对端发起的RDMA时服务器上可用的后台DRAM带宽。结果得自于perftest:
下表对采用传统RDMA和对端发起的RDMA时的平均延迟作出了对比。结果得自于 RDMA mode of fio:
对端发起操作代码库
如前所述,实现Donard项目时,我们即怀揣着开源的构想,如若不将Donard代码开放给研发社区,那将是我们的过失。因此,我们将Donard的源代码存放于GitHub,并为之获取了Apache 2.0 及GPL 2.0的许可。任何经过我们改动的源于GPL的代码均要求保持GPL,而全部新开发的代码则都存放在Apache,供大家随意取用。
我们希望社区中的朋友们能用到这些代码,对其进行进一步的改进,并将改进再贡献到代码库当中。该代码的git库可由此访问。
此外,开放交换网络企业发行版(OFED)的12月期发布中将包括该项目相关的代码。不久将提供该期发布的更多详细信息,请持续关注。
结论
RDMA以及NVMe两项技术均处于蓬勃上升的阶段!RDMA能提供远距离、大规模的低延迟及高效率的数据移动,而NVMe则能提供对SSD的低延迟访问。将两项技术相结合能实现非凡的性能。PMC与Mellanox正精诚合作,将之付诸实践!