概述:
我们在进行RDMA软件开发时,通常要用到支持RDMA通信的网卡,比如mellanox cx5等,这些网卡通常比较贵,因此硬件搭建成本较高。在前期开发过程中,可以使用soft-roce的方法进行软件开发。
soft-roce是通过cpu实现了原本在网卡硬件中实现的功能,其好处是使用普通网卡即可实现RDMA软件开发,缺点是其实cpu占用率高,有内存拷贝,性能低。
环境配置方法:
第一步:安装rdma相关组件
sudo apt-get install libibverbs1 ibverbs-utils librdmacm1 libibumad3 ibverbs-providers rdma-core
第二步:安装perftest及iproute2
sudo apt-get install iproute2
sudo apt-get install perftest
第三步:rdma-rxe相关配置
modprobe rdma_rxe
检查rxe状态
rxe_cfg status
启动rxe_cfg
rxe_cfg start
把虚拟网卡加入,ifconfig查看网卡名,我这里是ens33
rxe_cfg add ens33

测试方法,通过perftest对soft roce性能进行测试
如果是虚拟机环境下,可以使用vmware将搭建好的虚拟机环境克隆一份,随后在这两个虚拟机里进行通信测试,也可以克隆多份,进行多打一测试。
克隆完成后,将网络模式设置为如下图所示:

通过ifconfig查看两端ip。通过ibv_devinfo查看两端rdma链路信息。选择一端作为server,一端作为client
server(192.168.245.128,hca_id:rxe0):


client(192.168.245.128,hca_id:rxe0):


perftest 带宽测试:
server输入:
ib_write_bw -a -d rxe0 --report_gbits
client输入:
ib_write_bw -a -d rxe0 --report_gbits 192.168.245.129
其中ip地址为server端ip

由于我这条命令里有个-a,也就是把各种包长都测一遍。由于是soft-roce所以涉及到大量的数据拷贝,测到后面大包时候电脑风扇转的太快,我就停掉了。perftest也提供针对指定包长的测试,可以自行搜索一下。
perftest延迟测试:
server输入:
ib_write_lat -a -d rxe0 --report_gbits

client输入:
ib_write_lat -a -d rxe0 --report_gbits 192.168.245.129
其中ip地址为server端ip

最后大包时候同样停掉了。
总结:
通过soft-roce,开发者可以在普通pc上进行rdma软件开发及测试。