日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

1. RDMA概述

發(fā)布時間:2024/1/18 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1. RDMA概述 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉自:https://zhuanlan.zhihu.com/p/138874738

什么是DMA

????????DMA全稱為Direct Memory Access,即直接內(nèi)存訪問。意思是外設對內(nèi)存的讀寫過程可以不用CPU參與而直接進行。我們先來看一下沒有DMA的時候:

無DMA控制器時I/O設備和內(nèi)存間的數(shù)據(jù)路徑

????????假設I/O設備為一個普通網(wǎng)卡,為了從內(nèi)存拿到需要發(fā)送的數(shù)據(jù),然后組裝數(shù)據(jù)包發(fā)送到物理鏈路上,網(wǎng)卡需要通過總線告知CPU自己的數(shù)據(jù)請求。然后CPU將會把內(nèi)存緩沖區(qū)中的數(shù)據(jù)復制到自己內(nèi)部的寄存器中,再復制到I/O設備的存儲空間中。如果數(shù)據(jù)量比較大,那么很長一段時間內(nèi)CPU都會忙于搬移數(shù)據(jù),而無法投入到其他工作中去。

????????CPU的最主要工作是計算,而不是進行數(shù)據(jù)復制,這種工作屬于白白浪費了它的計算能力。為了給CPU“減負”,讓它投入到更有意義的工作中去,后來人們設計了DMA機制:

有DMA控制器時I/O設備和內(nèi)存間的數(shù)據(jù)路徑

????????可以看到總線上又掛了一個DMA控制器,它是專門用來讀寫內(nèi)存的設備。有了它以后,當我們的網(wǎng)卡想要從內(nèi)存中拷貝數(shù)據(jù)時,除了一些必要的控制命令外,整個數(shù)據(jù)復制過程都是由DMA控制器完成的。過程跟CPU復制是一樣的,只不過這次是把內(nèi)存中的數(shù)據(jù)通過總線復制到DMA控制器內(nèi)部的寄存器中,再復制到I/O設備的存儲空間中。CPU除了關注一下這個過程的開始和結束以外,其他時間可以去做其他事情。

????????DMA控制器一般是和I/O設備在一起的,也就是說一塊網(wǎng)卡中既有負責數(shù)據(jù)收發(fā)的模塊,也有DMA模塊

什么是RDMA

????????RDMA( Remote Direct Memory Access )意為遠程直接地址訪問通過RDMA,本端節(jié)點可以“直接”訪問遠端節(jié)點的內(nèi)存。所謂直接,指的是可以像訪問本地內(nèi)存一樣,繞過傳統(tǒng)以太網(wǎng)復雜的TCP/IP網(wǎng)絡協(xié)議棧讀寫遠端內(nèi)存,而這個過程對端是不感知的,而且這個讀寫過程的大部分工作是由硬件而不是軟件完成的

????????為了能夠直觀的理解這一過程,請看下面兩個圖(圖中箭頭僅做示意,不表示實際邏輯或物理關系):

????????傳統(tǒng)網(wǎng)絡中,“節(jié)點A給節(jié)點B發(fā)消息”實際上做的是“把節(jié)點A內(nèi)存中的一段數(shù)據(jù),通過網(wǎng)絡鏈路搬移到節(jié)點B的內(nèi)存中”,而這一過程無論是發(fā)端還是收段,都需要CPU的指揮和控制,包括網(wǎng)卡的控制,中斷的處理,報文的封裝和解析等等。

?????????上圖中左邊的節(jié)點在內(nèi)存用戶空間中的數(shù)據(jù),需要經(jīng)過CPU拷貝到內(nèi)核空間的緩沖區(qū)中,然后才可以被網(wǎng)卡訪問,這期間數(shù)據(jù)會經(jīng)過軟件實現(xiàn)的TCP/IP協(xié)議棧,加上各層頭部和校驗碼,比如TCP頭,IP頭等網(wǎng)卡通過DMA拷貝內(nèi)核中的數(shù)據(jù)到網(wǎng)卡內(nèi)部的緩沖區(qū)中,進行處理后通過物理鏈路發(fā)送給對端。

????????對端收到數(shù)據(jù)后,會進行相反的過程:從網(wǎng)卡內(nèi)部存儲空間,將數(shù)據(jù)通過DMA拷貝到內(nèi)存內(nèi)核空間的緩沖區(qū)中,然后CPU會通過TCP/IP協(xié)議棧對其進行解析,將數(shù)據(jù)取出來拷貝到用戶空間中。

????????可以看到,即使有了DMA技術,上述過程還是對CPU有較強的依賴。

????????而使用了RDMA技術之后,這一過程可以簡單的表示成下面的示意圖:

????????同樣是把本端內(nèi)存中的一段數(shù)據(jù),復制到對端內(nèi)存中,在使用了RDMA技術時,兩端的CPU幾乎不用參與數(shù)據(jù)傳輸過程(只參與控制面)。本端的網(wǎng)卡直接從內(nèi)存的用戶空間DMA拷貝數(shù)據(jù)到內(nèi)部存儲空間,然后硬件進行各層報文的組裝后,通過物理鏈路發(fā)送到對端網(wǎng)卡。對端的RDMA網(wǎng)卡收到數(shù)據(jù)后,剝離各層報文頭和校驗碼,通過DMA將數(shù)據(jù)直接拷貝到用戶空間內(nèi)存中

