Soft-RoCE vs TCP性能实测:为什么我的虚拟机RDMA比传统网络还慢?

Soft-RoCE性能迷思:虚拟机环境下为何RDMA软件栈有时反而不如传统TCP?

最近在搭建一个分布式存储原型系统时,我遇到了一个令人困惑的现象:在相同的虚拟机环境中,启用了Soft-RoCE(RXE)后,使用ib_send_bw测试的带宽竟然比传统的TCP/IP协议栈通过iperf3测试的结果还要低。这完全违背了RDMA技术"零拷贝、内核旁路、硬件卸载"的理论优势预期。经过几天的深入排查和测试,我发现这个问题并非个例,而是Soft-RoCE在特定环境下的典型表现。

对于追求极致网络性能的工程师来说,理解Soft-RoCE与TCP在虚拟机环境下的真实性能对比至关重要。RDMA技术本应提供更低的延迟和更高的吞吐量,但软件实现却可能带来意想不到的开销。本文将基于实际测试数据,深入分析性能差异的根本原因,并提供针对性的优化方案。

1. 测试环境搭建与基准性能对比

在开始深入分析之前,我们先建立一个标准的测试环境。我使用了两台配置相同的Ubuntu 22.04虚拟机,每台分配了8个vCPU、16GB内存,并通过虚拟化平台直通了10Gbps虚拟网卡。两台虚拟机位于同一子网,确保网络路径最短。

1.1 环境准备与工具安装

首先在两台虚拟机上安装必要的软件包:

# 更新系统并安装基础工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential git cmake pkg-config

# 安装RDMA相关软件栈
sudo apt install -y rdma-core ibverbs-utils librdmacm-dev libibverbs-dev
sudo apt install -y perftest rdmacm-utils infiniband-diags

# 安装网络测试工具
sudo apt install -y iperf3 net-tools ethtool

# 验证内核模块支持
lsmod | grep rdma_rxe

如果rdma_rxe模块未加载,需要手动加载:

sudo modprobe rdma_rxe

注意:某些较旧的内核版本可能需要重新编译以启用RXE支持。可以通过检查/boot/config-$(uname -r)文件中的CONFIG_RDMA_RXE配置项来确认。

1.2 Soft-RoCE设备配置

配置Soft-RoCE设备需要绑定到实际的物理或虚拟网络接口。首先确定可用的网络接口:

# 查看网络接口
ip link show

# 假设我们的主网络接口是ens192
sudo rdma link add rxe_0 type rxe netdev ens192
sudo rdma link show

配置完成后,应该能看到类似下面的输出:

link rxe_0/1 state ACTIVE physical_state LINK_UP netdev ens192

为了验证配置是否成功,可以使用ibv_devices命令:

ibv_devices

正常输出应该显示:

    device                 node GUID
    ------              ----------------
    rxe_0               020c29fffe6e7739

1.3 基准测试方法

为了确保测试的公平性,我设计了以下测试方案:

  1. TCP性能基准:使用iperf3进行TCP流测试,分别测试单流和多流性能
  2. Soft-RoCE性能基准:使用ib_send_bwib_write_bw测试RDMA带宽
  3. 延迟测试:使用ib_send_latping命令对比延迟
  4. CPU利用率监控:使用topperf工具监控测试期间的CPU使用情况

测试命令示例如下:

# TCP带宽测试(服务端)
iperf3 -s

# TCP带宽测试(客户端)
iperf3 -c <server_ip> -t 30 -P 4

# Soft-RoCE带宽测试(服务端)
ib_send_bw -d rxe_0

# Soft-RoCE带宽测试(客户端)
ib_send_bw -d rxe_0 <server_ip>

1.4 初始测试结果对比

在默认配置下,我得到了以下测试数据:

测试类型 协议 单流带宽 4流带宽 平均延迟 CPU利用率
网络基准 TCP 8.73 Gbps 9.12 Gbps 0.15 ms 45%
RDMA测试 Soft-RoCE 2.14 Gbps 3.87 Gbps 0.28 ms 85%

这个结果令人惊讶:Soft-RoCE的单流带宽只有TCP的约25%,即使使用4个并行流,也只能达到TCP单流性能的一半左右。更糟糕的是,Soft-RoCE的CPU利用率几乎是TCP的两倍,这与RDMA"卸载CPU"的核心理念背道而驰。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值