You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何开展实验验证RDMA吞吐量随QPS增长而下降?

解答

perftest的局限性

perftest的ib_read_bw/ib_write_bw等工具默认是单队列对(QP)、单线程模式,核心用于测试单流最大吞吐量或单流延迟,无法模拟多QPS并发场景。真实高QPS场景下,网卡和RDMA栈的资源(如QP数量、完成队列深度、内存注册资源)会被多请求分摊,这才会出现吞吐量随QPS上升而下降的趋势——这是perftest默认模式覆盖不到的。

是否需要自行编写C++代码?

分两种情况:

  • 先尝试perftest进阶参数,看能否覆盖基础测试需求:
    • 用-q指定多QP数量,比如ib_write_bw -q 16,模拟多流并发,可观察吞吐量随QP数(近似QPS维度)的变化
    • 用-s调整请求大小,小请求场景下QPS更容易提升,吞吐量下降趋势会更明显
  • 如果perftest的多QP模式无法精准控制QPS梯度(比如按固定步长从1k QPS升到100k QPS),则必须自行编写C++代码:
    • 核心实现要点:
      1. 多线程绑定独立CPU核,每个线程对应一个独立QP,避免线程调度干扰
      2. 通过定时器或循环计数控制每个线程的请求发送频率,实现固定QPS梯度压测
      3. 统计每个QPS梯度下的总吞吐量(每秒传输字节数),同步记录对应QPS值
      4. 合理分配RDMA资源:可复用完成队列(CQ),避免重复注册内存区域(MR)以降低开销
    • 简化实现:基于libibverbs或rdma-core库开发,直接使用封装好的RDMA建立API(如rdma_create_ep),无需从零实现底层握手流程

额外测试注意事项

  • 测试前关闭两台机器的防火墙、SELinux,用ibv_devinfo确认网卡状态,ping -I <rdma_dev> <peer_ip>验证RDMA链路连通性
  • 调整系统内核参数,增大RDMA相关缓冲区上限(如sysctl -w net.core.rmem_max=268435456、sysctl -w net.core.wmem_max=268435456),避免内核缓冲区成为瓶颈
  • 统计数据时取多次测试的平均值,降低单次波动对结果的影响

内容的提问来源于stack exchange,提问作者Peter Li

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:29:54