瞭解Infiniband和RDMA技術

瞭解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。

  • The Internet Wide Area RDMA Protocol (iWARP)

iWARP是一種計算機網絡協議,可實現遠程直接內存訪問(RDMA),以通過Internet協議(IP)網絡進行有效的數據傳輸。

  • The RDMA over Converged Ethernet (RoCE) protocol, which later renamed to InfiniBand over Ethernet (IBoE).

RoCE是一種網絡協議,允許通過以太網進行遠程直接內存訪問(RDMA)。

Prerequisites

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

如果使用優先級流控制(PFC)和基於mlx4的卡,則編輯/etc/modprobe.d/mlx4.conf以指示驅動程序爲以太網交換機上的“無丟包”服務配置了哪個數據包優先級。 卡被插入並重建initramfs以包括修改後的文件。 較新的基於mlx5的卡可通過交換機自動協商PFC設置,不需要任何模塊選項即可將其告知“無掉線”優先級。

要將Mellanox卡設置爲在以太網模式下使用一個或兩個端口,請參見第13.5.4節“配置Mellanox卡以進行以太網操作”。

安裝了這些驅動程序包(除了通常爲所有InfiniBand安裝安裝的普通RDMA包之外),用戶應該能夠使用大多數普通RDMA應用程序來測試並查看適配器上發生的RDMA協議通信。 但是,並非Red Hat Enterprise Linux 7中包含的所有程序都正確支持iWARP或RoCE / IBoE設備。 這是因爲,特別是在iWARP上的連接建立協議不同於在實際InfiniBand鏈路層連接上的連接建立協議。 如果有問題的程序使用librdmacm連接管理庫,則它將以靜默方式處理iWARP和InfiniBand之間的差異,並且該程序應該可以運行。 如果應用程序嘗試執行自己的連接管理,則它必須專門支持iWARP,否則它將無法正常工作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章