0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入了解RDMA技術(shù)

SDNLAB ? 來源:SDNLAB ? 2023-12-26 09:23 ? 次閱讀

作者簡介

Explorer,專注于高性能網(wǎng)絡(luò)、虛擬化網(wǎng)絡(luò)及網(wǎng)卡的測試方案研究。熟悉dpdk,rdma,sdn等技術(shù)的應(yīng)用與解決方案。

01深入了解RDMA技術(shù)

背景概述

隨著互聯(lián)網(wǎng)的普及和數(shù)字化轉(zhuǎn)型的加速,大量數(shù)據(jù)被生成和傳輸。在AI訓(xùn)練和推理、大數(shù)據(jù)分析以及存儲應(yīng)用中,處理這些海量數(shù)據(jù)變得至關(guān)重要。因此,高性能網(wǎng)絡(luò)對于快速而可靠的數(shù)據(jù)傳輸至關(guān)重要。

RDMA(Remote Direct Memory Access,遠(yuǎn)程直接內(nèi)存訪問)是一種高效的數(shù)據(jù)傳輸技術(shù),它使得兩臺計(jì)算機(jī)之間可以直接從對方的內(nèi)存中讀取或?qū)懭霐?shù)據(jù),而不需要CPU的介入。通過RDMA,計(jì)算機(jī)之間的數(shù)據(jù)傳輸速度更快,延遲更低,傳輸效率更高,而且可以減少CPU的負(fù)載。

應(yīng)用場景

RDMA技術(shù)在各個領(lǐng)域都有廣泛的應(yīng)用,其高性能和低延遲的特點(diǎn)使其成為許多應(yīng)用的關(guān)鍵組成部分,以下是當(dāng)前RDMA技術(shù)的一些應(yīng)用場景介紹:

高性能計(jì)算(HPC)

RDMA技術(shù)在HPC領(lǐng)域得到廣泛應(yīng)用,用于大規(guī)模科學(xué)計(jì)算、氣象模擬、分子建模等任務(wù)。RDMA可以實(shí)現(xiàn)節(jié)點(diǎn)之間的快速數(shù)據(jù)共享,從而加速復(fù)雜計(jì)算任務(wù)的完成,降低了整體計(jì)算時間。

云計(jì)算和虛擬化

公有云和私有云服務(wù)提供商采用RDMA技術(shù)來改善虛擬機(jī)之間的通信性能。這在云環(huán)境中特別重要,因?yàn)樗梢蕴岣咛摂M機(jī)之間的網(wǎng)絡(luò)吞吐量,從而提高了云計(jì)算資源的利用率。

存儲系統(tǒng)

RDMA技術(shù)在高性能存儲系統(tǒng)中發(fā)揮重要作用,如分布式文件系統(tǒng)、SAN存儲、塊存儲等。它提供了低延遲、高帶寬的數(shù)據(jù)傳輸,有助于加速數(shù)據(jù)讀寫操作,提高存儲性能。

金融交易

在金融領(lǐng)域,時間和性能至關(guān)重要。RDMA技術(shù)用于構(gòu)建低延遲的交易系統(tǒng),確保交易數(shù)據(jù)能夠?qū)崟r傳輸和處理,從而降低了交易風(fēng)險。

人工智能深度學(xué)習(xí)

訓(xùn)練深度學(xué)習(xí)模型需要大量數(shù)據(jù)傳輸和計(jì)算資源。RDMA技術(shù)可用于加速大規(guī)模深度學(xué)習(xí)任務(wù),減少模型訓(xùn)練時間。

實(shí)時數(shù)據(jù)分析

對于需要實(shí)時數(shù)據(jù)分析的應(yīng)用,如廣告投放、市場分析和網(wǎng)絡(luò)安全監(jiān)控,RDMA技術(shù)可以確保數(shù)據(jù)能夠?qū)崟r傳輸和分析,提供即時決策支持。

遠(yuǎn)程備份和復(fù)制

在數(shù)據(jù)備份和復(fù)制中,RDMA技術(shù)可以加速數(shù)據(jù)傳輸,降低備份時間,同時提供數(shù)據(jù)完整性和可靠性。

高性能數(shù)據(jù)庫

RDMA技術(shù)可用于構(gòu)建高性能數(shù)據(jù)庫系統(tǒng),實(shí)現(xiàn)快速數(shù)據(jù)訪問和查詢操作,從而加速數(shù)據(jù)處理。

