InfiniBand簡介

一.什么是infiniband

InfiniBand架構是一種支持多并發鏈接的“轉換線纜”技術,它是新一代服務器硬件平臺的I/O標準。由于它具有高帶寬、低延時、 高可擴展性的特點,它非常適用于服務器與服務器(比如復制,分布式工作等),服務器和存儲設備(比如SAN和直接存儲附件)以及服務器和網絡之間(比如LAN, WANs和the Internet)的通信 。

二.Infiniband產生的原因

隨著CPU性能的飛速發展,I/O系統的性能成為制約服務器性能的瓶頸。于是人們開始重新審視使用了十幾年的PCI總線架構。雖然PCI總線結構把數據的傳輸從8位/16位一舉提升到32位,甚至當前的64位,但是它的一些先天劣勢限制了其繼續發展的勢頭。PCI總線有如下缺陷:

(1)由于采用了基于總線的共享傳輸模式,在PCI總線上不可能同時傳送兩組以上的數據,當一個PCI設備占用總線時,其他設備只能等待;

(2)隨著總線頻率從33MHz提高到66MHz,甚至133MHz(PCI-X),信號線之間的相互干擾變得越來越嚴重,在一塊主板上布設多條總線的難度也就越來越大;

(3)由于PCI設備采用了內存映射I/O地址的方式建立與內存的聯系,熱添加PCI設備變成了一件非常困難的工作。目前的做法是在內存中為每一個PCI設備劃出一塊50M到100M的區域,這段空間用戶是不能使用的,因此如果一塊主板上支持的熱插拔PCI接口越多,用戶損失的內存就越多;

(4)PCI的總線上雖然有buffer作為數據的緩沖區,但是它不具備糾錯的功能,如果在傳輸的過程中發生了數據丟失或損壞的情況,控制器只能觸發一個NMI中斷通知操作系統在PCI總線上發生了錯誤

??? 因此,Intel、?Cisco、?Compaq、?EMC、?富士通等公司共同發起了infiniband架構,其目的是為了取代PCI成為系統互連的新技術標準,其核心就是將I/O系統從服務器主機中分離出來。

InfiniBand?采?用雙隊列程序提取技術,使應用程序直接將數據從適配器?送入到應用內存(稱為遠程直接存儲器存取或RDMA),?反之依然。在TCP/IP協議中,來自網卡的數據先拷貝到?核心內存,然后再拷貝到應用存儲空間,或從應用空間?將數據拷貝到核心內存,再經由網卡發送到Internet。這?種I/O操作方式,始終需要經過核心內存的轉換,它不?僅增加了數據流傳輸路徑的長度,而且大大降低了I/O?的訪問速度,增加了CPU的負擔。而SDP則是將來自網?卡的數據直接拷貝到用戶的應用空間,從而避免了核心?內存參入。這種方式就稱為零拷貝,它可以在進行大量?數據處理時,達到該協議所能達到的最大的吞吐量

三.Infiniband的協議層次與網絡結構

?

圖1

Infiniband的協議采用分層結構,各個層次之間相互獨立,下層為上層提供服務。其中,物理層定義了在線路上如何將比特信號組?成符號,然后再組成幀、?數據符號以及包之間的數據填?充等,詳細說明了構建有效包的信令協議等;鏈路層定義了數據包的格式以及數據包操作的協議,如流控、 路由選擇、 編碼、解碼等;網絡層通過在數據包上添加一個40字節的全局的路由報頭(Global Route Header,GRH)來進行路由的選擇,對數據進行轉發。在轉發的過程中,路由 器僅僅進行可變的CRC校驗,這樣就保證了端到端的數據傳輸的完整性;傳輸層再將數據包傳送到某個指定?的隊列偶(QueuePair,QP)中,并指示QP如何處理該數據?包以及當信息的數據凈核部分大于通道的最大傳輸單?元MTU時,對數據進行分段和重組。

??

圖2

Infiniband的網絡拓撲結構如圖2,其組成單元主要分為四類:

(1)HCA(Host Channel Adapter),它是連接內存控制器和TCA的橋梁;

(2)TCA(Target Channel Adapter),它將I/O設備(例如網卡、SCSI控制器)的數字信號打包發送給HCA;

(3)Infiniband link,它是連接HCA和TCA的光纖,InfiniBand架構允許硬件廠家以1條、4條、12條光纖3種方式連結TCA和HCA;

(4)交換機和路由器;

無論是HCA還是TCA,其實質都是一個主機適配器,它是一個具備一定保護功能的可編程DMA(Direct Memory Access,直接內存存取 )引擎,

?

圖3

???

