用SoftRoCE测试SPDK NVMe-oF target

作者简介:万群

SoftRoCE基本概念

SoftRoCE是RDMA传输的一个软件实现。它是作为Github社区项目开发的,主要贡献来自于IBM、Mellanox和System Fabric Works。现在,SoftRoCE已经为Linux上游提交做好了准备。SoftRoCE利用与RoCE相同的效率特性,在任何 NIC 上都可提供完整的 RDMA 堆栈实现。

SoftRoCE的工作原理:SoftRoCE驱动程序通过Linux网络堆栈实现InfiniBand RDMA传输。 它使具有标准以太网适配器的系统能够与硬件RoCE适配器或运行SoftRoCE的其他系统进行互操作。SoftRoCE可以模拟和使用任何RoCE支持的RDMA NICs(如Mellanox mlx4硬件RoCE适配器),它有librxe用户空间库(与libmlx4用户空间库相同)和ib_rxe内核模块(与mlx4_ib内核模块相同)。

配置SoftRoCE环境

设置Fedora25(内核为4.12.8-200)和Fedora25(内核为4.13.8-100),两台服务器背靠背连接以太网网络接口卡。 拓扑结构如下图:

您可能需要安装内核空间驱动程序和用户空间驱动程序来正确设置SoftRoCE,对于内核空间驱动程序,您可以参考以下链接: https://github.com/SoftRoCE/rxe-dev

以下步骤仅您参考:(注意,您需要在NVMe-oF target和NVMe-oF启动器上安装驱动程序。)

a. git clone https://github.com/SoftRoCE/rxe-dev.git
b. cd rxe_dev
c. cp /boot/config-$(uname -r) .config
d. make menuconfig
e. 进入 “/”并搜索 “RXE”, 选择 “1” 然后将更改保存至 .config文件
f. make –j 64
g. make modules_install
h. make install

对于用户空间驱动程序,您可以参考以下链接(https://github.com/SoftRoCE/librxe-dev ),以下步骤仅您参考:

a. 首先,安装必要的用户空间库: yum install perl-Switch
b. yum install libibverbs libibverbs-devel libibverbs-utils librdmacm librdmacm-devel librdmacm-utils
c. git clone https://github.com/SoftRoCE/librxe-dev.git
d. cd librxe-dev
e. ./configure —libdir=/usr/lib64/ —prefix=
f. make
g. make install

如何配置RDMA NIC:

a. 首先,您需要确保卸载了mlx4_ib内核模块(moprobe -rv mlx4_ib)
b. modprobe nvme_rdma
c. modprobe nvme_fabrics
d. rxe_cfg start
e. rxe_cfg add
f. rxe_cfg status
g. 现在您有了一个名为“rxe0”、“rxe1”的Infiniband设备,它将作为rdma NIC运行

使用场景:NVMe-oF

注意
1、以NVMe-oF为例;
2、这里我们以fio为例,您还可以使用perf运行io,使用RDMA模式或本地映射模式。

使用fio在NVMe-oF Target上测试的运行步骤

NVMe-oF Target

启用RDMA编译SPDK:

卸载mlx_ib驱动程序并加载NVMe-oF RDMA主机驱动程序:

为非RDMA NIC配置SoftRoCE:

使用以下指令运行NVMe-oF target程序:

以下是nvmf.conf.in文件,可作为参考。

NVMe-oF Initiator

卸载mlx_ib驱动程序并加载NVMe-oF RDMA主机驱动程序:

为非RDMA NIC配置SoftRoCE:

连接子系统:

运行fio工作:

fio 配置文件fio_softroce.job如下:

断开子系统:

使用perf在rdma模式下运行nvme-of测试的步骤

NVMe-oF Target

步骤与fio完全相同。

NVMe-oF Initiator

断开现有的NVME设备:

运行安装setup.sh脚本:

使用RDMA模式运行perf测试:

在本地使用perf运行NVMe-oF测试的步骤

NVMe-oF Target

步骤与fio完全相同。

NVMe-oF Initiator

连接子系统:

列出已连接的nvme设备:

使用本地设备运行perf测试:

常见问题

1、最好选择4.9以上的内核版本,不需要重新编译内核,如果内核版本低于4.9,则可能需要花费大量时间重新编译内核。

2、由于篇幅限制,我们将在日后的推送中继续讨论使用不同网卡部署的情况。

参考文献

  1. https://community.mellanox.com/docs/DOC-2184
  2. https://github.com/SoftRoCE
  3. http://www.roceinitiative.org/wp-content/uploads/2016/11/SoftRoCE_Paper_FINAL.pdf


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/21248.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于18-08-08
0