国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

RDMA性能優(yōu)化經(jīng)驗(yàn)淺談

這篇具有很好參考價(jià)值的文章主要介紹了RDMA性能優(yōu)化經(jīng)驗(yàn)淺談。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、RDMA概述

首先我們介紹一下RDMA的一些核心概念,當(dāng)然了,我并不打算寫(xiě)他的API以及調(diào)用方式,我們更多關(guān)注這些基礎(chǔ)概念背后的硬件執(zhí)行方式和原理,對(duì)于這些原理的理解是能夠?qū)懗龈咝阅躌DMA程序的關(guān)鍵。

Memory Region

RDMA的網(wǎng)卡(下文以RNIC指代)通過(guò)DMA來(lái)讀寫(xiě)系統(tǒng)內(nèi)存,由于DMA只能根據(jù)物理地址訪問(wèn),所以RNIC需要保存一份目標(biāo)內(nèi)存區(qū)域的虛擬內(nèi)存到物理內(nèi)存的映射表,這個(gè)映射表被存儲(chǔ)在RNIC的Memory Translation Table(MTT)中。同時(shí),由于目前RDMA的訪問(wèn)大都基于Direct Cache Access,不支持page-fault,所以我們還需要保證目標(biāo)內(nèi)存區(qū)域是被pagelock住以防止操作系統(tǒng)將這部分內(nèi)存頁(yè)換出。

總結(jié)一下就是,當(dāng)我們使用RDMA來(lái)訪問(wèn)一塊內(nèi)存的時(shí)候,這部分內(nèi)存首先要被pagelock,接著我們還需要把這塊內(nèi)存虛擬地址到邏輯地址的映射表發(fā)送給RNIC用于后續(xù)的訪問(wèn)查找,這個(gè)過(guò)程就叫Memory Registeration,這塊被注冊(cè)的內(nèi)存就是Memory Region。同時(shí)我們注冊(cè)內(nèi)存的時(shí)候需要指定這塊內(nèi)存的訪問(wèn)權(quán)限,RNIC將這個(gè)訪問(wèn)權(quán)限信息存儲(chǔ)在Memory Protection Tables(MPT)中用于用戶(hù)請(qǐng)求時(shí)的權(quán)限驗(yàn)證。

MTT和MPT被存儲(chǔ)在內(nèi)存中,但是RNIC的SRAM中會(huì)進(jìn)行緩存。當(dāng)RNIC接收到來(lái)自用戶(hù)的READ/WRITE請(qǐng)求的時(shí)候,首先在SRAM中的緩存中查找用戶(hù)請(qǐng)求的目標(biāo)地址對(duì)應(yīng)的物理地址以及這塊地址對(duì)應(yīng)的訪問(wèn)權(quán)限,如果緩存命中了,就直接基于DMA進(jìn)行操作,如果沒(méi)有命中,就得通過(guò)PCIe發(fā)送請(qǐng)求,在內(nèi)存的MTT和MPT中進(jìn)行查找,這帶來(lái)了相當(dāng)?shù)念~外開(kāi)銷(xiāo),尤其是當(dāng)你的應(yīng)用場(chǎng)景需要大量的、細(xì)粒度的內(nèi)存訪問(wèn)的時(shí)候,此時(shí)RNIC SRAM中的MTT/MPT命中缺失帶來(lái)的影響可能是致命的。

RDMA性能優(yōu)化經(jīng)驗(yàn)淺談,RDMA專(zhuān)欄,rdma

Memory Region的注冊(cè)是一個(gè)耗時(shí)的操作,但大部分情況下,我們都只需要在最開(kāi)始的時(shí)候做一次或者多次。現(xiàn)在也有不需要注冊(cè)MR基于on-demand paging的方式來(lái)訪問(wèn)的,比如AWS的EFA協(xié)議。但今天先不展開(kāi)這塊的內(nèi)容,因?yàn)檫@塊更多是Unified Memory這個(gè)話(huà)題下的,之后我可能會(huì)把這個(gè)和GPU的UVM放在一起介紹下,因?yàn)樗麄兊暮诵脑砥鋵?shí)是一樣的。

RDMA Verbs

用戶(hù)通過(guò)RDMA的Verbs API向RNIC發(fā)送指令,Verbs分為Memory Verbs和Message Verbs,Memory Verbs主要就是READ、WRITE以及一些ATOMIC的操作,Message Verbs主要包含SEND、RECV。Memory verbs是真正的CPU Bypass以及Kernel Bypass,所以總歸是性能比較好的。Message Verbs需要Responder的CPU的參與,相對(duì)而言更靈活,但是性能相比Memory Verbs而言一般不太行。

