![](/style/images/good.png)
![](/style/images/bad.png)
用SoftRoCE测试SPDK NVMe-oF target
source link: https://www.sdnlab.com/21248.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
作者简介:万群
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、由于篇幅限制,我们将在日后的推送中继续讨论使用不同网卡部署的情况。
参考文献
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK