用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),两台服务器背靠背连接以太网网络接口卡。 拓扑结构如下图:

图1 使用SoftRoCE在两台物理机上部署NVMe-oF的拓扑结构

1

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

https://github.com/SoftRoCE/rxe-dev

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

2

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

3

如何配置RDMA NIC:

使用场景:NVMe-oF

注意:

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

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

NVMe-oF Target

1

启用RDMA编译SPDK:

2

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

3

为非RDMA NIC配置SoftRoCE:

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

NVMe-oF Initiator

1

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

2

为非RDMA NIC配置SoftRoCE:

3

连接子系统:

4

运行fio工作:

fio 配置文件fio_softroce.job如下:

5

断开子系统:

使用perf在RDMA模式下运行NVMe-oF测试的步骤

NVMe-oF Target

步骤与fio完全相同。

NVMe-oF Initiator

1

断开现有的NVME设备:
nvme disconnect –d /dev/nvme0n1

2

运行安装setup.sh脚本:

3

使用RDMA模式运行perf测试:

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

NVMe-oF Target

步骤与fio完全相同。

NVMe-oF Initiator

1

连接子系统:

2

列出已连接的nvme设备:

3

使用本地设备运行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

原文地址:DPDK与SPDK开源社区

发表评论

电子邮件地址不会被公开。 必填项已用*标注