【RDMA】虚拟机环境下的Soft-RoCE性能调优与实战测试

1. 从零开始:为什么要在虚拟机里折腾Soft-RoCE?

如果你对高性能计算、分布式存储或者AI训练集群稍有了解,那你肯定听说过RDMA这个“黑科技”。它能让网络中的一台机器直接读写另一台机器的内存,完全绕开操作系统内核和CPU,延迟极低,带宽极高。听起来很美好,对吧?但问题来了,真正的RDMA需要专门的硬件网卡支持,比如Mellanox的ConnectX系列,一张卡动辄几千甚至上万,对于个人开发者、学生或者只是想尝鲜的团队来说,这门槛实在有点高。

这时候,Soft-RoCE(也叫RXE)就派上用场了。你可以把它理解成RDMA的“软件模拟器”。它用纯软件的方式,在普通的以太网卡上实现了RoCEv2协议栈。也就是说,你不需要花一分钱买硬件,在普通的虚拟机里就能搭建一套RDMA环境,用来学习、开发、测试RDMA应用。

我刚开始接触RDMA的时候,就是被昂贵的硬件卡劝退的。后来发现了Soft-RoCE,简直像发现了新大陆。在虚拟机里鼓捣了几天,虽然性能比不上真卡,但整个RDMA的编程模型、通信流程都能跑通,对于理解原理和调试程序来说,完全够用。今天,我就把自己在虚拟机环境下搭建、调优和测试Soft-RoCE的全过程,以及踩过的那些坑,毫无保留地分享给你。

那么,Soft-RoCE到底能做什么呢?简单来说,它让你可以在任何支持以太网的Linux机器(包括虚拟机)上,运行那些原本为RDMA硬件编写的程序。无论是用perftest测试性能,还是用libibverbs编写自己的RDMA程序,甚至是运行MPI(消息传递接口)这种高性能计算框架,Soft-RoCE都能胜任。它的目标用户非常明确:RDMA初学者、软件开发者、测试工程师,以及任何想在低成本环境下验证RDMA方案可行性的朋友。

2. 实战第一步:搭建你的Soft-RoCE实验环境

理论说再多,不如动手做一遍。搭建环境是第一步,也是最容易出问题的一步。别担心,我会把每个步骤都掰开揉碎了讲清楚。

2.1 系统与软件准备

首先,你需要两台Linux虚拟机。我强烈推荐使用Ubuntu 20.04 LTS或22.04 LTS。为什么?因为这两个版本的内核默认就编译了Soft-RoCE(RXE)所需的内核模块,省去了你自己编译内核的麻烦。我用的是VMware Workstation,你也可以用VirtualBox,原理都一样。

确保两台虚拟机处于同一个网络(比如都用“仅主机模式”或同一个NAT网络),并且能互相ping通。记下它们的IP地址,比如192.168.217.101192.168.217.102

接下来,在两台虚拟机上,安装必需的软件包。打开终端,执行以下命令:

sudo apt update
sudo apt install -y rdma-core ibverbs-utils infiniband-diags iproute2 perftest

简单解释一下这几个包:

  • rdma-core: RDMA用户态的核心库和工具,是基石。
  • ibverbs-utils: 提供ibv_devicesibv_devinfo等诊断工具。
  • infiniband-diags: 包含ibstat等更多诊断工具。
  • iproute2: 我们主要用它里面的rdma命令来管理RXE设备。
  • perftest: RDMA性能测试工具套件,后面压测就靠它了。

安装完成后,可以跑一下ibv_devices看看。正常情况下,这时候应该什么设备都看不到,因为还没创建虚拟RDMA设备呢。

2.2 创建并配置RXE虚拟设备

现在,我们要把普通的以太网卡“变成”一个RDMA设备。首先,加载内核模块:

sudo modprobe rdma_rxe

然后用lsmod | grep rxe确认一下模块是否加载成功。接下来,找到你要绑定的物理网卡名字。通常就是ens33ens160或者eth0,用ip addr命令就能看到。

假设我的网卡是ens33,现在创建RXE设备:

sudo rdma link add rxe_0 type rxe netdev ens33

这里的rxe_0是你给这个虚拟RDMA设备取的名字,可以随意,比如叫my_soft_roce也行。ens33就是你的物理网卡名。

创建成功后,用rdma link show命令检查:

$ rdma link show
link rxe_0/1 state ACTIVE physical_state LINK_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值