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

優(yōu)化 RDMA 代碼的建議和技巧-rdma性能優(yōu)化技巧-避坑指南

這篇具有很好參考價值的文章主要介紹了優(yōu)化 RDMA 代碼的建議和技巧-rdma性能優(yōu)化技巧-避坑指南。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

RDMA 被用在很多地方,主要是因為它可以實現(xiàn)高性能。在這篇文章中,我將提供有關如何從多個方面優(yōu)化 RDMA 代碼的建議和技巧

簡單的科普下RDMA

什么是RDMA?

DMA 代表直接內(nèi)存訪問。這意味著應用程序可以在 CPU 干預的情況下直接訪問(讀/寫)主機內(nèi)存。如果您在主機之間執(zhí)行此操作,它將成為遠程直接內(nèi)存訪問 (RDMA)

在閱讀有關 RDMA 的內(nèi)容時,您會注意到一些用于描述其優(yōu)點的術語。 “零復制 Zero Copy”、“內(nèi)核繞過 Kernel Bypass”、“協(xié)議卸載 Protocol Offload”和“協(xié)議加速 Protocol Acceleration”等術語

RDMA 的工作原理

RDMA 的工作原理是通過硬件路徑(NIC 和網(wǎng)絡)將數(shù)據(jù)從一臺主機上的用戶應用程序內(nèi)存直接復制到另一臺主機上的用戶應用程序內(nèi)存中。RDMA是下圖中的藍線(圖 3)。綠線描繪了您早已了解的傳統(tǒng) TCP/IP 流量

優(yōu)化 RDMA 代碼的建議和技巧-rdma性能優(yōu)化技巧-避坑指南,RDMA,網(wǎng)絡,服務器,數(shù)據(jù)庫,網(wǎng)絡

請注意,如果應用程序駐留在內(nèi)核空間中,它“僅”繞過操作系統(tǒng)堆棧和系統(tǒng)驅(qū)動程序,但這仍然提供了顯著的性能提升

零復制和內(nèi)核繞過

這些術語指的是 RDMA 提供的速度增益,因為與正常的 TCP/IP 行為相比,數(shù)據(jù)不必多次從應用程序內(nèi)存緩沖區(qū)復制到內(nèi)核內(nèi)存緩沖區(qū)。RDMA通過其他復制操作傳遞到 NIC,NIC 通過網(wǎng)絡將其發(fā)送到其他主機。在另一臺主機上,必須發(fā)生相反的過程。 NIC 內(nèi)存緩沖區(qū)中的數(shù)據(jù)被復制到內(nèi)核空間,并在內(nèi)核空間中再次復制并發(fā)送到用戶空間到應用程序內(nèi)存緩沖區(qū)。

您會注意到正在進行大量復制,這是 RDMA 避免的開銷(零復制)。通過這樣做,還可以避免用戶空間和內(nèi)核空間之間的上下文切換(內(nèi)核繞過)。這極大地加快了速度。

CPU 卸載/旁路

該工作實際上被卸載到 NIC,因此它繞過了主機的 CPU(CPU Offload 或 Bypass)。這樣做有兩個優(yōu)點:

1. 應用程序可以訪問(遠程)內(nèi)存,而無需內(nèi)核和用戶空間進程消耗任何主機 CPU 周期進行讀寫。

2. CPU 中的緩存不會被訪問的內(nèi)存內(nèi)容填充。

CPU 周期和緩存可用于實際的應用程序工作負載,而不是用于移動數(shù)據(jù)。其好處通常是 CPU 開銷減少 20% 到 25%

傳輸協(xié)議加速

最后,RDMA 可以執(zhí)行稱為協(xié)議加速的操作。基于消息的事務以及進行收集/分散(SGL)的能力(讀取多個緩沖區(qū)并將它們作為一個整體發(fā)送,同時將它們寫入多個接收緩沖區(qū))加快了實際數(shù)據(jù)移動的速度。這有很多細節(jié)。?SNIA(存儲網(wǎng)絡行業(yè)協(xié)會)和學術研究人員的演示文稿和出版物很容易在互聯(lián)網(wǎng)上獲得,并且可能變得相當技術性