RDMA技術(shù)在各種領(lǐng)域中都有重要應(yīng)用,特別是在需要高性能、低延遲和大規(guī)模數(shù)據(jù)傳輸?shù)膱鼍爸小K鼮檫@些應(yīng)用提供了關(guān)鍵的網(wǎng)絡(luò)通信支持,加速了各種計(jì)算和數(shù)據(jù)處理任務(wù),有助于提高系統(tǒng)性能和效率。隨著技術(shù)的不斷發(fā)展,RDMA技術(shù)的應(yīng)用前景將繼續(xù)擴(kuò)展。

技術(shù)特點(diǎn)

內(nèi)核 Bypass:RDMA允許數(shù)據(jù)直接在內(nèi)存之間傳輸,而不需要通過操作系統(tǒng)內(nèi)核。傳統(tǒng)的Socket通信在數(shù)據(jù)傳輸時需要將數(shù)據(jù)從用戶空間復(fù)制到內(nèi)核空間,然后再從內(nèi)核空間復(fù)制到另一個用戶空間。而RDMA通過繞過內(nèi)核,使數(shù)據(jù)可以直接在用戶空間之間傳輸,從而減少了數(shù)據(jù)復(fù)制的開銷,提高了數(shù)據(jù)傳輸效率。

零拷貝:RDMA支持零拷貝操作,意味著數(shù)據(jù)可以直接在應(yīng)用程序的內(nèi)存空間中傳輸,而無需中間的數(shù)據(jù)拷貝操作。這減少了CPU的負(fù)擔(dān)和數(shù)據(jù)傳輸?shù)难舆t,提高了系統(tǒng)性能。

協(xié)議卸載:RDMA技術(shù)允許網(wǎng)絡(luò)適配器卸載協(xié)議的處理任務(wù),將網(wǎng)絡(luò)協(xié)議的處理從主機(jī)CPU轉(zhuǎn)移到網(wǎng)絡(luò)適配器上。這樣可以減輕主機(jī)CPU的負(fù)擔(dān),提高系統(tǒng)整體性能。

低延遲和高吞吐量:RDMA的直接內(nèi)存訪問和零拷貝特性導(dǎo)致了低延遲和高吞吐量。數(shù)據(jù)可以直接在內(nèi)存之間傳輸,而不需要中間的數(shù)據(jù)復(fù)制,從而減少了通信的延遲并提高了數(shù)據(jù)傳輸?shù)乃俾省?/p>

支持遠(yuǎn)程直接內(nèi)存訪問:RDMA允許應(yīng)用程序直接訪問遠(yuǎn)程主機(jī)的內(nèi)存,而無需通過中間服務(wù)器進(jìn)行數(shù)據(jù)傳輸。這使得在分布式系統(tǒng)中進(jìn)行高效的數(shù)據(jù)共享成為可能,同時減少了通信的開銷。

支持協(xié)議

RDMA技術(shù)支持三類協(xié)議,分別為InfiniBand(IB),RDMA over Converged Ethernet(RoCE)和internet Wide Area RDMA Protocol(iWARP),三類協(xié)議使用相同的RDMA標(biāo)準(zhǔn)。

>InfiniBand

InfiniBand是一種基于InfiniBand架構(gòu)的RDMA技術(shù),它提供了一種基于通道的點(diǎn)對點(diǎn)消息隊(duì)列轉(zhuǎn)發(fā)模型,每個應(yīng)用都可通過創(chuàng)建的虛擬通道直接獲取本應(yīng)用的數(shù)據(jù)消息,無需其他操作系統(tǒng)及協(xié)議棧的介入。InfiniBand架構(gòu)的應(yīng)用層采用了RDMA技術(shù),可以提供遠(yuǎn)程節(jié)點(diǎn)間RDMA讀寫訪問,完全卸載CPU工作負(fù)載;網(wǎng)絡(luò)傳輸采用了高帶寬的傳輸;鏈路層設(shè)置特定的重傳機(jī)制保證服務(wù)質(zhì)量,不需要數(shù)據(jù)緩沖。

InfiniBand必須運(yùn)行在InfiniBand網(wǎng)絡(luò)環(huán)境下,必須使用IB交換機(jī)及IB網(wǎng)卡才可實(shí)現(xiàn)。

>RoCE