如圖3所示,每個端口具有一個GUID(Globally Unique Identifier),GUID是全局唯一的,類似于以太網MAC地址。運行過程中,子網管理代理(SMA)會給端口分配一個本地標識(LID),LID僅在子網內部有用。QP是infiniband的一個重要概念,它是指發送隊列和接收隊列的組合,用戶調用API發送接收數據的時候,實際上是將數據放入QP當中,然后以輪詢的方式將QP中的請求一條條的處理,其模式類似于生產者-消費者模式。

?

圖4

如圖4所示,圖中Work queue即是QP中的send Queue或者receive Queue,WQ中的請求被處理完成之后,就被放到Work Completion中。

四.如何使用IB verbs傳送數據

Infiniband提供了VPI verbs API和RDMA_CM verbs API 這兩個API集合,用戶使用其中的庫函數,就能很方便的在不同的機器之間傳輸數據。Infiniband建立連接的流程如下圖所示:

?

圖5

其中buildcontext的流程如下:

圖6

連接建立完成之后,就可以調用ibv_post_recv和ibv_post_send收發數據了,發送和接收請求都被放在QP中,后臺需要調用ibv_poll_cq來逐條處理請求,由于infiniband連接中,一旦有一條數據發送或者接收失敗,其后所有的數據發送或者接收都會失敗,因此一旦檢測到WC的狀態不是成功,需要立即處理此錯誤(此時最好斷開連接)。

五.常見錯誤

???? ibv_poll_cq處理完隊列中的數據后,WC會包含此次處理的全部信息,包括wr_id、操作狀態、錯誤碼等等,錯誤碼包含的信息對于我們解決錯誤非常有用,這里我就列舉一下我在編寫代碼中遇到的錯誤。

(1)錯誤碼為4(IBV_WC_LOC_PROT_ERR?),這種錯誤通常意味著用戶對內存的操作權限不夠,需要檢測在ibv_post_recv和ibv_post_send時scatter/gather list 中傳入的內存地址與長度是否正確,或者ibv_reg_mr操作是否成功。

(2)錯誤碼為5,(IBV_WC_WR_FLUSH_ERR?),在flush的時候出現錯誤,通常是因為前一個操作出現了錯誤,接下來的一系列操作都會出現??????

IBV_WC_WR_FLUSH_ERR的錯誤。

(3)錯誤碼為13(IBV_WC_RNR_RETRY_EXC_ERR??),這種錯誤一般是因為本地post數據過快。在infiniband傳輸數據過程中,接收端首選需要注冊內存并ibv_post_recv將此內存放入receive queue中然后發送端才能發送數據,如果接受端來不及完成這些操作發送端就發送數據,就會出現上述錯誤。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252599.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252599.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252599.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

程序員的視角:java GC