Queue Pair

RDMA的hosts之間是通過(guò)Queue Pair(QP)來(lái)通信的,一個(gè)QP包含一個(gè)Send Queue(SQ),一個(gè)Receive Queue(RQ)以及對(duì)應(yīng)的Send Completion Queue(SCQ)和Receive Completion Queue(RCQ)。用戶(hù)發(fā)送請(qǐng)求的時(shí)候,把請(qǐng)求封裝為一個(gè)Work Queue Element(WQE)發(fā)送到SQ里面,然后RDMA網(wǎng)卡會(huì)把這個(gè)WQE發(fā)送出去,當(dāng)這個(gè)WQE完成的時(shí)候,對(duì)應(yīng)的SCQ里面會(huì)被放一個(gè)Completion Queue Element(CQE),然后用戶(hù)可以從SCQ里面Poll這個(gè)CQE并通過(guò)檢查狀態(tài)來(lái)確認(rèn)對(duì)應(yīng)的WQE是否成功完成。需要指出的是,不同的QP可以共用CQ來(lái)減少SRAM的存儲(chǔ)消耗。

RDMA性能優(yōu)化經(jīng)驗(yàn)淺談,RDMA專(zhuān)欄,rdma

接下來(lái),我們重點(diǎn)介紹一下QP背后的知識(shí)。

首先,當(dāng)我們創(chuàng)建了QP之后,系統(tǒng)是需要保存狀態(tài)數(shù)據(jù)的,比如QP的metadata,擁塞控制狀態(tài)等等,除去QP中的WQE、MTT、MPT,一個(gè)QP大約對(duì)應(yīng)375B的狀態(tài)數(shù)據(jù)。這在以前RNIC的SRAM比較小的時(shí)候會(huì)是一個(gè)比較重的存儲(chǔ)負(fù)擔(dān),所以以前的RDMA工作會(huì)有QP Sharing的研究,就是不同的處理線(xiàn)程去共用QP來(lái)減少meta data的存儲(chǔ)壓力,但是這會(huì)帶來(lái)一定的性能的損失[1]?,F(xiàn)在新的RNIC的SRAM已經(jīng)比較大了,Mellanox的CX4、CX5系列的網(wǎng)卡的SRAM大約2MB,所以現(xiàn)在新網(wǎng)卡上,大家還是比較少去關(guān)注QP帶來(lái)的存儲(chǔ)開(kāi)銷(xiāo),除非你要?jiǎng)?chuàng)建幾千個(gè),幾萬(wàn)個(gè)QP。

其次,RNIC是包含多個(gè)Processing Unit(PU)的[2],同時(shí)由于QP內(nèi)的請(qǐng)求處理是具有順序的,且為了避免cross-PU的同步,一般而言我們認(rèn)為一個(gè)QP對(duì)應(yīng)一個(gè)PU來(lái)處理。所以,我們可以在一個(gè)線(xiàn)程內(nèi)建立多個(gè)QP來(lái)加速你數(shù)據(jù)處理,避免RDMA程序性能瓶頸卡在PU的處理上[3]。

RDMA性能優(yōu)化經(jīng)驗(yàn)淺談,RDMA專(zhuān)欄,rdma

二、RDMA性能優(yōu)化

RDMA性能優(yōu)化這個(gè)東西說(shuō)復(fù)雜也復(fù)雜,說(shuō)簡(jiǎn)單也簡(jiǎn)單。簡(jiǎn)單的點(diǎn)在于,從性能優(yōu)化角度而言,其實(shí)軟件層面我們可以做的設(shè)計(jì)和選擇不會(huì)太多,因?yàn)樾阅苌舷奘潜挥布ㄗ〉?,所以我們?yōu)榱俗非蟊M可能逼近硬件上限的性能表現(xiàn),其核心就在于按照硬件最友好的方式去做數(shù)據(jù)訪問(wèn)即可,沒(méi)有特別多復(fù)雜的算法在這里面,當(dāng)你想要高性能的時(shí)候,多多了解硬件就對(duì)了。對(duì)照著我們?cè)谏厦娼榻B的三個(gè)核心概念,我們一一介紹性能優(yōu)化的經(jīng)驗(yàn)。

2.1 關(guān)注地址翻譯的性能開(kāi)銷(xiāo)

