一、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

待補充