專利名稱:基于智能網卡的計算機間用戶級并行通信的方法
技術領域:
本發明涉及計算機間并行通信技術領域,特別是一種基于智能網卡的計算機間用戶級并行通信的方法。
背景技術:
近年來,盡管計算機網絡帶寬的增長速度超過了處理器的處理能力,但在許多情況下計算機網絡的通信性能仍然是制約系統性能的瓶頸,單套網絡的通信性能不能滿足需求。目前國際上使用的超級服務器多數采用機群結構,且呈現出用大型對稱多處理器(Symmetric Multiprocessor,SMP)或高速緩存相關的非一致性存儲訪問(Cache Coherent Non-uniformMemory Access,CC-NUMA)互連構建機群的趨勢。在這類系統中,高性能互聯網絡單套使用難以滿足結點計算機間對通信性能的需求。此外,伴隨大量數據密集型應用的出現,對計算機間數據交換能力的要求也迅速提高。因此尋求提高計算機間互連網絡通信性能的有效途徑顯得十分重要。
目前在國內外,除了直接使用更高性能的互連網絡外,用戶級通信協議作為提高計算機間通信性能的一條有效途徑在機群等高性能計算機系統中獲得了廣泛使用。與傳統的核心級通信協議(如TCP/IP)不同,用戶級通信協議將操作系統排除于通信主路徑之外,用戶可以通過位于用戶地址空間中的通信庫直接訪問底層通信網絡的網卡,實現消息在用戶地址空間與網卡間的直接傳遞,消息在發送與接收中無需操作系統的參與。如此,消除了消息傳遞過程中進出操作系統核心和中斷處理的開銷,同時實現了消息在通信雙方用戶地址空間中數據緩沖區間的無拷貝傳輸。
傳統的核心級通信協議由于大量軟件處理的開銷使得其用戶無法獲得底層高性能網絡硬件能夠提供的通信性能。用戶級通信協議雖然通過減少軟件開銷使得其用戶能夠獲得接近底層網絡硬件所提供的性能,但最終是要受限于計算機網絡硬件的性能。因此,當單套網絡不能滿足系統對通信性能的需求時,利用多套網絡實現并行通信就成為提高通信性能的一條重要途徑。
目前實現多網絡設備并行通信的典型方法是,通信控制模塊以輪轉的方式將待發送的消息依次分發到多套網絡上,實現不同消息間的并行傳輸,消息成為每套網絡傳輸的最小單位,一個確定的消息只能通過一套網絡進行傳輸。
發明內容
本發明提供了一種新的基于智能網卡的計算機間用戶級并行通信方法。該方法首先將大消息進行分片,原來的一個消息被分成若干個小的消息片段,然后再由通信控制模塊以輪轉的方式將這些消息分片依次分發到多套網絡上,實現不同消息分片間的并行傳輸,這里消息分片成為每套網絡傳輸的最小單位,一個確定的消息其消息分片能夠通過多套網絡同時進行傳輸。顯然,本發明支持的并行傳輸的粒度是比消息要小的消息分片,因此能夠提高一個大消息的通信帶寬。對于典型的科學計算類應用,這是非常有利的。此外,為了保證消息傳輸的有序性,本發明提供的方法中對小消息采用了網絡綁定的策略,小消息不進行分片,同源同目的的小消息通過靜態選定的一套確定的網絡進行傳輸。目的地不同,其綁定的網絡可以不同,這有利于平衡多套網絡間的負載,提高整個通信系統的吞吐率。本發明中的方法是針對用戶級零拷貝通信協議設計的,在提供并行通信能力的同時,仍然保持用戶級零拷貝的通信特點,支持對位于用戶空間中的數據進行無拷貝的分拆和拼接。整個并行通信的協議流程見附圖1。
包括以下步驟在數據發送方用于數據分流和負載平衡的數據拆分步驟;在智能網卡上用于在計算機間將已拆分數據由數據發送方向數據接收方傳遞的數據并行傳輸步驟;在數據接收方用于數據接收和拼接的數據拼接步驟;
在數據接收方用于通知用戶數據到達的消息通知步驟。
計算機間使用多套高性能互連網絡進行連接,并且所用網絡是同構的。
所用的高性能互連網絡必須提供智能網卡,即網卡有一定的協議處理能力,通過運行在網卡上的通信控制程序或固件能夠支持消息數據在發送與接收方用戶空間數據緩沖區間的直接傳輸,支持用戶級通信結構。
在實現用戶級通信協議的操作系統核心空間的設備驅動程序和用戶空間的通信庫中加入實現并行通信的功能模塊,數據的拆分與拼接由并行通信模塊實現。
消息的發送要經過操作系統核心中的設備驅動程序,由設備驅動程序中所植入的并行模塊完成對待發送消息在多套網絡間的分發與拆分。
消息分發與拆分的過程將消息分為大、小兩類,執行不同的策略,小消息實行網絡綁定的策略,所有目的地相同的小消息都通過一套靜態選定的網絡發送;大消息采用拆分-輪轉的策略,首先大消息被拆分成若干分片,然后這些分片按照輪轉的方法在底層多套網絡間進行分派、發送。
通信網絡將分派到的小消息或大消息的分片作為一個正常的消息在通信雙方用戶空間的數據緩沖區間直接傳輸,消息的并行傳遞對通信硬件透明。
并行通信中消息傳遞結束的判定由位于接收方用戶空間中的通信庫中的并行通信模塊完成。
計算機間消息的傳遞是有序的。
計算機間消息的傳遞是無拷貝的。
計算機間消息的并行傳遞對上層用戶是透明的。
圖1是本發明的基于智能網卡的計算機間用戶級并行通信核心方法流程圖;圖2是本發明的消息分片示意圖;圖3是本發明的并行通信操作流程圖。
具體實施例方式
圖1的基于智能網卡的計算機間用戶級并行通信的方法,該方法首先將大消息進行分片,原來的一個消息被分成若干個小的消息片段,然后再由通信控制模塊以輪轉的方式將這些消息分片依次分發到多套網絡上,實現不同消息分片間的并行傳輸,這里消息分片成為每套網絡傳輸的最小單位,一個確定的消息其消息分片能夠通過多套網絡同時進行傳輸。
圖中給出了由2套通信網絡組成的并行通信系統上的并行通信核心流程,其中箭頭表示并行通信流程中的步驟。一次并行通信過程包括如下9個步驟步驟1,用戶應用程序將消息接收緩沖區信息注冊至通信系統中;步驟2,并行模塊根據消息的分片原則將消息接收緩沖區信息分配到不同的網卡上,并等待消息的到達;步驟3,用戶應用程序的消息發送請求提交至通信系統中;步驟4,并行模塊根據消息的分片原則將消息發送請求分配到不同的通信網絡上,并將相應的消息發送請求信息填寫到對應的網卡上;步驟5,由底層的用戶級通信協議將分給該網卡的消息分片由用戶緩沖區下傳至網卡上;步驟6,發送方計算機上的智能網卡向接收方計算機的智能網卡傳輸數據的過程;步驟7,根據底層的用戶級通信協議確認消息各分片發送完成后形成消息發送完成事件,并通知用戶應用程序;步驟8,由網卡控制程序將接收至網卡上的數據上傳至用戶緩沖區;步驟9,根據底層的用戶級通信協議確認消息各個分片接收完成后,形成消息接收完成事件,并通知用戶應用程序。
其中,步驟3、4、5、7由消息傳遞的發送方計算機完成,步驟1、2、8、9由消息傳遞的接收方計算機完成,步驟6為發送方計算機上的智能網卡向接收方計算機的智能網卡傳輸數據的過程,由雙方共同完成。發送方計算機上所需完成的步驟7可以與接收方計算機上的步驟8、9同時進行,它們之間沒有時間順序上的要求。
圖2中,1.發送過程中的消息分片圖中給出了2個不同長度消息在由2套通信網絡組成的并行通信系統中發送方計算機進行消息發送時的消息分片示意。如圖所示,在消息發送方,消息根據其長度不同被分為固定大小的分片,其中,消息1被分為4個分片,依次為分片0、分片1、分片2和分片3;消息2被分為5個分片,依次為分片0、分片1、分片2、分片3和分片4。消息的各個分片依次從不同的通信網絡上傳輸,若消息不能被均勻分配在不同的通信網絡上,則排列在前面的通信網絡將發送較多的分片。圖中消息1的分片0和2、消息2的分片0、2和4依次由通信網絡0進行發送;消息1的分片1和3、消息2的分片1和3依次由通信網絡1進行發送。
2.接收過程中的消息分片圖中給出了2個不同長度的消息接收緩沖區在由2套通信網絡組成的并行通信系統中接收方計算機進行消息接收時的消息緩沖區分片示意。如圖所示,在消息接收方,消息緩沖區根據其長度不同被分為固定大小的分片,其中,消息緩沖區1被分為4個分片,依次為分片0、分片1、分片2和分片3;消息緩沖區2被分為5個分片,依次為分片0、分片1、分片2、分片3和分片4。消息緩沖區的各個分片依次從不同的通信網絡上接收數據,若消息緩沖區不能被均勻分配在不同的通信網絡上,則排列在前面的通信網絡將接收較多的分片。圖中消息緩沖區1的分片0和2、消息緩沖區2的分片0、2和4依次從通信網絡0上接收數據;消息緩沖區1的分片1和3、消息緩沖區2的分片1和3依次從通信網絡1上接收數據。
圖3中,如圖所示,并行通信在消息發送方的一次消息發送操作流程由步驟S1至S5構成。步驟S1將用戶的消息發送請求提交至通信系統中;步驟S2并行模塊根據消息的分片原則將消息發送請求分配到不同的通信網絡上,并將相應的消息發送請求信息填寫到對應的網卡上;步驟S3由底層的用戶級通信協議將分給該網卡的消息分片由用戶緩沖區下傳至網卡上;步驟S4由網卡控制程序由網卡向通信網絡發送消息數據;步驟S5根據底層的用戶級通信協議確認消息各分片發送完成后形成消息發送完成事件,并通知用戶程序。
并行通信在消息接收方的一次消息接收操作流程由步驟R1至R5構成。步驟R1將用戶的消息接收緩沖區信息至通信系統中;步驟R2并行模塊根據消息的分片原則將消息接收緩沖區信息分配到不同的網卡上;步驟R3等待網絡上的數據,并接收一個完整的數據包;步驟R4由網卡控制程序將接收至網卡上的數據上傳至用戶緩沖區;步驟R5根據底層的用戶級通信協議確認消息各個分片接收完成后,形成消息接收完成事件,并通知用戶程序。
本發明的具體方法如下a.通信網絡的初始設置在通信系統初始安裝過程中,由位于操作系統核心中的網絡設備驅動程序完成對多套網絡硬件設備的查找、檢測和初始設置,獲知可用于并行通信的網絡信息。
b.大消息的傳遞本發明的方法中將消息根據其長度分為大、小消息兩類,分別執行不同的傳遞協議。
在大消息的發送方,首先由位于設備驅動程序中的并行通信分發模塊將要發送的消息進行分片。分片的方法是獲取大消息用戶數據發送緩沖區所占內存的頁面個數,然后將這些頁面在多套網絡間均勻分配,分配給相同網絡的所有頁面構成一個分片。然后,采用輪轉的方法,將一個消息的各個分片依次分發給底層多套網絡。通信網絡智能網卡上的通信控制程序查詢到上述分片的發送請求后,會根據請求中提供的消息分片所包含內存頁面的物理地址和長度將分片發送到網絡上。如此,上層并行通信協議中定義的一個消息的分片被封裝成底層通信網絡傳統意義上傳輸的消息,并行通信對底層網絡是透明的。
一旦消息分片到達目的計算機,目的網絡智能網卡上的通信控制程序會根據用戶事先提供的接收數據緩沖區的內存頁表,直接將該分片中的數據傳遞到接收數據緩沖區中的正確位置上,實現消息的正確拼接。整個消息分片傳輸過程中沒有任何數據在緩沖區間的拷貝。為了配合消息的接收,要求大消息的接收方在消息發送前準備好對應的接收數據緩沖區,并將該緩沖區的內存頁表提交給該大消息傳輸將要用到的所有網絡的智能網卡上的通信控制程序。
一旦目的計算機上一套網絡的智能網卡完成對一個消息分片的接收,就會生成一個接收結束事件,通知上層通信協議其所承擔的接收任務已經完成。位于用戶空間通信庫中的并行通信協議模塊會查詢這些事件,一旦所有參與一個大消息并行傳輸的網絡的智能網卡都生成接收結束事件,上述并行通信模塊會生成整個大消息接收結束事件,插入相應的事件隊列并進行處理。
消息分片的原理見附圖2。
c.小消息的傳遞與大消息的傳遞不同,小消息無需進行消息的分片,整個消息通過一套網絡進行傳遞。在消息發送方,位于設備驅動程序中的并行通信分發模塊根據小消息的目的計算機號唯一確定一套網絡,并構造一個消息發送申請提交給選定網絡的智能網卡。智能網卡上的通信控制程序查詢到該發送請求后,將相應的小消息發送到網絡上。上述策略稱作網絡綁定。如此,從一個計算機發送的所有目的計算機相同的小消息都會通過一套相同的網絡傳遞,實現了消息傳遞的保序性。目前根據如下公式確定一個小消息綁定的網絡bn=id mod N其中id是目的計算機號,N是底層網絡的套數,bn就是小消息綁定的網絡,該消息就是通過編號為bn的網絡傳遞。這樣,不同目的計算機的小消息其綁定的網絡可以不同,從而保證了網絡負載的均衡,有助于提高小消息的吞吐率。
在接收方,智能網卡將收到的小消息上傳到主機上的系統緩沖區中,再由位于用戶空間的通信庫從系統緩沖區中將小消息拷貝到用戶指定的接收緩沖區,完成小消息的接收。
本發明的效果體現在1.支持使用多套提供智能網卡的高性能通信網絡實現計算機間的互連,目前要求這些網絡是同構的。
2.在用戶級通信協議中加入支持并行通信的功能模塊,實現消息數據的并行傳輸。通過消息分片和網絡綁定,一方面使得一個大消息的數據能夠通過多套網絡同時進行并行傳輸,從而提高了單個大消息的傳輸帶寬;另一方面,使得發往不同目的地的小消息可以通過不同的網絡同時并行傳輸,從而提高了小消息的吞吐率。整體上便于應用獲得多套互連網絡硬件提供的聚合性能。
3.通過使用多套網絡和并行通信協議,使得計算機間的通信系統具有非常好的可擴展性。一旦已有通信系統的性能不能滿足需求,可通過增加通信系統中的網絡套數提高通信系統的性能。
4.在實現并行通信的同時,保持了用戶級通信原有的特征,即消息傳遞的主要通路上基本上“旁路”了操作系統核心,大消息的傳遞中沒有內存拷貝,消息的傳遞是保序的。
5.實現了網絡的虛擬化,使得使用多套網絡的并行通信對用戶透明。用戶在使用時感覺不到多套網絡的存在,也感覺不到消息的并行傳輸過程,這消除了用戶參與并行通信過程的負擔。
6.本發明提供的方法只需對現有的用戶級通信協議進行較小的擴展,主要集中在用戶空間的通信庫和核心空間的設備驅動程序,底層網絡智能網卡上的通信控制程序無需修改,因此容易實現。
7.并行通信對底層網絡透明,底層網絡無需為并行通信進行任何調整。因此本發明提供的并行通信方法對底層網絡具有廣泛的適應性,采用該方法實現的通信軟件具有良好的可移植性。
8.本發明方法在用戶級通信協議基礎上進行較小的擴展,因此增加的新的開銷不大,對通信性能的影響較小。采用該方法實現的系統中,通信帶寬基本上達到了多套網絡的聚合帶寬,而通信延遲只有微小增加。
9.通信負載在多套網絡間是基本平衡的。
權利要求
1.一種基于智能網卡的計算機間用戶級并行通信方法,其特征在于包括以下步驟在數據發送方用于數據分流和負載平衡的數據拆分步驟;在智能網卡上用于在計算機間將已拆分數據由數據發送方向數據接收方傳遞的數據并行傳輸步驟;在數據接收方用于數據接收和拼接的數據拼接步驟;在數據接收方用于通知用戶數據到達的消息通知步驟。
2.如權利要求1所述的計算機間并行通信的方法,其特征在于計算機間使用多套高性能互連網絡進行連接,并且所用網絡是同構的。
3.如權利要求1所述的計算機間并行通信的方法,其特征在于所用的高性能互連網絡必須提供智能網卡,即網卡有一定的協議處理能力,通過運行在網卡上的通信控制程序或固件能夠支持消息數據在發送與接收方用戶空間數據緩沖區間的直接傳輸,支持用戶級通信結構。
4.如權利要求1所述的計算機間并行通信的方法,其特征在于在實現用戶級通信協議的操作系統核心空間的設備驅動程序和用戶空間的通信庫中加入實現并行通信的功能模塊,數據的拆分與拼接由并行通信模塊實現。
5.如權利要求1所述的計算機間并行通信的方法,其特征在于消息的發送要經過操作系統核心中的設備驅動程序,由設備驅動程序中所植入的并行模塊完成對待發送消息在多套網絡間的分發與拆分。
6.如權利要求1所述的計算機間并行通信的方法,其特征在于消息分發與拆分的過程將消息分為大、小兩類,執行不同的策略,小消息實行網絡綁定的策略,所有目的地相同的小消息都通過一套靜態選定的網絡發送;大消息采用拆分一輪轉的策略,首先大消息被拆分成若干分片,然后這些分片按照輪轉的方法在底層多套網絡間進行分派、發送。
7.如權利要求1所述的計算機間并行通信的方法,其特征在于通信網絡將分派到的小消息或大消息的分片作為一個正常的消息在通信雙方用戶空間的數據緩沖區間直接傳輸,消息的并行傳遞對通信硬件透明。
8.如權利要求1所述的計算機間并行通信的方法,其特征在于并行通信中消息傳遞結束的判定由位于接收方用戶空間中的通信庫中的并行通信模塊完成。
9.如權利要求1所述的計算機間并行通信的方法,其特征在于計算機間消息的傳遞是有序的。
10.如權利要求1所述的計算機間并行通信的方法,其特征在于計算機間消息的傳遞是無拷貝的。
11.如權利要求1所述的計算機間并行通信的方法,其特征在于計算機間消息的并行傳遞對上層用戶是透明的。
12.一種基于智能網卡的計算機間用戶級并行通信方法,該方法首先將大消息進行分片,原來的一個消息被分成若干個小的消息片段,然后再由通信控制模塊以輪轉的方式將這些消息分片依次分發到多套網絡上,實現不同消息分片間的并行傳輸,這里消息分片成為每套網絡傳輸的最小單位,一個確定的消息其消息分片能夠通過多套網絡同時進行傳輸。
13.根據權利要求12的基于智能網卡的計算機間用戶級并行通信方法,其特征在于,消息分片方法,1.發送過程中的消息分片
在消息發送方,消息根據其長度不同被分為固定大小的分片,其中,消息1被分為4個分片,依次為分片0、分片1、分片2和分片3;消息2被分為5個分片,依次為分片0、分片1、分片2、分片3和分片4,消息的各個分片依次從不同的通信網絡上傳輸,若消息不能被均勻分配在不同的通信網絡上,則排列在前面的通信網絡將發送較多的分片,消息1的分片0和2、消息2的分片0、2和4依次由通信網絡0進行發送;消息1的分片1和3、消息2的分片1和3依次由通信網絡1進行發送;2.接收過程中的消息分片在消息接收方,消息緩沖區根據其長度不同被分為固定大小的分片,其中,消息緩沖區1被分為4個分片,依次為分片0、分片1、分片2和分片3;消息緩沖區2被分為5個分片,依次為分片0、分片1、分片2、分片3和分片4,消息緩沖區的各個分片依次從不同的通信網絡上接收數據,若消息緩沖區不能被均勻分配在不同的通信網絡上,則排列在前面的通信網絡將接收較多的分片,消息緩沖區1的分片0和2、消息緩沖區2的分片0、2和4依次從通信網絡0上接收數據;消息緩沖區1的分片1和3、消息緩沖區2的分片1和3依次從通信網絡1上接收數據。
14.根據權利要求12的基于智能網卡的計算機間用戶級并行通信方法,其并行通信核心步驟如下步驟1,用戶應用程序將消息接收緩沖區信息注冊至通信系統中;步驟2,并行模塊根據消息的分片原則將消息接收緩沖區信息分配到不同的網卡上,并等待消息的到達;步驟3,用戶應用程序的消息發送請求提交至通信系統中;步驟4,并行模塊根據消息的分片原則將消息發送請求分配到不同的通信網絡上,并將相應的消息發送請求信息填寫到對應的網卡上;步驟5,由底層的用戶級通信協議將分給該網卡的消息分片由用戶緩沖區下傳至網卡上;步驟6,發送方計算機上的智能網卡向接收方計算機的智能網卡傳輸數據的過程;步驟7,根據底層的用戶級通信協議確認消息各分片發送完成后形成消息發送完成事件,并通知用戶應用程序;步驟8,由網卡控制程序將接收至網卡上的數據上傳至用戶緩沖區;步驟9,根據底層的用戶級通信協議確認消息各個分片接收完成后,形成消息接收完成事件,并通知用戶應用程序。
15.根據權利要求12的基于智能網卡的計算機間用戶級并行通信方法,并行通信步驟如下并行通信在消息發送方的一次消息發送操作流程由步驟S1至S5構成;步驟S1將用戶的消息發送請求提交至通信系統中;步驟S2并行模塊根據消息的分片原則將消息發送請求分配到不同的通信網絡上,并將相應的消息發送請求信息填寫到對應的網卡上;步驟S3由底層的用戶級通信協議將分給該網卡的消息分片由用戶緩沖區下傳至網卡上;步驟S4由網卡控制程序由網卡向通信網絡發送消息數據;步驟S5根據底層的用戶級通信協議確認消息各分片發送完成后形成消息發送完成事件,并通知用戶程序;并行通信在消息接收方的一次消息接收操作流程由步驟R1至R5構成;步驟R1將用戶的消息接收緩沖區信息至通信系統中;步驟R2并行模塊根據消息的分片原則將消息接收緩沖區信息分配到不同的網卡上;步驟R3等待網絡上的數據,并接收一個完整的數據包;步驟R4由網卡控制程序將接收至網卡上的數據上傳至用戶緩沖區;步驟R5根據底層的用戶級通信協議確認消息各個分片接收完成后,形成消息接收完成事件,并通知用戶程序。
全文摘要
一種計算機間用戶級并行通信的方法,使用多套支持智能網卡的高性能網絡進行計算機間的互連,在實現用戶級通信協議的操作系統核心空間設備驅動程序和用戶空間通信庫中加入支持并行通信的器件,傳輸過程中數據自動在多套互連網絡間進行拆分和拼接。該方法能夠實現計算機間并行、無拷貝、保序的消息傳遞,使用戶能夠獲得多套互連網絡硬件提供的聚合性能。該方法使得并行通信過程對上層用戶和底層通信網絡透明,避免增加用戶負擔和對特定網絡的修改與依賴。該方法適用于單套互連網絡不能滿足對計算機間通信性能需求的系統。
文檔編號H04L29/06GK1547348SQ200310119408
公開日2004年11月17日 申請日期2003年12月10日 優先權日2003年12月10日
發明者馬捷, 孟丹, 霍志剛, 高帆, 馬 捷 申請人:中國科學院計算技術研究所