RoCE技術(shù)支持在以太網(wǎng)上承載IB協(xié)議,實(shí)現(xiàn)RDMA over Ethernet。RoCE與InfiniBand技術(shù)有相同的軟件應(yīng)用層及傳輸控制層,僅網(wǎng)絡(luò)層及以太網(wǎng)鏈路層存在差異。

RoCE v1協(xié)議:基于以太網(wǎng)承載RDMA,只能部署于二層網(wǎng)絡(luò),它的報(bào)文結(jié)構(gòu)是在原有的IB架構(gòu)的報(bào)文上增加二層以太網(wǎng)的報(bào)文頭,通過Ethertype 0x8915標(biāo)識RoCE報(bào)文。

RoCE v2協(xié)議:基于UDP/IP協(xié)議承載RDMA,可部署于三層網(wǎng)絡(luò),它的報(bào)文結(jié)構(gòu)是在原有的IB架構(gòu)的報(bào)文上增加UDP頭、IP頭和二層以太網(wǎng)報(bào)文頭,通過UDP目的端口號4791標(biāo)識RoCE報(bào)文。RoCE v2支持基于源端口號hash,采用ECMP實(shí)現(xiàn)負(fù)載分擔(dān),提高了網(wǎng)絡(luò)的利用率。

下圖為RoCE的協(xié)議棧:

wKgaomWJWGiAAAOUAAAkYety21M569.jpg

| RoCE協(xié)議棧

>iWARP

iWARP協(xié)議是IETF基于TCP提出的,因?yàn)門CP是面向連接的可靠協(xié)議,這使得iWARP在面對有損網(wǎng)絡(luò)場景(可以理解為網(wǎng)絡(luò)環(huán)境中可能經(jīng)常出現(xiàn)丟包)時相比于RoCE v2和IB具有更好的可靠性,在大規(guī)模組網(wǎng)時也有明顯的優(yōu)勢。但是大量的TCP連接會耗費(fèi)很多的內(nèi)存資源,另外TCP復(fù)雜的流控等機(jī)制會導(dǎo)致性能問題,所以從性能上看iWARP要比UDP的RoCE v2和IB差。

>網(wǎng)絡(luò)設(shè)備

在實(shí)際的生產(chǎn)環(huán)境中,無論是何種協(xié)議支持的RDMA技術(shù),都需要硬件的支撐。

支持iWARP和RoCEv2的Intel E810系列網(wǎng)卡:https://www.intel.cn/content/www/cn/zh/products/sku/192558/intel-ethernet-network-adapter-e810cqda2/specifications.html

wKgaomWJWGiACsn8AABdyf5i_8A171.jpg

支持InfiniBand的Mellanox CX-7系列網(wǎng)卡:https://nvdam.widen.net/s/csf8rmnqwl/infiniband-ethernet-datasheet-connectx-7-ds-nv-us-2544471

支持InfiniBand的NVIDIA Quantum-2 InfiniBand系列交換機(jī):

https://nvdam.widen.net/s/k8sqcr6gzb/infiniband-quantum-2-qm9700-series-datasheet-us-nvidia-1751454-r8-web

wKgaomWJWGiAW0RdAAAm0gZ492I446.jpg

02構(gòu)建RDMA環(huán)境

使用2張Mellanox CX-4對接測試RoCEv2功能及性能

Mellanox官網(wǎng)下載CX-4的OFED驅(qū)動

下載基礎(chǔ)軟件包
yum install libusbx lsof tcl gcc-gfortran fuse-libs tcsh tk perl pcituiles
解壓驅(qū)動后安裝
./mlnxofedinstall
安裝完成后,載入新驅(qū)動
[root@localhost MLNX_OFED_LINUX-5.8-2.0.3.0-rhel7.9-x86_64]# /etc/init.d/openibd restart
Unloading HCA driver: [ OK ]
Loading HCA driver and Access Layer: [ OK ]

查看節(jié)點(diǎn)上RDMA設(shè)備,node GUID對應(yīng)的是網(wǎng)卡的mac地址

[root@localhost ~]# ibv_devices
device node GUID
------ ----------------
mlx5_0 b8cef60300ed9572
mlx5_1 b8cef60300ed9573

查看device mlx5_0的port狀態(tài),這里rate為25Gb/sec

