作者簡(jiǎn)介
Explorer,專注于高性能網(wǎng)絡(luò)、虛擬化網(wǎng)絡(luò)及網(wǎng)卡的測(cè)試方案研究。熟悉dpdk,rdma,sdn等技術(shù)的應(yīng)用與解決方案。
01深入了解RDMA技術(shù)
背景概述
隨著互聯(lián)網(wǎng)的普及和數(shù)字化轉(zhuǎn)型的加速,大量數(shù)據(jù)被生成和傳輸。在AI訓(xùn)練和推理、大數(shù)據(jù)分析以及存儲(chǔ)應(yīng)用中,處理這些海量數(shù)據(jù)變得至關(guān)重要。因此,高性能網(wǎng)絡(luò)對(duì)于快速而可靠的數(shù)據(jù)傳輸至關(guān)重要。
RDMA(Remote Direct Memory Access,遠(yuǎn)程直接內(nèi)存訪問(wèn))是一種高效的數(shù)據(jù)傳輸技術(shù),它使得兩臺(tái)計(jì)算機(jī)之間可以直接從對(duì)方的內(nèi)存中讀取或?qū)懭霐?shù)據(jù),而不需要CPU的介入。通過(guò)RDMA,計(jì)算機(jī)之間的數(shù)據(jù)傳輸速度更快,延遲更低,傳輸效率更高,而且可以減少CPU的負(fù)載。
應(yīng)用場(chǎng)景
RDMA技術(shù)在各個(gè)領(lǐng)域都有廣泛的應(yīng)用,其高性能和低延遲的特點(diǎn)使其成為許多應(yīng)用的關(guān)鍵組成部分,以下是當(dāng)前RDMA技術(shù)的一些應(yīng)用場(chǎng)景介紹:
高性能計(jì)算(HPC)
RDMA技術(shù)在HPC領(lǐng)域得到廣泛應(yīng)用,用于大規(guī)??茖W(xué)計(jì)算、氣象模擬、分子建模等任務(wù)。RDMA可以實(shí)現(xiàn)節(jié)點(diǎn)之間的快速數(shù)據(jù)共享,從而加速?gòu)?fù)雜計(jì)算任務(wù)的完成,降低了整體計(jì)算時(shí)間。
云計(jì)算和虛擬化
公有云和私有云服務(wù)提供商采用RDMA技術(shù)來(lái)改善虛擬機(jī)之間的通信性能。這在云環(huán)境中特別重要,因?yàn)樗梢蕴岣咛摂M機(jī)之間的網(wǎng)絡(luò)吞吐量,從而提高了云計(jì)算資源的利用率。
存儲(chǔ)系統(tǒng)
RDMA技術(shù)在高性能存儲(chǔ)系統(tǒng)中發(fā)揮重要作用,如分布式文件系統(tǒng)、SAN存儲(chǔ)、塊存儲(chǔ)等。它提供了低延遲、高帶寬的數(shù)據(jù)傳輸,有助于加速數(shù)據(jù)讀寫(xiě)操作,提高存儲(chǔ)性能。
金融交易
在金融領(lǐng)域,時(shí)間和性能至關(guān)重要。RDMA技術(shù)用于構(gòu)建低延遲的交易系統(tǒng),確保交易數(shù)據(jù)能夠?qū)崟r(shí)傳輸和處理,從而降低了交易風(fēng)險(xiǎn)。
訓(xùn)練深度學(xué)習(xí)模型需要大量數(shù)據(jù)傳輸和計(jì)算資源。RDMA技術(shù)可用于加速大規(guī)模深度學(xué)習(xí)任務(wù),減少模型訓(xùn)練時(shí)間。
實(shí)時(shí)數(shù)據(jù)分析
對(duì)于需要實(shí)時(shí)數(shù)據(jù)分析的應(yīng)用,如廣告投放、市場(chǎng)分析和網(wǎng)絡(luò)安全監(jiān)控,RDMA技術(shù)可以確保數(shù)據(jù)能夠?qū)崟r(shí)傳輸和分析,提供即時(shí)決策支持。
遠(yuǎn)程備份和復(fù)制
在數(shù)據(jù)備份和復(fù)制中,RDMA技術(shù)可以加速數(shù)據(jù)傳輸,降低備份時(shí)間,同時(shí)提供數(shù)據(jù)完整性和可靠性。
高性能數(shù)據(jù)庫(kù)
RDMA技術(shù)可用于構(gòu)建高性能數(shù)據(jù)庫(kù)系統(tǒng),實(shí)現(xiàn)快速數(shù)據(jù)訪問(wèn)和查詢操作,從而加速數(shù)據(jù)處理。
RDMA技術(shù)在各種領(lǐng)域中都有重要應(yīng)用,特別是在需要高性能、低延遲和大規(guī)模數(shù)據(jù)傳輸?shù)膱?chǎng)景中。它為這些應(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)存之間傳輸,而不需要通過(guò)操作系統(tǒng)內(nèi)核。傳統(tǒng)的Socket通信在數(shù)據(jù)傳輸時(shí)需要將數(shù)據(jù)從用戶空間復(fù)制到內(nèi)核空間,然后再?gòu)膬?nèi)核空間復(fù)制到另一個(gè)用戶空間。而RDMA通過(guò)繞過(guò)內(nèi)核,使數(shù)據(jù)可以直接在用戶空間之間傳輸,從而減少了數(shù)據(jù)復(fù)制的開(kāi)銷,提高了數(shù)據(jù)傳輸效率。
零拷貝:RDMA支持零拷貝操作,意味著數(shù)據(jù)可以直接在應(yīng)用程序的內(nèi)存空間中傳輸,而無(wú)需中間的數(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)存訪問(wèn)和零拷貝特性導(dǎo)致了低延遲和高吞吐量。數(shù)據(jù)可以直接在內(nèi)存之間傳輸,而不需要中間的數(shù)據(jù)復(fù)制,從而減少了通信的延遲并提高了數(shù)據(jù)傳輸?shù)乃俾省?/p>
支持遠(yuǎn)程直接內(nèi)存訪問(wèn):RDMA允許應(yīng)用程序直接訪問(wèn)遠(yuǎn)程主機(jī)的內(nèi)存,而無(wú)需通過(guò)中間服務(wù)器進(jìn)行數(shù)據(jù)傳輸。這使得在分布式系統(tǒng)中進(jìn)行高效的數(shù)據(jù)共享成為可能,同時(shí)減少了通信的開(kāi)銷。
支持協(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)對(duì)點(diǎn)消息隊(duì)列轉(zhuǎn)發(fā)模型,每個(gè)應(yīng)用都可通過(guò)創(chuàng)建的虛擬通道直接獲取本應(yīng)用的數(shù)據(jù)消息,無(wú)需其他操作系統(tǒng)及協(xié)議棧的介入。InfiniBand架構(gòu)的應(yīng)用層采用了RDMA技術(shù),可以提供遠(yuǎn)程節(jié)點(diǎn)間RDMA讀寫(xiě)訪問(wèn),完全卸載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)文頭,通過(guò)Ethertype 0x8915標(biāo)識(shí)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)文頭,通過(guò)UDP目的端口號(hào)4791標(biāo)識(shí)RoCE報(bào)文。RoCE v2支持基于源端口號(hào)hash,采用ECMP實(shí)現(xiàn)負(fù)載分擔(dān),提高了網(wǎng)絡(luò)的利用率。
下圖為RoCE的協(xié)議棧:
| RoCE協(xié)議棧
>iWARP
iWARP協(xié)議是IETF基于TCP提出的,因?yàn)門(mén)CP是面向連接的可靠協(xié)議,這使得iWARP在面對(duì)有損網(wǎng)絡(luò)場(chǎng)景(可以理解為網(wǎng)絡(luò)環(huán)境中可能經(jīng)常出現(xiàn)丟包)時(shí)相比于RoCE v2和IB具有更好的可靠性,在大規(guī)模組網(wǎng)時(shí)也有明顯的優(yōu)勢(shì)。但是大量的TCP連接會(huì)耗費(fèi)很多的內(nèi)存資源,另外TCP復(fù)雜的流控等機(jī)制會(huì)導(dǎo)致性能問(wèn)題,所以從性能上看iWARP要比UDP的RoCE v2和IB差。
>網(wǎng)絡(luò)設(shè)備
在實(shí)際的生產(chǎn)環(huán)境中,無(wú)論是何種協(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
支持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
02構(gòu)建RDMA環(huán)境
使用2張Mellanox CX-4對(duì)接測(cè)試RoCEv2功能及性能
Mellanox官網(wǎng)下載CX-4的OFED驅(qū)動(dòng)
下載基礎(chǔ)軟件包
yum install libusbx lsof tcl gcc-gfortran fuse-libs tcsh tk perl pcituiles
解壓驅(qū)動(dòng)后安裝
./mlnxofedinstall
安裝完成后,載入新驅(qū)動(dòng)
[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對(duì)應(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
到這里,最簡(jiǎn)單的RDMA環(huán)境搭建完成,如果需要測(cè)試高階功能,例如PFC,ECN或者ECMP則需要更復(fù)雜的組網(wǎng),也需要引入相應(yīng)的交換機(jī)來(lái)支持功能的驗(yàn)證。
03RDMA測(cè)試實(shí)驗(yàn)
CM建鏈測(cè)試
實(shí)驗(yàn)?zāi)康模篊ommunication Management Protocol,通信管理協(xié)議。指的是一種建立于Infiniband/RoCE協(xié)議基礎(chǔ)之上的建鏈方式。以下實(shí)驗(yàn)通過(guò)抓取CM建鏈過(guò)程中數(shù)據(jù)包交互的過(guò)程,來(lái)驗(yàn)證是否符合IB協(xié)議所定義的建鏈流程。
以RC建鏈過(guò)程測(cè)試為例:
服務(wù)端啟動(dòng)# ib_send_bw -F -d mlx5_0 -s 100 -n 5 -R
客戶端啟動(dòng)#ib_send_bw -F -d mlx5_0 -s 100 -n 5 192.168.100.9 -R
通過(guò)抓包分析RC CM建鏈的過(guò)程:
| CM RC建鏈過(guò)程
client和server端交互的數(shù)據(jù)報(bào)文如下:
RC CM建鏈的過(guò)程一共有3個(gè)數(shù)據(jù)包,分別是ConnectRequest,ConnectReply和ReadToUse。建鏈完成后,就開(kāi)始按照交換好的QP信息進(jìn)行數(shù)據(jù)發(fā)送。
REQ用于啟動(dòng)CM建鏈,client端發(fā)送請(qǐng)求,提供端口地址(GID/LID),以及本端的QPN信息。
REP用于server端在接收到REQ后,驗(yàn)證了serviceid,primary以及private data里面的數(shù)據(jù)后,接收了client端的連接請(qǐng)求,并且發(fā)送了REP消息,攜帶了本端的QPN,起始PSN等信息。
RTU消息則表示client端接收到REP后,根據(jù)雙方約定好后的QP進(jìn)行數(shù)據(jù)交互。
回過(guò)頭來(lái)查看perftest執(zhí)行后的結(jié)果,本端的QP 190(0x00be)和對(duì)端的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
---------------------------------------------------------------------------------------
也可以通過(guò)后續(xù)交換的數(shù)據(jù)包來(lái)查看QP信息,發(fā)給遠(yuǎn)端QPN 187(0x00bb)的send數(shù)據(jù):
在CM建鏈測(cè)試的最后,我們需要關(guān)注在建鏈的過(guò)程中,client端和server端其實(shí)是通過(guò)send ud消息來(lái)交互建鏈過(guò)程,這個(gè)過(guò)程中所使用的QP為QP1。
這里順便提一句,在RDMA中,有幾個(gè)QP是預(yù)留的,QP0用于處理子網(wǎng)管理消息,QP1用于處理 SA(Subnet Administrator)或 GS(Generic Services)的消息。
RC(Reliable Connection)測(cè)試
實(shí)驗(yàn)?zāi)康模涸赗C服務(wù)類型中,通信的兩端建立了一個(gè)可靠的連接。這種連接模型提供了類似于TCP的可靠性,確保數(shù)據(jù)的按序傳遞和可靠傳輸。在RDMA的RC模型中,數(shù)據(jù)傳輸?shù)捻樞蚴怯斜U系模彝ㄐ诺膬啥丝梢赃M(jìn)行錯(cuò)誤檢測(cè)和重傳。以下實(shí)驗(yàn)驗(yàn)證client端和server端是否可以建立正常的RC連接,并進(jìn)行數(shù)據(jù)包的傳輸。
RC的測(cè)試通常使用write或者read類型的消息來(lái)進(jìn)行驗(yàn)證,通過(guò)設(shè)置數(shù)據(jù)包長(zhǎng)度與pmtu的組合來(lái)驗(yàn)證各類消息報(bào)文。
服務(wù)端測(cè)試指令
[root@localhost ~]# ib_write_bw -F -d mlx5_0 -s 64 -p 1024 -n 100 -c RC
客戶端測(cè)試指令
[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ù)包長(zhǎng)度為64,pmtu長(zhǎng)度為1024。當(dāng)數(shù)據(jù)包長(zhǎng)度小于pmtu時(shí),則write的消息都為“write only"。
修改數(shù)據(jù)包長(zhǎng)度進(jìn)行再次測(cè)試,當(dāng)數(shù)據(jù)包長(zhǎng)度大于pmtu,且小于2*pmtu時(shí),則wirte的消息為“write first”和“write last”。
修改數(shù)據(jù)包長(zhǎng)度進(jìn)行再次測(cè)試,當(dāng)數(shù)據(jù)包長(zhǎng)度大于2*pmtu時(shí),則write的消息為write first”,“write middle”和“write last”。
當(dāng)然測(cè)試的時(shí)候也可以修改pmtu進(jìn)行驗(yàn)證,pmtu有嚴(yán)格的長(zhǎng)度要求,例如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)測(cè)試
實(shí)驗(yàn)?zāi)康模篣D 連接更注重性能,適用于那些對(duì)數(shù)據(jù)傳輸?shù)目煽啃砸笙鄬?duì)較低的場(chǎng)景。以下實(shí)驗(yàn)驗(yàn)證client端與server端是否可以建立正常的UD連接,并進(jìn)行數(shù)據(jù)包的傳輸。
在RDMA的消息類型中,UD測(cè)試只支持send消息類型,不支持write和read,這里使用send消息進(jìn)行測(cè)試。
客戶端測(cè)試指令
[root@localhost ~]# ib_send_bw -F -d mlx5_0 -s 64 -p 1024 -n 100 -c UD
服務(wù)端測(cè)試指令
[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測(cè)試一樣,修改數(shù)據(jù)包長(zhǎng)度與pmtu,可以驗(yàn)證不同的send消息報(bào)文,這不分測(cè)試不再贅述。
性能測(cè)試
RDMA 技術(shù)的設(shè)計(jì)目標(biāo)之一是提供高性能、低延遲的遠(yuǎn)程數(shù)據(jù)訪問(wèn),所以在RDMA的實(shí)驗(yàn)中,關(guān)于性能的實(shí)驗(yàn)尤為重要。性能測(cè)試項(xiàng)指標(biāo),一般關(guān)注各類型消息的帶寬和延時(shí)。
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測(cè)試
這里帶寬測(cè)試使用write消息來(lái)進(jìn)行
write 服務(wù)端測(cè)試指令
[root@localhost ~]# ib_write_bw -F -d mlx5_0 -s 4096 -n 10000 --report_gbits -t 128 -q 4
write客戶端測(cè)試指令
[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
---------------------------------------------------------------------------------------
這里介紹一下幾個(gè)性能相關(guān)參數(shù):
s 4096:使用長(zhǎng)度為4096字節(jié)的數(shù)據(jù)包進(jìn)行測(cè)試,大包的性能會(huì)優(yōu)于小包。
n 10000:測(cè)試數(shù)據(jù)包數(shù),數(shù)量過(guò)小的話測(cè)試性能會(huì)有偏差。
t 128:tx隊(duì)列深度。
q 4:使用qp數(shù)。
最后帶寬結(jié)果為23.05Gb/sec,上文有描述本次測(cè)試使用的網(wǎng)卡帶寬規(guī)格為25Gb/sec,這里RoCE的性能已經(jīng)快要跑滿網(wǎng)卡。
>lat測(cè)試
這里進(jìn)行read消息的延時(shí)測(cè)試
read 服務(wù)端測(cè)試指令
[root@localhost ~]# ib_read_lat -F -d mlx5_0 -s 4096 -n 10000
read 客戶端測(cè)試指令
測(cè)試延時(shí)的話是不能使用多QP的,只能使用1個(gè)QP進(jìn)行測(cè)試
[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
---------------------------------------------------------------------------------------
觀察最后的延時(shí)結(jié)果,其中99.9%的延時(shí)實(shí)驗(yàn)數(shù)據(jù)為19.88usec。
04RDMA的抓包方式
抓取RDMA數(shù)據(jù)包流量的方式有多種,交換機(jī)配置端口鏡像后,RDMA數(shù)據(jù)包通過(guò)鏡像口抓取比較常見(jiàn)。
這里介紹一種通過(guò)容器中的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)啟動(dòng)tcpdump-rdma容器,通過(guò)把主機(jī)上的/dev/infiniband設(shè)備映射到容器中,同時(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)打開(kāi)wireshark查看數(shù)據(jù)包。
審核編輯:湯梓紅
-
數(shù)據(jù)傳輸
+關(guān)注
關(guān)注
9文章
1890瀏覽量
64593 -
網(wǎng)卡
+關(guān)注
關(guān)注
4文章
311瀏覽量
27384 -
AI
+關(guān)注
關(guān)注
87文章
30887瀏覽量
269062 -
RDMA
+關(guān)注
關(guān)注
0文章
77瀏覽量
8949
原文標(biāo)題:RDMA測(cè)試雜談
文章出處:【微信號(hào):SDNLAB,微信公眾號(hào):SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論