結論是 RDMA 協(xié)議本質(zhì)上是很快的。

為什么我們需要它?

除了高性能計算之外,過去十年中我們還看到各種東西方流量持續(xù)大幅增長。這始于虛擬化,它與虛擬機移動性一起帶來了性能和性能的提升。可擴展性對許多資源(網(wǎng)絡、存儲、計算)提出了挑戰(zhàn)。最重要的是,我們看到超融合基礎設施(HCI)、存儲復制和其他用例等趨勢消耗了更多的帶寬。與此同時,隨著我們獲得更快的存儲選項(NVMe、各種類型的 NVDIMM(N、F、P)或英特爾的 3D XPoint),對超低延遲的需求也隨之增加,這導致了圍繞其功能的新架構。

優(yōu)化 RDMA 代碼的建議和技巧-rdma性能優(yōu)化技巧-避坑指南,RDMA,網(wǎng)絡,服務器,數(shù)據(jù)庫,網(wǎng)絡

圖 4:毫無疑問,非易失性 DIMM(及其所有變體)將進一步推動對 RDMA 的需求(圖片由 DELL 提供)

一般建議

1. 避免在數(shù)據(jù)路徑中使用控制操作

與保留在調(diào)用它們的同一上下文中(即不執(zhí)行上下文切換)并且以優(yōu)化方式編寫的數(shù)據(jù)操作不同,控制操作(所有創(chuàng)建/銷毀/查詢/修改)操作非常昂貴, 因為:

  • 大多數(shù)時候,他們執(zhí)行上下文切換

  • 有時他們分配或釋放動態(tài)內(nèi)存

  • 有時他們參與訪問 RDMA 設備

作為一般經(jīng)驗法則,應避免調(diào)用控制操作或減少其在數(shù)據(jù)路徑中的使用。

以下動詞(verbs接口)被視為數(shù)據(jù)操作:

  • ibv_post_send() 發(fā)送

  • ibv_post_recv() 接收

  • ibv_post_srq_recv() 共享接收隊列

  • ibv_poll_cq() 輪詢完成隊列

  • ibv_req_notify_cq 通知完成

2. 發(fā)布多條 WR 時,一次調(diào)用將它們發(fā)布到列表中

當用verbs接口ibv_post_*()中的一個, 來發(fā)送工作請求WR時,在一次調(diào)用中將多個工作請求作為鏈表發(fā)布,而不是每次使用一個工作請求進行多次調(diào)用,將提供更好的性能,因為它允許低級驅(qū)動程序執(zhí)行優(yōu)化。

3. 使用工作完成事件時,在一次調(diào)用中確認多個事件

使用事件處理工作完成時,在一個調(diào)用中確認多個完成而不是每次調(diào)用多個調(diào)用將提供更好的性能,因為執(zhí)行的互斥鎖較少。

4. 避免使用許多分散/聚集條目

在工作請求(發(fā)送請求或接收請求)中使用多個分散/聚集條目意味著 RDMA 設備將讀取這些條目并將讀取它們引用的內(nèi)存。使用一個分散/聚集條目比使用多個分散/聚集條目提供更好的性能。

5. 避免使用圍欄(Fence)

設置了柵欄標志的發(fā)送請求將被阻止,直到所有先前的 RDMA 讀取和原子發(fā)送請求完成。這會降低帶寬。

6. 避免使用原子操作

原子操作允許以原子方式執(zhí)行讀取-修改-寫入。這通常會降低性能,因為這樣做通常涉及鎖定對內(nèi)存的訪問(取決于實現(xiàn))。

7. 一次讀取多個工作完成情況

ibv_poll_cq()允許一次讀取多個完成。如果CQ中的工作完成數(shù)小于嘗試讀取的工作完成數(shù),則意味著CQ為空,無需檢查其中是否還有更多工作完成。

8. 設置特定任務或進程的處理器關聯(lián)性