[root@localhost ~]# ibstatus mlx5_0
Infiniband device 'mlx5_0' port 1 status:
default gid: fe800000bacefeed:9572
base lid: 0x0
sm lid: 0x0
state: 4: ACTIVE
phys state: 5: LinkUp
rate: 25 Gb/sec (1X EDR)
link_layer: Ethernet

到這里,最簡單的RDMA環(huán)境搭建完成,如果需要測試高階功能,例如PFC,ECN或者ECMP則需要更復(fù)雜的組網(wǎng),也需要引入相應(yīng)的交換機(jī)來支持功能的驗(yàn)證。

03RDMA測試實(shí)驗(yàn)

CM建鏈測試

實(shí)驗(yàn)?zāi)康模篊ommunication Management Protocol,通信管理協(xié)議。指的是一種建立于Infiniband/RoCE協(xié)議基礎(chǔ)之上的建鏈方式。以下實(shí)驗(yàn)通過抓取CM建鏈過程中數(shù)據(jù)包交互的過程,來驗(yàn)證是否符合IB協(xié)議所定義的建鏈流程。

以RC建鏈過程測試為例:

服務(wù)端啟動# ib_send_bw -F -d mlx5_0 -s 100 -n 5 -R
客戶端啟動#ib_send_bw -F -d mlx5_0 -s 100 -n 5 192.168.100.9 -R

通過抓包分析RC CM建鏈的過程:

wKgZomWJWGiADwL8AAD6ryVlPRM125.jpg

| CM RC建鏈過程

client和server端交互的數(shù)據(jù)報(bào)文如下:

RC CM建鏈的過程一共有3個數(shù)據(jù)包,分別是ConnectRequest,ConnectReply和ReadToUse。建鏈完成后,就開始按照交換好的QP信息進(jìn)行數(shù)據(jù)發(fā)送。

wKgZomWJWGiAIzSqAACKm2MU2hA507.jpg

REQ用于啟動CM建鏈,client端發(fā)送請求,提供端口地址(GID/LID),以及本端的QPN信息。

wKgZomWJWGiAKRYSAABCIZk14jQ864.jpg

REP用于server端在接收到REQ后,驗(yàn)證了serviceid,primary以及private data里面的數(shù)據(jù)后,接收了client端的連接請求,并且發(fā)送了REP消息,攜帶了本端的QPN,起始PSN等信息。

wKgZomWJWGiAWnwlAAH96VyPb5M691.jpg

RTU消息則表示client端接收到REP后,根據(jù)雙方約定好后的QP進(jìn)行數(shù)據(jù)交互。

wKgaomWJWGiAQwQDAAH05tK2WGg888.jpg

回過頭來查看perftest執(zhí)行后的結(jié)果,本端的QP 190(0x00be)和對端的QP187 (0x00bb)建立連接并發(fā)送數(shù)據(jù)。

[root@localhost ~]# ib_send_bw -F -d mlx5_0 -s 100 -n 5 -R 192.168.100.9
---------------------------------------------------------------------------------------
Send BW Test
Dual-port : OFF Device : mlx5_0
Number of qps : 1 Transport type : IB
Connection type : RC Using SRQ : OFF
PCIe relax order: ON
ibv_wr* API : ON
TX depth : 5
CQ Moderation : 5
Mtu : 1024[B]
Link type : Ethernet
GID index : 3
Max inline data : 0[B]
rdma_cm QPs : ON
Data ex. method : rdma_cm
---------------------------------------------------------------------------------------
local address: LID 0000 QPN 0x00be PSN 0x524880
GID: 0000000000255192100:08
remote address: LID 0000 QPN 0x00bb PSN 0x429476
GID: 0000000000255192100:09
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps]
100 5 49.75 49.74 0.521597
---------------------------------------------------------------------------------------

也可以通過后續(xù)交換的數(shù)據(jù)包來查看QP信息,發(fā)給遠(yuǎn)端QPN 187(0x00bb)的send數(shù)據(jù):

wKgaomWJWKiAHWVCAAGthAok8MM348.jpg

在CM建鏈測試的最后,我們需要關(guān)注在建鏈的過程中,client端和server端其實(shí)是通過send ud消息來交互建鏈過程,這個過程中所使用的QP為QP1。

這里順便提一句,在RDMA中,有幾個QP是預(yù)留的,QP0用于處理子網(wǎng)管理消息,QP1用于處理 SA(Subnet Administrator)或 GS(Generic Services)的消息。

