3. 性能测试核心指标

RDMA(Remote Direct Memory Access)性能评估的复杂性在于:单一指标无法反映真实网络能力,而多个指标之间又存在强耦合关系。例如,提升带宽利用率往往伴随CPU中断开销上升,降低延迟又可能牺牲报文速率。本章将系统定义六大核心指标——带宽、延迟、吞吐量、IOPS、CPU占用率、报文速率,并给出各自的测量原理、工具选型与数据解读方法。理解这些指标的物理含义与测量边界,是构建基准评估体系的前提。

RDMA性能指标测量链路与关联关系 测试对象 RDMA网卡/HCA/交换机 测试工具层 perftest (ib_*) fio / iometer / netperf 核心指标族 带宽 Bandwidth Gbps / MB/s 延迟 Latency us / 往返时间 吞吐量 Throughput 实际有效数据速率 IOPS 每秒I/O操作数 CPU占用率 % / 核数 报文速率 PPS Mpps / 包每秒 测量方法矩阵 • 带宽/吞吐量:ib_write_bw / ib_read_bw,多流并发,报文大小 1B~1MB 扫描 • 延迟:ib_send_lat / ib_read_lat,需关闭中断合并,取 P50/P99 分位值 • IOPS:fio --ioengine=rdma --rw=randrw,队列深度 1~128 扫描 • CPU占用率:perf stat / mpstat 同步采样,区分用户态/内核态/软中断 • 报文速率:ib_pps / 硬件计数器,小包(64B)极限测试,关注丢包率 注意:所有指标需在同一报文大小、队列深度、连接数条件下对比,否则数据不可比

3.1 带宽(Bandwidth)与吞吐量(Throughput)

核心原理

带宽指物理链路或协议层能够承载的最大数据传输速率,RDMA场景下通常以 Gbps(线速)或 MB/s(有效载荷)表示。吞吐量则强调实际有效数据的传输速率,扣除协议头、重传、流控等开销。两者差异反映了协议效率。例如,100Gbps 的 InfiniBand NDR 链路,理论带宽 12.5GB/s,但实际有效吞吐量受报文大小、QP(Queue Pair)数量、MTU 设置影响,通常只能达到 85%~95%。

测量方法

  • 工具选择:perftest 套件中的 ib_write_bw、ib_read_bw、ib_send_bw,支持 TCP/IP 与 RoCE 模式。
  • 关键参数:-s 报文大小(1B~1MB)、-q QP 数量、-d 运行时长、-x 绑定网卡。
  • 操作流程:服务端启动 ib_write_bw -s 65536 -q 4 -d 30,客户端连接后自动开始测试,输出带宽、消息速率、平均延迟。
# 服务端
ib_write_bw -s 65536 -q 4 -d 30 -x 3
# 客户端
ib_write_bw -s 65536 -q 4 -d 30 -x 3 192.168.1.10

案例拆解:100Gbps RoCEv2 带宽调优

某分布式存储集群使用 Mellanox ConnectX-6 网卡,实测带宽仅 78Gbps,远低于预期。通过 ib_write_bw -s 1048576 -q 8 测试,发现单 QP 带宽 62Gbps,多 QP 提升有限。进一步检查发现:MTU 设置为 1500(默认),而 RoCEv2 推荐 4096;同时 PFC 优先级未正确配置导致丢包重传。调整 MTU 至 4096、开启 PFC 后,带宽提升至 94Gbps。此案例说明带宽测量需同时关注链路层配置与协议栈参数。

常见误区:带宽测试结果受 CPU 频率、PCIe 通道数、NUMA 亲和性影响。若 CPU 占用率超过 80%,带宽数据不可信,需先优化中断绑定。

3.2 延迟(Latency)

核心原理

延迟是 RDMA 最核心的优势指标,指从发送端发起操作到接收端完成操作的时间差。分为单向延迟(One-way Latency)和往返延迟(Round-trip Time, RTT)。RDMA 延迟通常以微秒(us)计,包含软件开销(驱动、协议栈)、硬件处理(网卡 DMA、SerDes)、链路传播(光纤/铜缆)三部分。测量延迟时需区分 空载延迟(无并发流量)与 负载延迟(有背景流量),后者更接近生产环境。

测量方法

  1. 使用 ib_send_lat 或 ib_read_lat,报文大小固定为 2B~64B(小包延迟更有意义)。
  2. 关闭中断合并(mlxconfig -d /dev/mst/mt4123_pciconf0 set INT_MODERATION=0),否则延迟虚高。
  3. 记录 P50、P99、P999 分位值,而非仅平均值——长尾延迟对存储场景影响更大。
报文大小平均延迟(us)P99延迟(us)说明
2B1.22.8纯软件开销
64B1.43.1典型控制消息
4KB2.14.5数据块传输

实战场景:存储集群延迟敏感型业务

某 AI 训练集群使用 NVMe-oF over RDMA,要求端到端延迟 < 20us。实测发现 P99 延迟达到 45us,排查发现交换机 QoS 队列配置错误,将 RDMA 流量映射到低优先级队列。调整 DSCP 映射后,P99 降至 18us。此案例强调延迟测量必须结合网络 QoS 配置验证。

经验提醒:延迟测试前需确认网卡固件版本一致,并检查 ibstat 中链路速率是否为预期值(如 100Gb/s)。若显示降速,延迟数据无效。