當使用對稱多處理 (SMP) 機器時,將進程綁定到特定的 CPU/核心可以更好地利用 CPU/核心,從而提供更好的性能。按照機器中 CPU/核心的數(shù)量執(zhí)行進程并將進程分布到每個 CPU/核心可能是一個很好的做法。這可以通過“taskset”實用程序來完成。

9. 使用本地 NUMA 節(jié)點

在非統(tǒng)一內(nèi)存訪問 (NUMA) 計算機上工作時,將進程綁定到被視為 RDMA 設備的本地 NUMA 節(jié)點的 CPU/核心可能會因為更快的 CPU 訪問而提供更好的性能。將進程分布到所有本地 CPU/核心可能是一個很好的做法。

10. 使用緩存行對齊的緩沖區(qū)

與使用未對齊的內(nèi)存緩沖區(qū)相比,使用緩存行對齊的緩沖區(qū)(在 S/G 列表、發(fā)送請求、接收請求和數(shù)據(jù)中)將提高性能;它將減少 CPU 周期數(shù)和內(nèi)存訪問次數(shù)。

11. 避免進入重傳流

重傳是性能殺手。RDMA中重傳的主要原因有2個:

  • 傳輸重傳 - 遠程 QP 未處于可以處理傳入消息的狀態(tài),即至少未達到 RTR 狀態(tài),或移至錯誤狀態(tài)

  • RNR重傳-響應方有一條消息應該消耗一個接收請求,但接收隊列中沒有任何接收請求

有些 RDMA 設備提供計數(shù)器來指示重試流發(fā)生,但并非全部。

當QP進入這些流時,將QP.retry_cnt和QP.rnr_retry設置為零將導致失?。矗瑤в绣e誤的完成)。

但是,如果無法避免重試流,請在重傳之間使用較低(盡可能)的延遲。

提高帶寬的手段

1. 找到最適合 RDMA 設備的 MTU

MTU 值指定可以發(fā)送的最大數(shù)據(jù)包有效負載大?。床话〝?shù)據(jù)包標頭)。根據(jù)經(jīng)驗,由于所有 MTU 值的數(shù)據(jù)包標頭大小都相同,因此使用最大可用 MTU 大小將降低每個數(shù)據(jù)包的“支付價格(負載開銷)”;有效負載數(shù)據(jù)占總使用帶寬的百分比將會增加。但是,有些 RDMA 設備可以為低于最大支持值的 MTU 值提供最佳性能。人們應該執(zhí)行一些測試,以便為他使用的特定設備找到最佳的 MTU。

2. 使用大消息

發(fā)送幾條大消息比發(fā)送大量小消息更有效。在應用程序級別,第一級應該通過 RDMA 收集數(shù)據(jù)并發(fā)送大消息。

3. 處理多個未完成的發(fā)送請求

處理多個未完成的發(fā)送請求并保持發(fā)送隊列始終滿(即,對于每個輪詢的工作完成發(fā)布一個新的發(fā)送請求)將使 RDMA 設備保持忙碌并防止其閑置。

4. 配置隊列對以允許并行進行多個 RDMA 讀取和原子操作

如果使用 RDMA 讀取或原子操作,建議將 QP 配置為與運行中的多個 RDMA 讀取和原子操作配合使用,因為它將提供更高的 BW。

5. 使用發(fā)送隊列中的選擇性信號

在發(fā)送隊列中使用選擇性信號意味著并非每個發(fā)送請求在結束時都會產(chǎn)生工作完成,這將減少應處理的工作完成的數(shù)量。

降低延遲的手段

1. 使用輪詢(polling)讀取工作完成情況

為了在工作完成添加到完成隊列后立即讀取它們,輪詢將提供最佳結果(而不是使用工作完成事件)。

2. 以內(nèi)嵌方式發(fā)送小消息

在支持內(nèi)聯(lián)發(fā)送數(shù)據(jù)的 RDMA 設備中,內(nèi)聯(lián)發(fā)送小消息將提供更好的延遲,因為它消除了 RDMA 設備(通過 PCIe 總線)執(zhí)行額外讀取以讀取消息有效負載的需要。