wKgZomWJWKiAQE-1AAKXOLmSRjU577.jpg

RC(Reliable Connection)測試

實(shí)驗(yàn)?zāi)康模涸赗C服務(wù)類型中,通信的兩端建立了一個可靠的連接。這種連接模型提供了類似于TCP的可靠性,確保數(shù)據(jù)的按序傳遞和可靠傳輸。在RDMA的RC模型中,數(shù)據(jù)傳輸?shù)捻樞蚴怯斜U系?,且通信的兩端可以進(jìn)行錯誤檢測和重傳。以下實(shí)驗(yàn)驗(yàn)證client端和server端是否可以建立正常的RC連接,并進(jìn)行數(shù)據(jù)包的傳輸。

RC的測試通常使用write或者read類型的消息來進(jìn)行驗(yàn)證,通過設(shè)置數(shù)據(jù)包長度與pmtu的組合來驗(yàn)證各類消息報(bào)文。

服務(wù)端測試指令

[root@localhost ~]# ib_write_bw -F -d mlx5_0 -s 64 -p 1024 -n 100 -c RC

客戶端測試指令

[root@localhost ~]# ib_write_bw -F -d mlx5_0 -s 64 -p 1024 -n 100 -c RC 192.168.100.9
---------------------------------------------------------------------------------------
RDMA_Write BW Test
Dual-port : OFF Device : mlx5_0
Number of qps : 1 Transport type : IB
Connection type : RC Using SRQ : OFF
PCIe relax order: ON
ibv_wr* API : ON
TX depth : 100
CQ Moderation : 100
Mtu : 1024[B]
Link type : Ethernet
GID index : 3
Max inline data : 0[B]
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0000 QPN 0x00eb PSN 0x76710c RKey 0x1fcffc VAddr 0x000000021a2000
GID: 0000000000255192100:08
remote address: LID 0000 QPN 0x00e8 PSN 0xcc230d RKey 0x1fcef8 VAddr 0x00000000f68000
GID: 0000000000255192100:09
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps]
64 100 243.35 190.55 3.121944
---------------------------------------------------------------------------------------

這里指定了數(shù)據(jù)包長度為64,pmtu長度為1024。當(dāng)數(shù)據(jù)包長度小于pmtu時,則write的消息都為“write only"。

wKgZomWJWKiAUy-YAABL2grjTKM382.jpg

修改數(shù)據(jù)包長度進(jìn)行再次測試,當(dāng)數(shù)據(jù)包長度大于pmtu,且小于2*pmtu時,則wirte的消息為“write first”和“write last”。

wKgZomWJWKiANYgmAAALBgV_Fqg362.jpg

wKgaomWJWKiASe9vAAALArUUY74395.jpg

修改數(shù)據(jù)包長度進(jìn)行再次測試,當(dāng)數(shù)據(jù)包長度大于2*pmtu時,則write的消息為write first”,“write middle”和“write last”。

wKgZomWJWKiANYgmAAALBgV_Fqg362.jpg

wKgaomWJWKmAPEkHAAAK6Bvzghw314.jpg

wKgaomWJWKiASe9vAAALArUUY74395.jpg

當(dāng)然測試的時候也可以修改pmtu進(jìn)行驗(yàn)證,pmtu有嚴(yán)格的長度要求,例如256,512,1024等。如下圖雖然MTU為1500,但是實(shí)際的RDMA PMTU為1024。

[root@localhost /]# ibv_devinfo
hca_id: mlx5_0
transport: InfiniBand (0)
fw_ver: 14.32.1010
node_guid: b8ce00ed:9572
sys_image_guid: b8ce00ed:9572
vendor_id: 0x02c9
vendor_part_id: 4117
hw_ver: 0x0
board_id: MT_2420110034
phys_port_cnt: 1
port: 1
state: PORT_ACTIVE (4)
max_mtu: 4096 (5)
active_mtu: 1024 (3)
sm_lid: 0
port_lid: 0
port_lmc: 0x00
link_layer: Ethernet

UD(Unreliable Datagram)測試

實(shí)驗(yàn)?zāi)康模篣D 連接更注重性能,適用于那些對數(shù)據(jù)傳輸?shù)目煽啃砸笙鄬^低的場景。以下實(shí)驗(yàn)驗(yàn)證client端與server端是否可以建立正常的UD連接,并進(jìn)行數(shù)據(jù)包的傳輸。