3.3 IOPS 与报文速率(PPS)

核心原理

IOPS(Input/Output Operations Per Second)衡量每秒完成的 I/O 操作数,主要面向块存储场景(如 NVMe-oF)。报文速率(Packets Per Second, PPS)衡量每秒处理的报文数量,反映网卡的小包处理能力。两者均受限于网卡硬件处理能力、CPU 中断频率、内存带宽。RDMA 网卡通常内置硬件卸载引擎,IOPS 可达数百万,PPS 可达数十 Mpps。

测量方法

  • IOPS 测试:使用 fio 的 RDMA engine,命令示例:fio --name=test --ioengine=rdma --rw=randrw --bs=4k --size=1G --iodepth=32 --numjobs=4。需关注队列深度(iodepth)对 IOPS 的影响,通常 32~64 达到峰值。
  • PPS 测试:使用 ib_pps 工具或硬件计数器(ethtool -S eth0 | grep pps)。小包(64B)测试最能体现极限 PPS,但需注意丢包率。
# fio RDMA 随机读写测试
fio --name=randread --ioengine=rdma --rw=randread --bs=4k --size=10G --iodepth=64 --numjobs=8 --time_based --runtime=60

案例拆解:数据库日志盘 IOPS 瓶颈

某 Oracle 数据库使用 RDMA 存储,日志写入 IOPS 要求 50 万。实测仅 32 万,通过 perf top 发现 CPU 软中断占比 45%。优化方案:将网卡中断绑定到独立 CPU 核,并启用 mlx5_core 的 dim(动态中断调节)功能。调整后 IOPS 提升至 55 万,CPU 占用率下降 20%。此案例说明 IOPS 与 CPU 占用率强相关,需联合调优。

风险提示:PPS 测试若使用小包,可能触发网卡内部缓存溢出导致丢包。务必同时记录丢包率,若超过 0.01%,测试结果无效。

3.4 CPU 占用率

核心原理

CPU 占用率反映 RDMA 操作对主机计算资源的消耗。RDMA 的核心优势是卸载 CPU,但实际仍存在驱动处理、中断响应、内存注册等开销。测量需区分:用户态 CPU(应用逻辑)、内核态 CPU(驱动与协议栈)、软中断 CPU(网络处理)。理想情况下,RDMA 的 CPU 占用率应低于传统 TCP/IP 的 1/3。

测量方法

  1. 使用 mpstat -P ALL 1 实时监控各核使用率,重点关注软中断(%soft)与内核态(%sys)。
  2. 使用 perf stat -e task-clock,context-switches,cpu-migrations 统计上下文切换与迁移次数。
  3. 对比测试:分别运行 TCP 与 RDMA 相同负载,记录 CPU 占用率差值。
协议带宽(Gbps)CPU占用率(%)每Gbps CPU成本
TCP/IP40651.63%
RoCEv294180.19%
InfiniBand96120.13%

实战场景:多租户云环境 CPU 隔离

某云服务商在裸金属服务器上同时运行多个 RDMA 租户,发现某租户的 CPU 占用率异常高。通过 mpstat 定位到软中断集中在 CPU0,导致其他租户性能受损。解决方案:使用 mlx5_ib 的 set_irq_affinity 脚本将中断分散到多个核,并设置 cgroup CPU 配额。调整后各租户 CPU 占用率均衡,整体吞吐量提升 15%。

经验提醒:CPU 占用率测量需持续至少 60 秒,避免瞬时波动。建议同时采集 vmstat 的 r 列(运行队列)与 pidstat 的线程级数据。

3.5 指标关联分析与综合评估

核心原理

六大指标并非孤立存在,而是存在内在关联:带宽与吞吐量受报文大小影响,延迟与 IOPS 受队列深度影响,CPU 占用率与 PPS 受中断频率影响。综合评估需建立指标矩阵,在不同负载模型下同步采集所有指标,形成基准基线。

评估流程

  • 步骤1:确定测试场景(存储、网络、混合),选择报文大小矩阵(64B、256B、4KB、64KB、1MB)。
  • 步骤2:固定队列深度(如 16),扫描报文大小,记录带宽、延迟、PPS。
  • 步骤3:固定报文大小(如 4KB),扫描队列深度(1、8、32、64、128),记录 IOPS 与延迟。
  • 步骤4:同步采集 CPU 占用率,计算每 Gbps 带宽的 CPU 成本。

案例拆解:存储网关全指标基准

某存储网关产品需通过 400Gbps RDMA 性能验收。测试团队采用上述流程,发现 64KB 报文下带宽 380Gbps,但 IOPS 仅 12 万(目标 20 万)。进一步分析发现,IOPS 瓶颈在内存注册(Memory Registration)开销。优化方案:使用 ibv_reg_mr 的 IBV_ACCESS_ON_DEMAND 按需注册,减少页表锁定。优化后 IOPS 提升至 22 万,带宽保持 375Gbps。此案例展示了多指标联合调优的价值。

总结复盘:性能测试不是单点测量,而是多维度的系统评估。建议建立自动化测试脚本,每次变更(固件、驱动、配置)后运行完整指标矩阵,生成对比报告。重点关注指标间的权衡关系——例如,降低延迟可能牺牲带宽,提升 IOPS 可能增加 CPU 占用。只有理解这些关联,才能做出合理的性能调优决策。