?

RDMA的優(yōu)勢

????????RDMA主要應用在高性能計算(HPC)領域和大型數(shù)據(jù)中心當中,并且設備相對普通以太網(wǎng)卡要昂貴不少(比如Mellanox公司的Connext-X 5 100Gb PCIe網(wǎng)卡市價在4000元以上)。由于使用場景和價格的原因,RDMA與普通開發(fā)者和消費者的距離較遠,目前主要是一些大型互聯(lián)網(wǎng)企業(yè)在部署和使用。

????????RDMA技術為什么可以應用在上述場景中呢?這就涉及到它的以下幾個特點:

  • 0拷貝:指的是不需要在用戶空間和內(nèi)核空間中來回復制數(shù)據(jù)。

????????由于Linux等操作系統(tǒng)將內(nèi)存劃分為用戶空間和內(nèi)核空間,在傳統(tǒng)的Socket通信流程中CPU需要多次把數(shù)據(jù)在內(nèi)存中來回拷貝。而通過RDMA技術,我們可以直接訪問遠端已經(jīng)注冊的內(nèi)存區(qū)域。

?關于0拷貝可以參考這篇文章:https://www.jianshu.com/p/e76e3580e

  • 內(nèi)核Bypass:指的是IO(數(shù)據(jù))流程可以繞過內(nèi)核,即在用戶層就可以把數(shù)據(jù)準備好并通知硬件準備發(fā)送和接收。避免了系統(tǒng)調(diào)用和上下文切換的開銷

????????上圖(原圖[1])可以很好的解釋“0拷貝”和“內(nèi)核Bypass”的含義。上下兩部分分別是基于Socket的和基于RDMA的一次收-發(fā)流程,左右分別為兩個節(jié)點。可以明顯的看到Socket流程中在軟件中多了一次拷貝動作。而RDMA繞過了內(nèi)核同時也減少了內(nèi)存拷貝,數(shù)據(jù)可以直接在用戶層和硬件間傳遞

  • CPU卸載:指的是可以在遠端節(jié)點CPU不參與通信的情況下(當然要持有訪問遠端某段內(nèi)存的“鑰匙”才行)對內(nèi)存進行讀寫,這實際上是把報文封裝和解析放到硬件中做了。而傳統(tǒng)的以太網(wǎng)通信,雙方CPU都必須參與各層報文的解析,如果數(shù)據(jù)量大且交互頻繁,對CPU來講將是一筆不小的開銷,而這些被占用的CPU計算資源本可以做一些更有價值的工作。

????????通信領域兩大出場率最高的性能指標就是“帶寬”和“時延”。簡單的說,所謂帶寬指的是指單位時間內(nèi)能夠傳輸?shù)臄?shù)據(jù)量,而時延指的是數(shù)據(jù)從本端發(fā)出到被對端接收所耗費的時間。因為上述幾個特點,相比于傳統(tǒng)以太網(wǎng),RDMA技術同時做到了更高帶寬和更低時延,所以其在帶寬敏感的場景——比如海量數(shù)據(jù)的交互,時延敏感——比如多個計算節(jié)點間的數(shù)據(jù)同步的場景下得以發(fā)揮其作用。

?

協(xié)議

????????RDMA本身指的是一種技術具體協(xié)議層面,包含Infiniband(IB),RDMA over Converged Ethernet(RoCE)和internet Wide Area RDMA Protocol(iWARP)三種協(xié)議都符合RDMA標準,使用相同的上層接口,在不同層次上有一些差別。

上圖[2]對于幾種常見的RDMA技術的協(xié)議層次做了非常清晰的對比,

?

Infiniband

????????2000年由IBTA(InfiniBand Trade Association)提出的IB協(xié)議是當之無愧的核心,其規(guī)定了一整套完整的鏈路層到傳輸層(非傳統(tǒng)OSI七層模型的傳輸層,而是位于其之上)規(guī)范,但是其無法兼容現(xiàn)有以太網(wǎng),除了需要支持IB的網(wǎng)卡之外,企業(yè)如果想部署的話還要重新購買配套的交換設備。

RoCE

????????RoCE從英文全稱就可以看出它是基于以太網(wǎng)鏈路層的協(xié)議,v1版本網(wǎng)絡層仍然使用了IB規(guī)范,而v2使用了UDP+IP作為網(wǎng)絡層,使得數(shù)據(jù)包也可以被路由RoCE可以被認為是IB的“低成本解決方案”,將IB的報文封裝成以太網(wǎng)包進行收發(fā)。由于RoCE v2可以使用以太網(wǎng)的交換設備,所以現(xiàn)在在企業(yè)中應用也比較多,但是相同場景下相比IB性能要有一些損失