在RDMA的消息類型中,UD測試只支持send消息類型,不支持write和read,這里使用send消息進(jìn)行測試。

客戶端測試指令

[root@localhost ~]# ib_send_bw -F -d mlx5_0 -s 64 -p 1024 -n 100 -c UD

服務(wù)端測試指令

[root@localhost ~]# ib_send_bw -F -d mlx5_0 -n 100 -s 64 -p 1024 -c UD 192.168.100.9
---------------------------------------------------------------------------------------
Send BW Test
Dual-port : OFF Device : mlx5_0
Number of qps : 1 Transport type : IB
Connection type : UD Using SRQ : OFF
PCIe relax order: ON
ibv_wr* API : ON
TX depth : 100
CQ Moderation : 100
Mtu : 1024[B]
Link type : Ethernet
GID index : 3
Max inline data : 0[B]
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0000 QPN 0x1146 PSN 0x3def86
GID: 0000000000255192100:08
remote address: LID 0000 QPN 0x1152 PSN 0x3c2738
GID: 0000000000255192100:09
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps]
64 100 152.03 98.70 1.617092
---------------------------------------------------------------------------------------

同RC測試一樣,修改數(shù)據(jù)包長度與pmtu,可以驗(yàn)證不同的send消息報(bào)文,這不分測試不再贅述。


性能測試


RDMA 技術(shù)的設(shè)計(jì)目標(biāo)之一是提供高性能、低延遲的遠(yuǎn)程數(shù)據(jù)訪問,所以在RDMA的實(shí)驗(yàn)中,關(guān)于性能的實(shí)驗(yàn)尤為重要。性能測試項(xiàng)指標(biāo),一般關(guān)注各類型消息的帶寬和延時。

ib_send_lat latency test with send transactions
ib_send_bw bandwidth test with send transactions
ib_write_lat latency test with RDMA write transactions
ib_write_bw bandwidth test with RDMA write transactions
ib_read_lat latency test with RDMA read transactions
ib_read_bw bandwidth test with RDMA read transactions
ib_atomic_lat latency test with atomic transactions
ib_atomic_bw bandwidth test with atomic transactions


>bw測試
這里帶寬測試使用write消息來進(jìn)行
write 服務(wù)端測試指令

[root@localhost ~]# ib_write_bw -F -d mlx5_0 -s 4096 -n 10000 --report_gbits -t 128 -q 4

write客戶端測試指令

[root@localhost ~]# ib_write_bw -F -d mlx5_0 -s 4096 -n 10000 192.168.100.9 --report_gbits -t 128 -q 4
---------------------------------------------------------------------------------------
RDMA_Write BW Test
Dual-port : OFF Device : mlx5_0
Number of qps : 4 Transport type : IB
Connection type : RC Using SRQ : OFF
PCIe relax order: ON
ibv_wr* API : ON
TX depth : 128
CQ Moderation : 100
Mtu : 1024[B]
Link type : Ethernet
GID index : 3
Max inline data : 0[B]
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0000 QPN 0x00df PSN 0x5a67fc RKey 0x1fcff3 VAddr 0x00000000d54000
GID: 0000000000255192100:08
local address: LID 0000 QPN 0x00e0 PSN 0x788b6d RKey 0x1fcff3 VAddr 0x00000000d55000
GID: 0000000000255192100:08
local address: LID 0000 QPN 0x00e1 PSN 0xe597d RKey 0x1fcff3 VAddr 0x00000000d56000
GID: 0000000000255192100:08
local address: LID 0000 QPN 0x00e2 PSN 0x6e9451 RKey 0x1fcff3 VAddr 0x00000000d57000
GID: 0000000000255192100:08
remote address: LID 0000 QPN 0x00dc PSN 0xfe4945 RKey 0x1fceef VAddr 0x00000000a13000
GID: 0000000000255192100:09
remote address: LID 0000 QPN 0x00dd PSN 0xf30d82 RKey 0x1fceef VAddr 0x00000000a14000
GID: 0000000000255192100:09
remote address: LID 0000 QPN 0x00de PSN 0x729a6e RKey 0x1fceef VAddr 0x00000000a15000
GID: 0000000000255192100:09
remote address: LID 0000 QPN 0x00df PSN 0xa2c0ee RKey 0x1fceef VAddr 0x00000000a16000
GID: 0000000000255192100:09
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
4096 40000 23.05 23.05 0.703393
---------------------------------------------------------------------------------------