3. 在 QP 的超時和 min_rnr_timer 中使用較低的值

在 QP 的超時和 min_rnr_timer 中使用較低的值意味著,如果出現(xiàn)錯誤并且需要重試(無論是因為遠程 QP 沒有應答還是沒有未完成的接收請求),重傳之前的等待時間將簡短一點。

4. 如果使用立即數(shù)據(jù),請使用 RDMA Write with立即而不是 Send with立即

當發(fā)送僅包含立即數(shù)據(jù)的消息時,帶有立即數(shù)的 RDMA 寫入將比帶有立即的發(fā)送提供更好的性能,因為后者會導致未完成的已發(fā)布接收請求被讀?。ㄔ陧憫剑粌H僅是被消耗。

減少內(nèi)存消耗的手段

1. 使用共享接收隊列 (SRQ)

使用 SRQ 可以節(jié)省未完成的接收請求的總數(shù),從而減少消耗的總內(nèi)存,而不是為每個隊列對發(fā)布許多接收請求。

2. 注冊物理連續(xù)內(nèi)存

寄存器物理連續(xù)內(nèi)存(例如大頁)可以允許低級驅(qū)動程序執(zhí)行優(yōu)化,因為需要較少量的內(nèi)存地址轉(zhuǎn)換(與 4KB 內(nèi)存頁緩沖區(qū)相比)。

3. 將使用的隊列大小減少到最小

創(chuàng)建各種隊列(隊列對、共享接收隊列、完成隊列)可能會消耗大量內(nèi)存。人們應該將它們的大小設置為其應用程序所需的最小值。

減少CPU消耗的手段

1. 處理工作完成事件

使用事件讀取工作完成將消除在 CQ 上執(zhí)行持續(xù)輪詢的需要,因為當工作完成添加到 CQ 時,RDMA 設備將發(fā)送事件。

2. 在響應者端處理請求的事件

當在響應者端讀取工作完成時,請求事件可以是向請求者提供提示的好方法,表明現(xiàn)在是讀取完成的好時機。這減少了已處理的工作完成總數(shù)。

3. 與多個隊列共享同一個CQ

對多個隊列使用相同的 CQ 并減少 CQ 的總數(shù)將消除檢查多個 CQ 的需要,以便了解未完成的工作請求是否已完成。這可以通過與多個發(fā)送隊列、多個接收隊列或它們的混合共享相同的 CQ 來完成。

提高可擴展性的手段

1. 使用集體算法(collective algorithms), 可參考DAOS中CART的k項樹算法

使用集體算法將減少通過線路的消息總數(shù),并減少集群中每個節(jié)點將使用的消息和資源總數(shù)。有些 RDMA 設備提供特殊的集體卸載操作,有助于降低 CPU 利用率。

2. 使用不可靠數(shù)據(jù)報 (UD) QP

如果每個節(jié)點都需要能夠接收消息或向子網(wǎng)中的任何其他節(jié)點發(fā)送消息,則使用連接的 QP(可靠或不可靠)可能是一個糟糕的解決方案,因為將在每個節(jié)點中創(chuàng)建許多 QP。使用 UD QP 更好,因為它可以從子網(wǎng)中的任何其他 UD QP 發(fā)送和接收消息。

參考

Nvidia_Mellanox_CX5和6DX系列網(wǎng)卡_RDMA_RoCE_無損和有損_DCQCN擁塞控制_動態(tài)連接等詳解-一文入門RDMA和RoCE有損無損:?Nvidia_Mellanox_CX5和6DX系列網(wǎng)卡_RDMA_RoCE_無損和有損_DCQCN擁塞控制_動態(tài)連接等詳解-一文入門RDMA和RoCE有損無損-騰訊云開發(fā)者社區(qū)-騰訊云

  • 分享 撰文: Dotan Barak ,2013年6月8日。2019年3月9日。

??????Tips and tricks to optimize your RDMA code - RDMAmojo RDMAmojo

曉兵(ssbandjl)

博客: https://cloud.tencent.com/developer/user/5060293/articles | https://logread.cn | https://blog.csdn.net/ssbandjl