GC(Garbage Collection 垃圾回收)的概念隨著 java 的流行而被人們所熟知。 實際 GC 最早起源于20世紀60年代的 LISP 語言,是一種自動的內存管理機制。 GC 要解決的問題有 3 個:1. 回收什么?(what&#xff0…

spring mvc攔截器HandlerInterceptor

本文主要介紹springmvc中的攔截器,包括攔截器定義和的配置,然后演示了一個鏈式攔截的測試示例,最后通過一個登錄認證的例子展示了攔截器的應用 攔截定義 定義攔截器,實現HandlerInterceptor接口。接口中提供三個方法。 public cla…

mysql show 語句大全

mysql show 語句大全 show open tables; 基于本人對MySQL的使用,現將常用的MySQL show 語句列舉如下: 1.show databases ; // 顯示mysql中所有數據庫的名稱 2.show tables [from database_name]; // 顯示當前數據庫中所有表的名稱 3.show columns from …

阿里云Aliplayer高級功能介紹(一):視頻截圖

基本介紹H5 Video是不提供截圖的API的, 視頻截圖需要借助Canvas,通過Canvas提供的drawImage方法,把Video的當前畫面渲染到畫布上, 最終通過toDataURL方法可以導出圖片的base64編碼,基本就完成了圖片截圖的功能。 功能實…

POJ 1151 Atlantis 線段樹+掃描線

解題思路: 先將y軸進行離散化。n個矩形的2n個橫邊縱坐標共構成最多2n-1個區間的邊界,對這些區間編號,建立起線段樹。 x軸記錄左邊和右邊,左邊時是矩形面積增加,覆蓋層數增加邊,右邊是形面積減少,覆蓋層數減…

分頁

1.首先在數據庫中建立一個視圖(在aspx中sql查詢語句是view_student不是student),在視圖里創建create view view_student--創建視圖as row_number 行號 一條數據是一行 分頁功能要根據行數運算select *,row_number() over(order by stuNo desc…

NFS服務端的安裝

執行以下四步操作即可完成在虛擬機上安裝完成NFS的服務端:第一步:在虛擬機上安裝nfs服務: sudo apt install nfs-kernel-server 第二步:修改文件 sudo vi /etc/exports 在文件末尾增加 /home/zzf/hisi-sdk 192.16…

【C++STL/紅黑樹】POJ 3481 DoubleQueue

POJ 3481 Double Queue 描述: 新成立的BIG-Bank在不切雷斯特開了一間新辦公室,使用了由IBM羅馬尼亞的現代計算機辦公環境,運用了現代信息技術.一般來說,銀行的每個顧客都有一個識別碼K,并且每一個來銀行的顧客都會被給予一個優先級P.銀行主管的一個大膽想法震驚了公…

基礎表單筆記

表單數據要向服務端提交的話 每個表單都要指定一些屬性就是name""和value"" value就是用戶寫什么就是什么 來提交name就是對這個表單進行一個標識 <from> 輸入用戶名<input type"text" name"user" value""/>這…

PCIE總線-PCI、PCIE關系及信號定義

PCI(Peripheral Component Interconnect)總線規范在上世紀九十年代由Intel提出。在處理器體系結構中&#xff0c;PCI總線屬于局部總線(Local Bus)。局部總線作為系統總線的延伸&#xff0c;主要功能是為了連接外部設備。 處理器主頻的不斷提升&#xff0c;要求速度更快&#x…

SQL Server:SQL Like 通配符特殊用法:Escape

%&#xff1a;匹配零個及多個任意字符&#xff1b; _&#xff1a;與任意單字符匹配&#xff1b; []&#xff1a;匹配一個范圍&#xff1b; [^]&#xff1a;排除一個范圍 &#xff1b;-&#xff1a;連字符 Symbol Meaning like 5[%] 5% like [_]n _n like [a-cdf] a, b, c, d, o…

案例篇-HBase RowKey 設計指南

1.為什么 Rowkey 這么重要 1.1 RowKey 到底是什么 我們常說看一張 HBase 表設計的好不好&#xff0c;就看它的 RowKey 設計的好不好。可見 RowKey 在 HBase 中的地位。那么 RowKey 到底是什么?RowKey 的特點 如下: 類似于 MySQL、Oracle 中的主鍵&#xff0c;用于標示唯一的行…

PCIe簡介及引腳定義

隨著現代處理器技術的發展&#xff0c;在互連領域中&#xff0c;使用高速差分總線替代并行總線是大勢所趨。與單端并行信號相比&#xff0c;高速差分信號可以使用更高的時鐘頻率&#xff0c;從而使用更少的信號線&#xff0c;完成之前需要許多單端并行數據信號才能達到的總線帶…

IDEA下搜狗輸入法輸入中文時卡著不動的參考解決方法

【問題描述】 在IntelliJ IDEA工具的java編輯窗口&#xff0c;給代碼增加注釋時發現&#xff0c;輸入中文時&#xff0c;搜狗輸入法界面不動&#xff0c;只顯示第一個字母。如圖&#xff1a; 我想輸入“根據”兩個字&#xff0c;但搜狗輸入法界面一直卡著不刷新&#xff0c;導…

6U VPX板卡資料:6U VPX 高性能計算存儲板卡

6U VPX板卡資料&#xff1a;6U VPX 高性能計算存儲板卡_hexiaoyan827的博客-CSDN博客_vpx板卡

Android: Custom View和include標簽的區別

Custom View&#xff0c; 使用的時候是這樣的&#xff1a; <com.example.home.alltest.view.MyCustomViewandroid:id"id/customView"android:layout_width"match_parent"android:layout_height"wrap_content"></com.example.home.allte…

七 web爬蟲講解2—urllib庫爬蟲—狀態嗎—異常處理—瀏覽器偽裝技術、設置用戶代理...

如果爬蟲沒有異常處理&#xff0c;那么爬行中一旦出現錯誤&#xff0c;程序將崩潰停止工作&#xff0c;有異常處理即使出現錯誤也能繼續執行下去 1.常見狀態嗎 301&#xff1a;重定向到新的URL&#xff0c;永久性302&#xff1a;重定向到臨時URL&#xff0c;非永久性304&#x…

DVI和HDMI中的TMDS接口協議

TMDS&#xff08;Transition Minimized Differential signal&#xff09;&#xff0c;即過渡調制差分信號&#xff0c;也被稱為最小化傳輸差分信號&#xff0c;是指通過異或及異或非等邏輯算法將原始信號數據轉換成10位&#xff0c;前8為數據由原始信號經運算后獲得&#xff0c…

君子眼中皆好人

從前有個國王&#xff0c;在晚年時思量 著&#xff1a;“我有兩個兒子&#xff0c;我應該把王位傳給哪個兒子來統治這個國家呢&#xff1f;”國王決定考驗一下他的兩位王子&#xff0c;哪位最是忠義仁厚&#xff0c;愛護老百姓的明君。國王叫來長子&#xff0c; 對他說&#xf…