這里介紹一下幾個性能相關(guān)參數(shù)

s 4096:使用長度為4096字節(jié)的數(shù)據(jù)包進(jìn)行測試,大包的性能會優(yōu)于小包。

n 10000:測試數(shù)據(jù)包數(shù),數(shù)量過小的話測試性能會有偏差。

t 128:tx隊(duì)列深度。

q 4:使用qp數(shù)。

最后帶寬結(jié)果為23.05Gb/sec,上文有描述本次測試使用的網(wǎng)卡帶寬規(guī)格為25Gb/sec,這里RoCE的性能已經(jīng)快要跑滿網(wǎng)卡。

>lat測試

這里進(jìn)行read消息的延時測試

read 服務(wù)端測試指令

[root@localhost ~]# ib_read_lat -F -d mlx5_0 -s 4096 -n 10000

read 客戶端測試指令
測試延時的話是不能使用多QP的,只能使用1個QP進(jìn)行測試

[root@localhost ~]# ib_read_lat -F -d mlx5_0 -s 4096 -n 10000 192.168.100.9 -t 128
---------------------------------------------------------------------------------------
RDMA_Read Latency Test
Dual-port : OFF Device : mlx5_0
Number of qps : 1 Transport type : IB
Connection type : RC Using SRQ : OFF
PCIe relax order: ON
ibv_wr* API : ON
TX depth : 128
Mtu : 1024[B]
Link type : Ethernet
GID index : 3
Outstand reads : 16
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0000 QPN 0x00e9 PSN 0xf265e5 OUT 0x10 RKey 0x1fcffa VAddr 0x00000002090000
GID: 0000000000255192100:08
remote address: LID 0000 QPN 0x00e6 PSN 0x396d2b OUT 0x10 RKey 0x1fcef6 VAddr 0x000000013f0000
GID: 0000000000255192100:09
---------------------------------------------------------------------------------------
#bytes #iterations t_min[usec] t_max[usec] t_typical[usec] t_avg[usec] t_stdev[usec] 99% percentile[usec] 99.9% percentile[usec]
4096 10000 4.89 23.00 5.15 5.27 0.84 6.75 19.88
---------------------------------------------------------------------------------------

觀察最后的延時結(jié)果,其中99.9%的延時實(shí)驗(yàn)數(shù)據(jù)為19.88usec。

04RDMA的抓包方式

抓取RDMA數(shù)據(jù)包流量的方式有多種,交換機(jī)配置端口鏡像后,RDMA數(shù)據(jù)包通過鏡像口抓取比較常見。

這里介紹一種通過容器中的tcpdump捕獲Mellanox RDMA數(shù)據(jù)包的方式。

1)首先拉取tcpdump-rdma的鏡像:

[root@localhost ~]# docker pull mellanox/tcpdump-rdma
Using default tag: latest
latest: Pulling from mellanox/tcpdump-rdma
74f0853ba93b: Pull complete
1f89d668986d: Pull complete
2d176f9a99da: Pull complete
Digest: sha256:3b7b1aa52cf8f9fe0e55845463fb4c4a4147eae1f6bddf5d82b8b08cf954b66c
Status: Downloaded newer image for mellanox/tcpdump-rdma:latest
docker.io/mellanox/tcpdump-rdma:latest


2)啟動tcpdump-rdma容器,通過把主機(jī)上的/dev/infiniband設(shè)備映射到容器中,同時把主機(jī)上的/tmp/rdma目錄也映射到容器中去:


[root@localhost ~]#docker run -it -v /dev/infiniband:/dev/infiniband -v /tmp/rdma:/tmp/rdma --net=host --privileged mellanox/tcpdump-rdma bash


3)進(jìn)入容器后進(jìn)行抓包,最后把pcap數(shù)據(jù)包導(dǎo)入到wireshark后就可以查看RoCE數(shù)據(jù)了:


[root@localhost /]# tcpdump -i mlx5_1 -s 0 -w /tmp/rdma/rdma_data1.pcap


4)打開wireshark查看數(shù)據(jù)包。

3faa3cf4-a30b-11ee-8b88-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    1697

    瀏覽量

    64208
  • 網(wǎng)卡
    +關(guān)注

    關(guān)注

    3

    文章

    296

    瀏覽量

    27246
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    28866

    瀏覽量

    266188
  • RDMA
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    8894