歡迎對高性能分布式存儲PureFlash, SPDK, RDMA, 等高性能技術感興趣的朋友加入PureFlash技術交流(群)

曉兵技術雜談(系列)

https://cloud.tencent.com/developer/user/5060293/video

歡迎對DAOS, SPDK, RDMA等高性能技術感興趣的朋友加我WX(ssbandjl)進入DAOS技術交流(群)

DAOS匯總: https://cloud.tencent.com/developer/article/2344030文章來源地址http://www.zghlxwxcb.cn/news/detail-779033.html

到了這里,關于優(yōu)化 RDMA 代碼的建議和技巧-rdma性能優(yōu)化技巧-避坑指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • FPGA實現(xiàn) RDMA NIC 10G UDP協(xié)議棧網(wǎng)卡,純verilog代碼編寫,提供工程源碼和技術支持

    FPGA實現(xiàn) RDMA NIC 10G UDP協(xié)議棧網(wǎng)卡,純verilog代碼編寫,提供工程源碼和技術支持

    FPGA實現(xiàn) NIC 10G 網(wǎng)卡,純verilog代碼編寫,提供3套工程源碼和技術支持 網(wǎng)絡接口控制器(NIC)是計算機與網(wǎng)絡進行交互的網(wǎng)關。NIC構成了軟件協(xié)議棧和網(wǎng)絡之間的橋梁,該橋梁的功能定義了網(wǎng)絡接口。網(wǎng)絡接口的功能以及這些功能的實現(xiàn)都在迅速發(fā)展。這些變化是由提高線速和

    2024年02月10日
    瀏覽(83)
  • RDMA編程實例rdma_cm API

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

    2024年02月04日
    瀏覽(17)
  • 一份Node.js性能優(yōu)化技巧指南

    一份Node.js性能優(yōu)化技巧指南

    你是一個踏入后端開發(fā)領域的前端愛好者嗎??? 準備好迎接在Node.js錯綜復雜的景觀中驚險刺激的旅程吧!?? 在這個探險中,我們將探索后端的無數(shù)奇跡,從使用Node.js框架快速創(chuàng)建自己的后端,到應對性能分析、測試,深入內(nèi)存管理。???? 加入我們,揭開C++插件的奧秘,征服子進程

    2024年02月21日
    瀏覽(17)
  • 【建議收藏】新到手的電腦Windows10/11系統(tǒng)優(yōu)化、使用規(guī)范和技巧及軟件推薦,提升范電腦性能和體驗

    【建議收藏】新到手的電腦Windows10/11系統(tǒng)優(yōu)化、使用規(guī)范和技巧及軟件推薦,提升范電腦性能和體驗

    目錄 一、了解電腦 1. 查看電腦和系統(tǒng)的基本信息? 2. 電腦測評 二 、Windows10/11系統(tǒng)優(yōu)化及設置 1. 控制面板、回收站等桌面圖標顯示設置 2. 任務欄管理 3.?桌面圖標排列 4. 卸載程序 5. 關閉P2P分享(傳遞優(yōu)化) 6.?電設置腦為高性能 7.??刪除存儲中的臨時文件 8.?磁盤清理 9.

    2024年02月12日
    瀏覽(102)
  • 使用libibverbs構建RDMA應用

    使用libibverbs構建RDMA應用

    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實現(xiàn)條件

    CPU必須支持 Intel VT-d 或 AMD-Vi(IOMMU)技術 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日
    瀏覽(40)
  • 聚焦112Gb/s SerDes芯片的AN/LT端口自協(xié)商和鏈路學習,評估驗證高速鏈路的信號質(zhì)量并分析調(diào)優(yōu)(400/800G高速以太網(wǎng)互聯(lián)接口,AI加速卡網(wǎng)絡RDMA性能測試,交換背板接口性能評估)

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

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

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

    RDMA Scatter Gather List詳解

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

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

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

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

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

    RDMA 、RoCE 、IB 、TCP、Ethernet

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

    2024年02月12日
    瀏覽(47)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包