了解Infiniband和RDMA技術

2021-10-04 08:29:55 字數 1950 閱讀 3110

了解infiniband和rdma技術

infiniband涉及兩個不同的事物。 第乙個是用於infiniband網路的物理鏈路層協議。 第二個是稱為infiniband verbs api的高階程式設計api。 infiniband動詞api是遠端直接記憶體訪問(rdma)技術的實現。

rdma可以從一台計算機的記憶體直接訪問另一台計算機的記憶體,而無需涉及任何一台計算機的作業系統。 該技術可實現高吞吐量,低延遲的網路,並具有較低的cpu使用率,這在大規模並行計算機群集中特別有用。

在典型的ip資料傳輸中,機器a上的應用程式x向機器b上的應用程式y傳送一些資料。作為傳輸的一部分,機器b上的核心必須首先接收資料,對資料報頭進行解碼,確定資料屬於應用程式y,喚醒應用程式y,等待應用程式y對核心執行讀syscall,然後它必須將資料從核心自己的內部記憶體空間手動複製到應用程式y提供的緩衝區中。此過程意味著大多數網路流量必須至少兩次跨系統主記憶體匯流排複製一次(一次是在主機介面卡使用dma將資料放入核心提供的記憶體緩衝區中,一次是在核心將資料移至應用程式的記憶體緩衝區中時),這也意味著計算機必須執行許多上下文切換,才能在核心上下文和應用程式y上下文之間進行切換。當網路流量以很高的速率流動時,這兩種情況都會給系統帶來非常高的cpu負載,並且可能會使其他任務變慢。

rdma通訊與常規ip通訊不同,因為rdma通訊繞過了核心在通訊過程中的干預,並且在該過程中大大減少了處理網路通訊通常所需的cpu開銷。 rdma協議允許計算機中的主機介面卡知道何時有資料報從網路傳入,哪個應用程式應接收該資料報,以及它應位於應用程式的記憶體空間中。 無需將資料報傳送到核心進行處理,然後再複製到使用者應用程式的記憶體中,而是將資料報的內容直接放置在應用程式的緩衝區中,而無需任何進一步的干預。 但是,使用大多數ip網路應用程式所基於的標準berkeley sockets api無法完成此任務,因此它必須提供自己的api(infiniband verbs api),並且必須先將應用程式移植到此api,然後才能直接使用rdma技術。

紅帽企業版linux 7支援infiniband硬體和infiniband verbs api。 此外,還有兩種支援的其他技術,這些技術允許在非infiniband硬體上使用infiniband verbs api。

iwarp是一種計算機網路協議,可實現遠端直接記憶體訪問(rdma),以通過internet協議(ip)網路進行有效的資料傳輸。

roce是一種網路協議,允許通過乙太網進行遠端直接記憶體訪問(rdma)。

iwarp和roce技術都具有普通ip網路鏈路層作為其基礎技術,因此,第3章「配置ip網路」實際上涵蓋了它們的大部分配置。 在大多數情況下,只要正確配置了它們的ip網路功能,它們的rdma功能就會全部自動完成,並且只要安裝了正確的硬體驅動程式,它們就會顯示出來。 red hat提供的每個核心始終包含核心驅動程式,但是,如果在計算機安裝時未選擇infiniband軟體包組,則必須手動安裝使用者空間驅動程式。

從red hat enterprise linux 7.4開始,所有rdma使用者空間驅動程式都合併到rdma-core軟體包中。 要安裝所有受支援的iwarp,roce或infiniband使用者空間驅動程式,請以root使用者身份輸入:

~]# yum install libibverbs
要將mellanox卡設定為在乙太網模式下使用乙個或兩個埠,請參見第13.5.4節「配置mellanox卡以進行乙太網操作」。

安裝了這些驅動程式包(除了通常為所有infiniband安裝安裝的普通rdma包之外),使用者應該能夠使用大多數普通rdma應用程式來測試並檢視介面卡上發生的rdma協議通訊。 但是,並非red hat enterprise linux 7中包含的所有程式都正確支援iwarp或roce / iboe裝置。 這是因為,特別是在iwarp上的連線建立協議不同於在實際infiniband鏈路層連線上的連線建立協議。 如果有問題的程式使用librdmacm連線管理庫,則它將以靜默方式處理iwarp和infiniband之間的差異,並且該程式應該可以執行。 如果應用程式嘗試執行自己的連線管理,則它必須專門支援iwarp,否則它將無法正常工作。

rd如何撰寫總體設計文件和詳細設計文件

rd需要撰寫的設計文件主要分為 總體設計文件 詳細設計文件,後簡稱為 總設 詳設 總設和詳設都應該包含的部分 1 需求 一般以產品的語言描述,這一塊可以拷貝產品需求文件中的story list部分 2 名詞解釋 可選 非相關領域內的同學需要看到文件需要提前了解的一些概念性質的東西 3 設計目標 又分...

了解和學習Fedora Linux

一 fedora 是什麼,與redhat的關係 redhat 自9.0以後,不再發布桌面版的,而是把這個專案與開源社群合作,於是就有了fedora 這個 linux 發行版。fedora 可以說是redhat 桌面版本的延續,只不過是與開源社群合作。這樣做,紅帽子集中於它的核心技術和最有利的區域 企...

了解堆和棧

程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回...