原文標(biāo)題:RDMA測試雜談

文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    深入了解示波器

    深入了解示波器
    發(fā)表于 11-14 22:32

    專家開講:深入了解電池技術(shù) ──Part 1

    。筆者不會一一詳細(xì)介紹所有的電池技術(shù),只選擇一些常見或是值得認(rèn)識的;而在接下來的專欄里,筆者將開始介紹電池分類、常見規(guī)格以及專業(yè)術(shù)語,如果你有特別想知道的電池技術(shù),歡迎留言!擴(kuò)展閱讀:專家開講:深入了解
    發(fā)表于 08-18 09:33

    專家開講:深入了解電池技術(shù) ──Part 2-1

    專家開講:深入了解電池技術(shù) ──Part 2-1 我們在上一篇文章(參考:深入了解電池技術(shù)──Part 1)中談到將在這一系列的文章中探討各種電池
    發(fā)表于 08-18 09:35

    專家開講:深入了解電池技術(shù)──Part 2-2

    以下我們延續(xù)上一篇文章(深入了解電池技術(shù)──Part 2-1),繼續(xù)介紹各種與電池相關(guān)的專業(yè)術(shù)語。˙能量密度(energy density):以瓦特小時/每公升(Wh/L)或兆焦耳/每公升(MJ/L
    發(fā)表于 08-18 09:35

    專家開講:深入了解電池技術(shù)──Part 2-3

    開講:深入了解電池技術(shù) ──Part 1專家開講:深入了解電池技術(shù) ──Part 2-1專家開講:深入了解電池
    發(fā)表于 08-18 09:36

    專家開講:深入了解電池技術(shù)──Part 3

    資深工程師 Ivan Cowie 的「深入了解電池技術(shù)」專欄Part 3來啰!這次要介紹的是鉛酸電池(lead-acidbatteries)技術(shù)。鉛酸電池是在1859年由法國物理學(xué)家Gaston
    發(fā)表于 08-18 09:37

    專家開講:深入了解電池技術(shù)──Part 4 (堿性電池)

    擴(kuò)展閱讀:專家開講:深入了解電池技術(shù) ──Part 1專家開講:深入了解電池技術(shù) ──Part 2-1專家開講:深入了解電池
    發(fā)表于 08-18 09:39

    專家開講:深入了解電池技術(shù)──Part 5 (碳鋅電池)

    Cowie)擴(kuò)展閱讀:專家開講:深入了解電池技術(shù) ──Part 1專家開講:深入了解電池技術(shù) ──Part 2-1專家開講:深入了解電池
    發(fā)表于 08-18 09:42

    專家開講:深入了解電池技術(shù)──Part 6 (鋅空氣電池)

    `專家開講:深入了解電池技術(shù)──Part 6 (鋅空氣電池)資深工程師 Ivan Cowie 的電池專欄這一次要介紹的是鋅空氣電池(zinc-airbatteries;鈕扣型小電池,多應(yīng)用在助聽器
    發(fā)表于 08-18 10:14

    專家開講:深入了解電池技術(shù)──Part 7 (鋰亞硫酸氯電池)

    專家開講:深入了解電池技術(shù)──Part7 (鋰亞硫酸氯電池) 資深工程師 Ivan Cowie 的電池專欄這一次要介紹的是鋰亞硫酸氯電池(lithium thionylchloride
    發(fā)表于 08-18 10:20

    深入了解LabVIEW FPGA資料分享

    深入了解LabVIEW FPGA
    發(fā)表于 05-27 08:35

    深入了解示波器入門手冊

    深入了解示波器入門手冊
    發(fā)表于 03-27 17:43 ?241次下載
    <b class='flag-5'>深入了解</b>示波器入門手冊

    帶你深入了解示波器

    帶你深入了解示波器
    發(fā)表于 02-07 14:26 ?18次下載

    深入了解安全光柵

    深入了解安全光柵
    的頭像 發(fā)表于 06-25 13:53 ?1027次閱讀
    <b class='flag-5'>深入了解</b>安全光柵

    深入了解 GaN 技術(shù)

    深入了解 GaN 技術(shù)
    的頭像 發(fā)表于 12-06 17:28 ?5899次閱讀
    <b class='flag-5'>深入了解</b> GaN <b class='flag-5'>技術(shù)</b>