本段要回答的问题有且只有一个:如果你想跑RDMA代码/测试RDMA网速/…但却没有交换机、网卡等硬件——该怎么办?
Solution1(土豪专供):买一个。准确点说,是买两个,毕竟网络这东西,有发送方还得有接收方。目前Mellanox的ConnectX-4网卡亚马逊价格200美刀,而最新的ConnectX-6网卡亚马逊价格在900美刀左右。
Solution2:软件模拟。部分Linux系统内核自带SoftRoCE,比如笔者所用的CentOS 7。SoftRoCE本质上是使用软件模拟了本应由硬件进行的内存读写等功能,提供libibverbs和rdma-cm库,API和InfiniBand连接完全一致,但不需要购买特定硬件,不管是本机虚拟机还是AWS,都可以轻易安装包含相应内核代码的CentOS 7操作系统。SoftRoCE的激活、测试可参考这篇文章。
不过,省钱当然是有代价的——SoftRoCE的速度比InfiniBand连接慢上何止两三个数量级。
官方给出的SoftRoCE应用场景是在网络升级到RDMA硬件时,若存在个别节点没条件做硬件升级,则可以在其上激活SoftRoCE,用于接入RDMA网络。由此可见,SoftRoCE并不是为单独运行RDMA而存在的,而是为了保证整个网络的升级不会因为个别节点而被延迟。不过,对我等穷学生,缺乏硬件条件时不妨用SoftRoCE作为下位替代,可以验证代码正确性等。
Solution3:云服务平台租借。笔者搜索过各大云服务平台,截至成文时AWS上唯一支持RDMA连接的P4d实例价格昂贵,而Google Cloud Platform暂无相关资源,仅有MicroSoft Azure在多系列虚拟机上支持RDMA连接,主要为高性能计算(HPC)提供服务。笔者个人建议,Azure的HC系列虚拟机价格合理(HC44-16rs VM ~$3/hr),连接稳定,推荐使用。同样推荐使用的还有Azure的100刀学生折扣。注意,使用Azure时,要保证所有你想通过InfiniBand连接的虚拟机都在同一个规模集(scale set)中,否则互ping时会有惊喜。
Leave a Reply