一、RDMA概要

1. 基础理论

网上有很多rdma基础理论介绍,可以去搜索,当然如果深入了解,还是需要看RDMA协议标准

简单参考:

一文彻底搞懂:什么是RDMA技术及其三个协议 - 墨天轮

深入了解:

项目首页 - RDMARoCEv2标准协议快速掌握:RDMA RoCEv2标准协议快速掌握 - GitCode

 

2.部分工具和含义

RDMA 有一堆的管理工具和测试工具,慢慢都归集于https://github.com/linux-rdma/rdma-core项目下,甚至这些工具都有 man 手册,比如https://man7.org/linux/man-pages/man1/ibv_devices.1.html,可以说非常友好了,你只需要知晓有哪些工具,大概是干什么的,具体使用的时候查询它的 man 手册就好了。

我根据 Red Hat/CentOS 系统中不同的包所包含的工具分类进行介绍。你可以通过下面的命令安装这些工具:

这些工具主要用于:

  • RDMA 设备状态检查
  • 网络连接测试
  • 性能测试和基准测试
  • 故障排除
  • 网络拓扑发现

建议在使用这些工具时查看各自的 man 页面获取详细用法:

1. libibverbs-utils 包

  • ibv_devices:列出系统中所有的 IB 设备
  • ibv_devinfo:显示 IB 设备的详细信息
  • ibv_rc_pingpong:RC(Reliable Connection)模式的 ping-pong 测试工具
  • ibv_uc_pingpong:UC(Unreliable Connection)模式测试工具
  • ibv_srq_pingpong:Shared Receive Queue 测试工具

2. infiniband-diags 包

  • ibstat:显示 IB 适配器和端口状态
  • ibstatus:显示 IB 设备状态信息
  • ibhosts:显示 IB 子网中的主机
  • ibnetdiscover:发现并显示 IB 网络拓扑
  • iblinkinfo:显示 IB 网络链路信息

3. rdma-core 包

  • rdma:RDMA 子系统管理工具
  • rxe_cfg:软件 RDMA 配置工具,弃用,逐步被 rdma 命令替代

4. perftest 包

  • ib_send_bw:带宽测试工具
  • ib_read_bw:RDMA read 带宽测试
  • ib_write_bw:RDMA write 带宽测试
  • ib_send_lat:延迟测试工具
  • ib_read_lat:RDMA read 延迟测试
  • ib_write_lat:RDMA write 延迟测试

5. librdmacm-utils 包

  • rping:RDMA ping 测试工具
  • ucmatose:UC 连接测试工具
  • rdma_client/rdma_server:RDMA 客户端/服务器测试程序

 

二、RDMA之perftest

perftest是常用的用户态 rdma测试工具,可以测试rdma 基础Verbs 功能、性能

参考链接:

RDMA性能测试工具perftest简介 - 知乎

源码地址:

GitHub - linux-rdma/perftest: Infiniband Verbs Performance Tests

详细使用方法可以看软件README,有介绍

三、RDMA存储---nvme

RDMA目前结合存储使用场景较多,主要就是nvme over rdma。工具主要为SPDK

GitHub - spdk/spdk: Storage Performance Development Kit

使用方法可以参考:

SPDK: NVMe over Fabrics Target

T端SPDK----I端nvme-cli,这种场景是T端用户态,I端内核态

配置完成nvme 挂好盘,可以lsblk看到I端从T端挂过来的远端盘,此时可以进行fio读写:

fio工具可以yum或apt 直接安装,也可以github源码安装

GitHub - axboe/fio: Flexible I/O Tester

 

fio命令:注意/dev/nvme盘名字对应lsblk看到的,如果系统盘是nvme,千万注意不要写错,不然要重装系统了

fio --name=rw_iops --filename=/dev/nvme77n1 --filename=/dev/nvme78n1 --bs=4k --direct=1 --rw=randrw --ioengine=libaio --iodepth=128 --numjobs=32 --group_reporting 
--norandommap --time_based --runtime=10h

  

 

fio详细介绍和使用,可以deepseek问下

四、RDMA存储---ISER

待补充

五、RDMA存储---NFS

待补充

六、RDMA存储---SMB

待补充