前面我們提到,當(dāng)待請(qǐng)求的數(shù)據(jù)地址在RNIC SRAM中的MTT/MPT沒(méi)有命中的時(shí)候,RNIC需要通過(guò)PCIe去在內(nèi)存中的MTT和MPT進(jìn)行查找,這是一個(gè)耗時(shí)的操作。尤其是當(dāng)我們需要 high fan-out、fine-grained的數(shù)據(jù)訪問(wèn)時(shí),這個(gè)開(kāi)銷(xiāo)會(huì)尤為的明顯?,F(xiàn)有針對(duì)這個(gè)問(wèn)題的優(yōu)化方式主要有兩種:

  1. Large Page:無(wú)論是MTT亦或者操作系統(tǒng)的Page Table,虛擬地址到物理地址的映射表項(xiàng)是Page粒度的,即一個(gè)Page對(duì)應(yīng)一個(gè)MTT的Entry或者Page Table的Entry(PTE)。使用Large Page可以有效的減少M(fèi)TT的Size,進(jìn)而使得RNIC中的MTT Cache命中率更高。
  2. 使用Contiguous Memory + PA-MR[4, 5]。新一代的CX網(wǎng)卡支持用戶(hù)基于物理地址訪問(wèn),為了避免維護(hù)一個(gè)繁重的Page Table,我們可以通過(guò)Linux的CMA API來(lái)申請(qǐng)一大塊連續(xù)的物理內(nèi)存。這樣我們的MTT就只有一項(xiàng),可以保證100%的Cache命中率。但是這個(gè)本身有一些安全隱患,因?yàn)槭褂肞A-MR會(huì)繞過(guò)訪問(wèn)權(quán)限驗(yàn)證,所以使用的時(shí)候要注意這點(diǎn)。

當(dāng)然,其實(shí)還有一些別的優(yōu)化手段,在最近我們的工作中提出一種新的方式來(lái)提升地址翻譯的性能,具體等工作開(kāi)源出來(lái)之后我再來(lái)介紹介紹。

2.2 關(guān)注RNIC PU/QP的執(zhí)行模型

一個(gè)QP對(duì)應(yīng)一個(gè)PU,這是我們對(duì)RNIC執(zhí)行方式的一個(gè)簡(jiǎn)單建模。這個(gè)模型下,我們需要通過(guò)多QP來(lái)充分發(fā)揮多PU并行處理的能力,同時(shí)也要關(guān)注我們的操作減少PU之間的同步,PU之間同步對(duì)于性能有著較大的傷害。

2.3 RMDA Verbs

對(duì)于RDMA的Verbs的使用,以我個(gè)人的經(jīng)驗(yàn)來(lái)看,就是優(yōu)先使用READ/WRITE,在一些需要CPU介入且需要Batch處理邏輯的,可以嘗試使用SEND/RECV。過(guò)往的工作有很多基于READ/WRITE去構(gòu)建Message Passing處理語(yǔ)義的工作[1, 6, 7],可以著重參考。

同時(shí),一個(gè)READ/WRITE的WQE可以通過(guò)設(shè)置對(duì)應(yīng)的FLAG來(lái)設(shè)置其是否需要在完成時(shí)需要被SIGNALED,如果不需要?jiǎng)t該WQE完成時(shí)不會(huì)產(chǎn)生一個(gè)CQE。此時(shí)一個(gè)常見(jiàn)的優(yōu)化技巧是,當(dāng)你需要連續(xù)在一個(gè)QP中發(fā)送K個(gè)READ/WRITE請(qǐng)求時(shí),只把最后一個(gè)請(qǐng)求設(shè)置為SIGNALED,其他均為UNSIGNALED,由于QP的執(zhí)行本身具備順序關(guān)系,所以最后一個(gè)執(zhí)行完了后一定意味著之前的WQE都已經(jīng)執(zhí)行完了。當(dāng)然,是否執(zhí)行成功需要Application-Specific的方法來(lái)確認(rèn)。

三、 RNIC+ X

最經(jīng)典的RNIC的使用方式自然是RNIC + System Memory,即直接通過(guò)RNIC來(lái)訪問(wèn)內(nèi)存。但是隨著GP-GPU、NVM的發(fā)展,通過(guò)RNIC來(lái)直接訪問(wèn)GPU或者通過(guò)RNIC來(lái)直接訪問(wèn)NVM都是目前比較成熟和熱門(mén)的技術(shù)。RDMA + GPU可以大幅度加速GPU和GPU之間的通信,RDMA + NVM則可以大幅度的擴(kuò)大內(nèi)存容量,減少網(wǎng)絡(luò)通信的需求。這塊內(nèi)容既涉及到硬件又涉及到操作系統(tǒng)的虛擬內(nèi)存機(jī)制,要講清楚需要不少篇幅,我們放在下一篇進(jìn)行介紹。