iWARP

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

????????需要注意的是,雖然有軟件實現(xiàn)的RoCE和iWARP協(xié)議,但是真正商用時上述幾種協(xié)議都需要專門的硬件(網(wǎng)卡)支持

????????iWARP本身不是由Infiniband直接發(fā)展而來的,但是它繼承了一些Infiniband技術的設計思想。這三種協(xié)議的關系如下圖所示:

?

玩家

標準/生態(tài)組織

????????提到IB協(xié)議,就不得不提到兩大組織——IBTA和OFA。

IBTA[3]

????????成立于1999年,負責制定和維護Infiniband協(xié)議標準。IBTA獨立于各個廠商,通過贊助技術活動和推動資源共享來將整個行業(yè)整合在一起,并且通過線上交流、營銷和線下活動等方式積極推廣IB和RoCE。

????????IBTA會對商用的IB和RoCE設備進行協(xié)議標準符合性和互操作性測試及認證,由很多大型的IT廠商組成的委員會領導,其主要成員包括博通,HPE,IBM,英特爾,Mellanox和微軟等,華為也是IBTA的會員。

OFA[4]

????????成立于2004年的非盈利組織,負責開發(fā)、測試、認證、支持和分發(fā)獨立于廠商的開源跨平臺infiniband協(xié)議棧,2010年開始支持RoCE。其對用于支撐RDMA/Kernel bypass應用的OFED(OpenFabrics Enterprise Distribution)軟件棧負責,保證其與主流軟硬件的兼容性和易用性。OFED軟件棧包括驅動、內(nèi)核、中間件和API

????????上述兩個組織是配合關系,IBTA主要負責開發(fā)、維護和增強Infiniband協(xié)議標準;OFA負責開發(fā)和維護Infiniband協(xié)議和上層應用API。

開發(fā)社區(qū)

Linux社區(qū)

????????Linux內(nèi)核的RDMA子系統(tǒng)還算比較活躍,經(jīng)常會討論一些協(xié)議細節(jié),對框架的修改比較頻繁,另外包括華為和Mellanox在內(nèi)的一些廠商也會經(jīng)常對驅動代碼進行修改。

郵件訂閱:http://vger.kernel.org/vger-lists.html#linux-rdma

????????代碼位于內(nèi)核drivers/infiniband/目錄下,包括框架核心代碼和各廠商的驅動代碼。

????????代碼倉:https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git/

RDMA社區(qū)

????????對于上層用戶,IB提供了一套與Socket套接字類似的接口——libibverbs,前文所述三種協(xié)議都可以使用。參考著協(xié)議、API文檔和示例程序很容易就可以寫一個Demo出來。本專欄中的RDMA社區(qū)專指其用戶態(tài)社區(qū),在github上其倉庫的名字為linux-rdma。

主要包含兩個子倉庫:

  • rdma-core

????????用戶態(tài)核心代碼,API,文檔以及各個廠商的用戶態(tài)驅動。

  • perftest

????????一個功能強大的用于測試RDMA性能的工具。

代碼倉:https://github.com/linux-rdma/

UCX[5]

????????UCX是一個建立在RDMA等技術之上的用于數(shù)據(jù)處理和高性能計算的通信框架,RDMA是其底層核心之一。我們可以將其理解為是位于應用和RDMA API之間的中間件,向上層用戶又封裝了一層更易開發(fā)的接口。

????????筆者對其并不了解太多,只知道業(yè)界有一些企業(yè)在基于UCX開發(fā)應用。

????????代碼倉:https://github.com/openucx/ucx

?

硬件廠商

????????設計和生產(chǎn)IB相關硬件的廠商有不少,包括Mellanox、華為、收購了Qlogic的IB技術的Intel,博通、Marvell,富士通等等,這里就不逐個展開了,僅簡單提一下Mellanox和華為。

  • Mellanox

????????IB領域的領頭羊,協(xié)議標準制定、軟硬件開發(fā)和生態(tài)建設都能看到Mellanox的身影,其在社區(qū)和標準制定上上擁有最大的話語權。目前最新一代的網(wǎng)卡是支持200Gb/s的ConnextX-6系列。

  • 華為

????????去年初推出的鯤鵬920芯片已經(jīng)支持100Gb/s的RoCE協(xié)議,技術上在國內(nèi)處于領先地位。但是軟硬件和影響力方面距離Mellanox還有比較長的路要走,相信華為能夠早日趕上老大哥的步伐。

用戶

????????微軟、IBM和國內(nèi)的阿里、京東都正在使用RDMA,另外還有很多大型IT公司在做初步的開發(fā)和測試。在數(shù)據(jù)中心和高性能計算場景下,RDMA代替?zhèn)鹘y(tǒng)網(wǎng)絡是大勢所趨。筆者對于市場接觸不多,所以并不能提供更詳細的應用情況。

????????下一篇將用比較直觀的方式比較一次典型的基于Socket的傳統(tǒng)以太網(wǎng)和RDMA通信過程。

總結

以上是生活随笔為你收集整理的1. RDMA概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。