四、總結(jié)

本篇文章主要是介紹一些RDMA的基礎(chǔ)概念以及背后的原理,基于這些概念和原理我們介紹了RDMA的常見(jiàn)性能優(yōu)化技巧,下一篇我們將會(huì)介紹RNIC + X,包括RNIC + GPU以及RNIC + NVM的內(nèi)容介紹,感興趣的讀者朋友可以保持關(guān)注~。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-693787.html

到了這里,關(guān)于RDMA性能優(yōu)化經(jīng)驗(yàn)淺談的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • RDMA編程實(shí)例rdma_cm API

    RDMA編程基礎(chǔ) 存儲(chǔ)大師班 | RDMA簡(jiǎn)介與編程基礎(chǔ) -https://zhuanlan.zhihu.com/p/387549948 1. RDMA的學(xué)習(xí)環(huán)境搭建 RDMA需要專(zhuān)門(mén)的RDMA網(wǎng)卡或者InfiniBand卡才能使用,學(xué)習(xí)RDMA而又沒(méi)有這些硬件設(shè)備,可以使用一個(gè)軟件RDMA模擬環(huán)境,softiwarp , - 這是加載地址:https://github.com/zrlio/softiwarp - 這是安

    2024年02月04日
    瀏覽(17)
  • 使用libibverbs構(gòu)建RDMA應(yīng)用

    使用libibverbs構(gòu)建RDMA應(yīng)用

    Dissecting a Small InfiniBand Application Using the Verbs API Abstract | 摘要 InfiniBand is a switched fabric interconnect. The InfiniBand specification does not define an API. However the OFED package, libibverbs, has become the default API on Linux and Solaris systems. Sparse documentation exists for the verbs API. The simplest InfiniBand program provide

    2024年04月11日
    瀏覽(18)
  • RDMA在KVM實(shí)現(xiàn)條件

    CPU必須支持 Intel VT-d 或 AMD-Vi(IOMMU)技術(shù) demsg要包含下述兩部分 DMAR: Intel(R) Virtualization Technology for Directed I/O DMAR: IOMMU enabled 檢查CPU是否支持VT-d或AMD-Vi # dmesg |grep -e? \\\"DMAR\\\" ? -e? \\\"IOMMU\\\" |grep -e? \\\"Virtualization\\\" ? -e enabled [???? 0.000000 ] DMAR: IOMMU enabled [???? 0.001068 ] DMAR-IR: Queued

    2024年01月25日
    瀏覽(41)
  • 聚焦112Gb/s SerDes芯片的AN/LT端口自協(xié)商和鏈路學(xué)習(xí),評(píng)估驗(yàn)證高速鏈路的信號(hào)質(zhì)量并分析調(diào)優(yōu)(400/800G高速以太網(wǎng)互聯(lián)接口,AI加速卡網(wǎng)絡(luò)RDMA性能測(cè)試,交換背板接口性能評(píng)估)

    聚焦112Gb/s SerDes芯片的AN/LT端口自協(xié)商和鏈路學(xué)習(xí),評(píng)估驗(yàn)證高速鏈路的信號(hào)質(zhì)量并分析調(diào)優(yōu)(400/800G高速以太網(wǎng)互聯(lián)接口,AI加速卡網(wǎng)絡(luò)RDMA性能測(cè)試,交換背板接口性能評(píng)估)

    目錄 引言 關(guān)于使用112G Serdes的100G、200G和400G以太網(wǎng)的簡(jiǎn)要背景 自動(dòng)協(xié)商的基礎(chǔ)知識(shí) 基礎(chǔ)頁(yè)和下一頁(yè) / Base Page and Next Pages DME基礎(chǔ)頁(yè)(IEEE802.3第73條) 下一頁(yè) (IEEE802.3) 下一頁(yè)(以太網(wǎng)技術(shù)聯(lián)盟) AN過(guò)程 優(yōu)先表決 鏈路訓(xùn)練 訓(xùn)練幀 鏈路訓(xùn)練過(guò)程 如何使用AN和LT 結(jié)論 Freya - Xena的

    2024年02月16日
    瀏覽(52)
  • RDMA Scatter Gather List詳解

    RDMA Scatter Gather List詳解

    1. 前言 在使用RDMA操作之前,我們需要了解一些RDMA API中的一些需要的值。其中在ibv_send_wr我們需要一個(gè)sg_list的數(shù)組,sg_list是用來(lái)存放ibv_sge元素,那么什么是SGL以及什么是sge呢?對(duì)于一個(gè)使用RDMA進(jìn)行開(kāi)發(fā)的程序員來(lái)說(shuō),我們需要了解這一系列細(xì)節(jié)。 2. SGE簡(jiǎn)介 在NVMe over PCIe中

    2024年01月20日
    瀏覽(17)
  • RDMA 、RoCE 、IB 、TCP、Ethernet

    RDMA 、RoCE 、IB 、TCP、Ethernet

    ROCE(Remote Direct Memory Access over Converged Ethernet)是一種網(wǎng)絡(luò)技術(shù),它結(jié)合了RDMA(遠(yuǎn)程直接內(nèi)存訪問(wèn))和以太網(wǎng)交換機(jī)的特性。ROCE允許主機(jī)之間通過(guò)以太網(wǎng)進(jìn)行高效的直接內(nèi)存訪問(wèn),從而提供低延遲、高吞吐量的數(shù)據(jù)傳輸。 在使用ROCE時(shí),需要在網(wǎng)絡(luò)中部署支持ROCE的以太網(wǎng)交換

    2024年02月12日
    瀏覽(48)
  • 基于RDMA的云服務(wù)能力實(shí)踐與探索

    基于RDMA的云服務(wù)能力實(shí)踐與探索

    01? ?背景? ? ? ????隨著基于大數(shù)據(jù)大模型構(gòu)建的數(shù)據(jù)系統(tǒng)越來(lái)越有商業(yè)價(jià)值,機(jī)器學(xué)習(xí)的玩家也越來(lái)越多,數(shù)據(jù)量越來(lái)越大。為解決海量數(shù)據(jù)在服務(wù)器之間的同步效率問(wèn)題,RDMA(Remote Direct Memory Access) 技術(shù)逐漸走進(jìn)了網(wǎng)絡(luò)技術(shù)人員的視野。RDMA為什么能夠成為機(jī)器學(xué)習(xí)中網(wǎng)

    2024年04月09日
    瀏覽(31)
  • RDMA vs InfiniBand 網(wǎng)卡接口如何區(qū)分?

    RDMA vs InfiniBand 網(wǎng)卡接口如何區(qū)分?

    ?(該架構(gòu)圖來(lái)源于參考文獻(xiàn))? 高性能計(jì)算網(wǎng)絡(luò),RoCE vs. InfiniBand該怎么選? 新 RoCEv2 標(biāo)準(zhǔn)可實(shí)現(xiàn) RDMA 路由在第三層以太網(wǎng)網(wǎng)絡(luò)中的傳輸。RoCEv2 規(guī)范將用以太網(wǎng)鏈路層上的 IP 報(bào)頭和 UDP 報(bào)頭替代 InfiniBand 網(wǎng)絡(luò)層。這樣,就可以在基于 IP 的傳統(tǒng)路由器之間路由 RoCE。? RoCE v1協(xié)議:

    2024年01月25日
    瀏覽(28)
  • RDMA編程實(shí)踐-SEND-RECEICVE原語(yǔ)應(yīng)用

    RDMA編程實(shí)踐-SEND-RECEICVE原語(yǔ)應(yīng)用

    本文描述了RDMA編程過(guò)程中的SEND-RECEIVE雙邊原語(yǔ)的代碼實(shí)現(xiàn)。包含多個(gè)版本,1、client向server發(fā)送消息,server回復(fù)client收到消息(ACK),然后兩邊斷開(kāi)連接。2、server端循環(huán)等待客戶(hù)端建立連接,client發(fā)送一次消息后,雙方斷開(kāi)連接。3、server端循環(huán)等待客戶(hù)端建立連接,一旦建立,

    2024年01月19日
    瀏覽(13)
  • 博通BCM575系列 RDMA 網(wǎng)卡驅(qū)動(dòng) bnxt_re 分析(一)

    博通BCM575系列 RDMA 網(wǎng)卡驅(qū)動(dòng) bnxt_re 分析(一)

    整個(gè)BCM系列驅(qū)動(dòng)分成以太網(wǎng)部分(bnxt_en.ko)和RDMA部分(bnxt_re.ko), 兩個(gè)模塊之間通過(guò)內(nèi)核的auxiliary_bus進(jìn)行管理.我們主要分析下bnxt_re驅(qū)動(dòng). 這個(gè)驅(qū)動(dòng)的核心是 qplib_fp.c, 這個(gè)文件主要包含了驅(qū)動(dòng)的數(shù)據(jù)路徑, 包括Post Send, Post Recv, Poll CQ流程的實(shí)現(xiàn). ib_verbs.c主要是實(shí)現(xiàn)了上層的Verbs接口

    2024年02月08日
    瀏覽(35)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包