欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

流量控制方法、設備和系統(tǒng)與流程

文檔序號:12376361閱讀:338來源:國知局
流量控制方法、設備和系統(tǒng)與流程

本發(fā)明實施例涉及網(wǎng)絡領域,尤其涉及流量控制方法、設備和系統(tǒng)。



背景技術:

設備之間的消息通信,無論是基于傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(Transmission Control Protocol/Internet Protocol,簡稱TCP/IP)協(xié)議還是其他支持通信協(xié)議(例如套接字socket接口協(xié)議)的消息通信,需將消息封裝為數(shù)據(jù)包,在設備之間交互數(shù)據(jù)包來實現(xiàn)消息通信;為保證正確接收數(shù)據(jù)包的概率,確定了流量控制機制,通過該流量控制機制來協(xié)調一設備(發(fā)送端)向另一設備(接收端)傳輸數(shù)據(jù)的速度。流量控制機制中,接收端準備好接收數(shù)據(jù)時生成載有信用數(shù)據(jù)(Credit Data)的消息,并將該消息封裝成數(shù)據(jù)包(流量控制包),向發(fā)送端發(fā)送該流量控制包;發(fā)送端解析該流量控制包得到載有所述信用數(shù)據(jù)的消息,進而發(fā)送端根據(jù)該信用數(shù)據(jù)確定在下一次收到流量控制包之前可以發(fā)送的最大字節(jié)數(shù)。發(fā)送端發(fā)送數(shù)據(jù)包,當發(fā)送的數(shù)據(jù)包具有的字節(jié)數(shù)達到根據(jù)該信用數(shù)據(jù)確定的最大字節(jié)數(shù)時,發(fā)送端必須等待接收端發(fā)送的下一個流量控制包并從該流量控制包解析出下一個信用數(shù)據(jù),才能根據(jù)下一個信用數(shù)據(jù),繼續(xù)向接收端發(fā)送數(shù)據(jù)包。

以隊列偶(Queue Pair,簡稱QP)為例,發(fā)送端期望向接收端提供 業(yè)務時,建立一條QP通道,將該業(yè)務的數(shù)據(jù)封裝在消息中,在將該消息封裝在數(shù)據(jù)包中,通過該QP通道向接收端發(fā)送該數(shù)據(jù)包;接收端每接收一個來自發(fā)送端的數(shù)據(jù)包,會消耗掉一個接收隊列中的一個接收緩沖格,該接收隊列由多個接收緩沖格組成。接收緩沖格的數(shù)據(jù)包被應用程序取走后,可以再次用來接收從發(fā)送端發(fā)來的數(shù)據(jù)包,能夠用來接收數(shù)據(jù)包的接收緩沖格被稱為可用緩沖格。另外,發(fā)送端和接收端還建立了一條用于流量控制的QP通道;接收端,每當其可用緩沖格的數(shù)量達到接收隊列的一半時,生成載有信用數(shù)據(jù)的數(shù)據(jù)包(流量控制包),通過該QP通道并利用QP發(fā)送接收操作向發(fā)送端傳輸該流量控制包;進而發(fā)送端從該流量控制包中解析出信用數(shù)據(jù),根據(jù)解析出的信用數(shù)據(jù)確定最多可向接收端發(fā)送的數(shù)據(jù)包的個數(shù)。

因此,采用QP通道的方式傳輸載有信用數(shù)據(jù)的流量控制包來實現(xiàn)接收端與發(fā)送端之間的流量控制,需要較多的軟件開銷(包括新建立QP通道、接收端的數(shù)據(jù)包封裝、發(fā)送端的數(shù)據(jù)包解析),延遲了發(fā)送端獲取到信用數(shù)據(jù)的時間,從而延長了兩次根據(jù)信用數(shù)據(jù)控制數(shù)據(jù)包發(fā)送之間間隔的時間,降低了網(wǎng)絡帶寬的利用率。



技術實現(xiàn)要素:

有鑒于此,本發(fā)明實施例提供了一種流量控制方法、設備和系統(tǒng),通過遠程內存訪問指令更改用于流量控制的信用數(shù)據(jù),從硬件層面完成信用數(shù)據(jù)的更改,省去了軟件層面更改信用數(shù)據(jù)所需的交互時間。

第一方面,本發(fā)明實施例提供了一種流量控制方法,所述流量控制 方法包括:

從接收隊列獲取第一消息數(shù)據(jù)包,所述接收隊列中存儲由第一設備向第二設備發(fā)送的消息數(shù)據(jù)包;

在所述接收隊列中刪除已獲取的所述第一消息數(shù)據(jù)包,若所述接收隊列中存儲的消息數(shù)據(jù)包的個數(shù)小于或等于所述第一閾值,向所述第一設備發(fā)送載有信用數(shù)據(jù)的數(shù)據(jù)導入指令,將所述信用數(shù)據(jù)寫入所述第一設備內存中的預設地址,以使所述第一設備根據(jù)所述預設地址記錄的所述信用數(shù)據(jù)確定向所述第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù)上限,其中,所述信用數(shù)據(jù)為所述接收隊列期望接收的消息數(shù)據(jù)包的個數(shù),所述數(shù)據(jù)導入指令屬于遠程內存訪問指令。

結合第一方面,在第一種可能的實現(xiàn)方式中,所述向所述第一設備發(fā)送載有信用數(shù)據(jù)的數(shù)據(jù)導入指令,將所述信用數(shù)據(jù)寫入所述第一設備內存中的預設地址,具體為:

所述第二設備的內存資源控制器MRC向所述第一設備的MRC發(fā)送所述數(shù)據(jù)導入指令,使得所述第一設備的MRC轉發(fā)所述數(shù)據(jù)導入指令至所述第一設備的內存控制器MC,由所述第一設備的MC根據(jù)所述數(shù)據(jù)導入指令將所述信用數(shù)據(jù)寫入所述預設地址。

結合第一方面的第一種可能的實現(xiàn)方式或者第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述數(shù)據(jù)導入指令包括:所述第一設備的標識、與所述預設地址對應的物理地址。

第二方面,本發(fā)明實施例提供了一種第二設備,所述第二設備包括:

數(shù)據(jù)處理模塊,用于從接收隊列獲取第一消息數(shù)據(jù)包,所述接收隊列中存儲由第一設備向所述第二設備發(fā)送的消息數(shù)據(jù)包;

所述數(shù)據(jù)處理模塊,還用于在所述接收隊列中刪除已獲取的所述第一消息數(shù)據(jù)包,若所述接收隊列中存儲的消息數(shù)據(jù)包的個數(shù)小于或等于所述第一閾值,確定信用數(shù)據(jù),所述信用數(shù)據(jù)為所述接收隊列期望接收的消息數(shù)據(jù)包的個數(shù);

指令發(fā)送模塊,用于向所述第一設備發(fā)送載有信用數(shù)據(jù)的數(shù)據(jù)導入指令,將所述信用數(shù)據(jù)寫入所述第一設備內存中的預設地址,以使所述 第一設備根據(jù)所述預設地址記錄的所述信用數(shù)據(jù)確定向所述第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù)上限,所述數(shù)據(jù)導入指令屬于遠程內存訪問指令。

結合第二方面,在第一種可能的實現(xiàn)方式中,所述指令發(fā)送模塊,用于向所述第一設備發(fā)送載有信用數(shù)據(jù)的數(shù)據(jù)導入指令,將所述信用數(shù)據(jù)寫入所述第一設備內存中的預設地址,具體為:

所述指令發(fā)送模塊為所述第二設備的內存資源控制器MRC,用于向所述第一設備的MRC發(fā)送所述數(shù)據(jù)導入指令,使得所述第一設備的MRC轉發(fā)所述數(shù)據(jù)導入指令至所述第一設備的內存控制器MC,由所述第一設備的MC根據(jù)所述數(shù)據(jù)導入指令將所述信用數(shù)據(jù)寫入所述預設地址。

結合第二方面的第一種可能的實現(xiàn)方式或者第二方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述數(shù)據(jù)導入指令包括:所述第一設備的標識、與所述預設地址對應的物理地址。

第三方面,本發(fā)明實施例提供了一種流量控制方法,所述流量控制方法包括:

接收由第二設備向第一設備發(fā)送的數(shù)據(jù)導入指令,向內存中所述數(shù)據(jù)導入指令指向的預設地址寫入信用數(shù)據(jù),其中,所述數(shù)據(jù)導入指令載有所述信用數(shù)據(jù),所述數(shù)據(jù)導入指令屬于遠程內存訪問指令;

根據(jù)所述預設地址記錄的所述信用數(shù)據(jù)確定向所述第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù)上限。

結合第三方面,在第一種可能的實現(xiàn)方式中,所述接收由第二設備向第一設備發(fā)送的數(shù)據(jù)導入指令,向內存中所述數(shù)據(jù)導入指令指向的預設地址寫入信用數(shù)據(jù),具體包括:

所述第一設備的MRC接收從所述第二設備的MRC發(fā)送的所述數(shù)據(jù)導入指令,轉發(fā)所述數(shù)據(jù)導入指令至所述第一設備的內存控制器MC;

所述第一設備的MC根據(jù)所述數(shù)據(jù)導入指令向所述預設地址寫入所述信用數(shù)據(jù)。

結合第三方面的第一種可能的實現(xiàn)方式或者第三方面的第二種可 能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述數(shù)據(jù)導入指令包括:所述第一設備的標識、與所述預設地址對應的物理地址。

第四方面,本發(fā)明實施例提供了一種第一設備,所述第一設備包括:

指令接收模塊,用于接收由第二設備向第一設備發(fā)送的數(shù)據(jù)導入指令,其中,所述數(shù)據(jù)導入指令載有信用數(shù)據(jù),所述數(shù)據(jù)導入指令屬于遠程內存訪問指令;

指令響應模塊,用于向內存中所述數(shù)據(jù)導入指令指向的預設地址寫入所述信用數(shù)據(jù);

消息數(shù)據(jù)包限制模塊,用于根據(jù)所述預設地址記錄的所述信用數(shù)據(jù)確定向所述第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù)上限。

結合第四方面,在第一種可能的實現(xiàn)方式中,所述指令接收模塊為第一設備的內存資源控制器MRC,用于接收從第二設備的MRC發(fā)送的數(shù)據(jù)導入指令,轉發(fā)所述數(shù)據(jù)導入指令至所述第一設備的內存控制器MC;

所述指令響應模塊為所述第一設備的MC,用于根據(jù)所述數(shù)據(jù)導入指令向所述預設地址寫入所述信用數(shù)據(jù)。

結合第四方面的第一種可能的實現(xiàn)方式或者第四方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述數(shù)據(jù)導入指令包括:所述第一設備的標識、與所述預設地址對應的物理地址。

第五方面,本發(fā)明實施例提供了一種系統(tǒng),所述系統(tǒng)包括第一設備和第二設備,所述第一設備和所述第二設備通信連接;

所述第二設備,用于從接收隊列獲取第一消息數(shù)據(jù)包,所述接收隊列中存儲由所述第一設備向所述第二設備發(fā)送的所述消息數(shù)據(jù)包;

所述第二設備,用于在所述接收隊列中刪除已獲取的所述第一消息數(shù)據(jù)包,若所述接收隊列中存儲的消息數(shù)據(jù)包的個數(shù)小于或等于所述第一閾值,向所述第一設備發(fā)送載有信用數(shù)據(jù)的數(shù)據(jù)導入指令,所述信用數(shù)據(jù)為所述接收隊列期望接收的消息數(shù)據(jù)包的個數(shù),所述數(shù)據(jù)導入指令屬于遠程內存訪問指令;

所述第一設備,用于根據(jù)所述數(shù)據(jù)導入指令將所述信用數(shù)據(jù)寫入其內存中的預設地址,根據(jù)所述預設地址記錄的所述信用數(shù)據(jù)確定向所述 第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù)上限。

結合第五方面,在第一種可能的實現(xiàn)方式中,所述第一設備,用于根據(jù)所述數(shù)據(jù)導入指令將所述信用數(shù)據(jù)寫入其內存中的預設地址,具體為:

所述第一設備,用于由所述第一設備的內存資源控制器MRC接收從所述第二設備的MRC發(fā)送的所述數(shù)據(jù)導入指令,轉發(fā)所述數(shù)據(jù)導入指令至所述第一設備的內存控制器MC,由所述第一設備的MC根據(jù)所述數(shù)據(jù)導入指令向所述預設地址寫入所述信用數(shù)據(jù)。

結合第五方面的第一種可能的實現(xiàn)方式或者第五方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述數(shù)據(jù)導入指令包括:所述第一設備的標識、與所述預設地址對應的物理地址。

通過上述方案,第二設備通過數(shù)據(jù)導入指令直接更新第一設備的內存中的該信用數(shù)據(jù),第一設備根據(jù)內存中的該信用數(shù)據(jù)控制其向第二設備最多發(fā)送的數(shù)據(jù)包的個數(shù);從硬件層面完成信用數(shù)據(jù)的更改,省去了軟件層面更改信用數(shù)據(jù)所需的交互時間,提前了第一設備根據(jù)該信用數(shù)據(jù)控制其向第二設備發(fā)送數(shù)據(jù)包的時間,提高了網(wǎng)絡帶寬的利用率。

附圖說明

圖1為流量控制方法的應用場景的系統(tǒng)邏輯結構示意圖;

圖2為依據(jù)本發(fā)明一實施例提供的流量控制方法的一種示范性流程圖;

圖3為依據(jù)本發(fā)明一實施例的第二設備300提供的邏輯結構示意圖;

圖4為依據(jù)本發(fā)明一實施例提供的流量控制方法的一種示范性流程圖;

圖5為對圖4中步驟S401的一種可選細化流程圖;

圖6為依據(jù)本發(fā)明一實施例的第一設備600提供的邏輯結構示意圖。

具體實施方式

下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

如圖1所示的系統(tǒng)100,包括第一設備101和第二設備102。需說明的是,“第一設備”中的“第一”和“第二設備”中的“第二”,為代指,用于設備區(qū)分。

對于圖1中的第一設備101,第一設備101具有處理器1013、內存資源控制器(Memory Resources Controller,簡稱MRC)1011、內存控制器(Memory Controller,簡稱MC)1012和內存1014。第一設備101中,處理器1013與內存資源控制器1011和/或內存控制器1012通過總線連接,或者內存資源控制器1011和/或內存控制器1012與該處理器1013直接電性連接;可選地,內存資源控制器1011和/或內存控制器1012集成到該處理器1013內,集成到處理器1013內的內存資源控制器1011與該處理器1013直接電性連接,集成到處理器1013內的內存控制器1012與該處理器1013直接電性連接。內存控制器1012,在處理器1013的控制下對本地內存(即內存1014)進行數(shù)據(jù)的讀取或寫入。內存資源控制器1011,在處理器1013的控制下對遠端內存進行數(shù)據(jù)的讀取或寫入,舉例說明,第二設備102的內存1024相對于第一設備101為遠端內存。無論本地內存還是遠端內存都屬于內存,用于存儲數(shù)據(jù)。

對于圖1中的第二設備102,有處理器1023、內存資源控制器1021、 內存控制器1022和內存1024。第二設備102中,處理器1023與內存資源控制器1021和/或內存控制器1022通過總線連接,或者內存資源控制器1021和/或內存控制器1022與該處理器1023直接電性連接;可選地,集成到處理器1023內的內存資源控制器1021與該處理器1023直接電性連接,集成到處理器1023內的內存控制器1022與該處理器1023直接電性連接。內存控制器1022,在處理器1023的控制下對本地內存(即內存1024)進行數(shù)據(jù)的讀取或寫入。內存資源控制器1021,在處理器1023的控制下對遠端內存進行數(shù)據(jù)的讀取或寫入,舉例說明,第一設備101中的內存1014相對于第二設備102為遠端內存。無論本地內存還是遠端內存都屬于內存,用于存儲數(shù)據(jù)。

系統(tǒng)100中,第一設備101與第二設備102通信連接,第一設備101與第二設備102通過數(shù)據(jù)包的交互來實現(xiàn)數(shù)據(jù)交互。其中,對于業(yè)務交互,第一設備101與第二設備102通過消息交互的方式實現(xiàn)業(yè)務交互。

以第一設備101期望向第二設備102發(fā)送業(yè)務的數(shù)據(jù)為例,第一設備101的處理器1013將該業(yè)務的數(shù)據(jù)封裝在消息中,再將該消息封裝在數(shù)據(jù)包中,在發(fā)送緩存區(qū)中依次存儲封裝的數(shù)據(jù)包;若期望對從第一設備101向第二設備102發(fā)送的數(shù)據(jù)包進行流量控制,則確定最新的信用數(shù)據(jù),第一設備101根據(jù)所述信用數(shù)據(jù)控制硬件收發(fā)模塊向第二設備102發(fā)送的該數(shù)據(jù)包,發(fā)送的該數(shù)據(jù)包的個數(shù)至多為所述信用數(shù)據(jù);對應地,第二設備102的硬件收發(fā)模塊接收第一設備101發(fā)送的數(shù)據(jù)包,并在第二設備102的接收隊列中存儲接收到的數(shù)據(jù)包,對數(shù)據(jù)包進行解析并解析出載有業(yè)務數(shù)據(jù)的消息,第二設備102的處理器1023再從該消息中解析出業(yè)務的數(shù)據(jù)。類似地,可實現(xiàn)第二設備102向第一設備101發(fā)送業(yè)務的數(shù)據(jù),在此不再贅述。

本發(fā)明一實施例,為業(yè)務建立隊列偶(Queue Pair,簡稱QP)通道,通過該QP通道傳輸?shù)谝辉O備與第二設備之間交互的業(yè)務數(shù)據(jù),定義該業(yè)務數(shù)據(jù)為業(yè)務的數(shù)據(jù)。以第一設備向第二設備提供業(yè)務為例,通過該QP通道傳輸載有該業(yè)務數(shù)據(jù)的數(shù)據(jù)包;在傳輸過程中,采用流量控制方 法對從第一設備向第二設備發(fā)送的數(shù)據(jù)包的個數(shù)進行控制,實現(xiàn)流量控制。

為實現(xiàn)該流量控制,在第一設備的內存中分配一段內存空間,該段內存空間用于存儲信用數(shù)據(jù),將該段內存空間的物理地址定義為第一物理地址;對該段內存空間的第一物理地址進行地址映射,地址映射得到該段內存空間的虛擬地址,第一設備的處理器可根據(jù)該虛擬地址訪問該信用數(shù)據(jù)(例如根據(jù)該虛擬地址讀取該信用數(shù)據(jù));可選地,第一設備具有內存管理單元(Memory Management Unit,MMU),該處理器對該信用數(shù)據(jù)的訪問的過程中,由MMU完成虛擬地址到第一物理地址的地址映射。另外,還將該段內存空間的第一物理地址和第一設備的標識進行加密,生成加密數(shù)據(jù)的數(shù)據(jù)包,向第二設備發(fā)送該數(shù)據(jù)包;第二設備從該數(shù)據(jù)包中解析出加密的第一物理地址和第一設備的標識,再解密得到:第一物理地址和第一設備的標識。

另外,預先在第二設備中分配一段物理地址,將分配的該段物理地址定義為第二物理地址。第二設備解密得到第一物理地址后,確定第一物理地址與第二物理地址的映射關系。

在第一設備向第二設備發(fā)送載有業(yè)務的數(shù)據(jù)包的過程中,第二設備將從第一設備接收的數(shù)據(jù)包依次存儲在接收隊列中,每從第一設備接收到一個數(shù)據(jù)包,便將該個數(shù)據(jù)包存儲在該接收隊列的一個接收緩沖格中,即一個數(shù)據(jù)包需一個接收緩沖格來存儲;另外,該業(yè)務的應用,可從該接收隊列的接收緩沖格中,讀取并取走該業(yè)務的數(shù)據(jù)包;被取走數(shù)據(jù)包的接收緩沖格,可繼續(xù)用來接收從第一設備發(fā)送的數(shù)據(jù)包;當所述接收隊列中的消息數(shù)據(jù)包的個數(shù)從大于第一閾值減小到小于或等于所述第一閾值時,即接收隊列中可用來接收數(shù)據(jù)包的接收緩沖格從小于第二閾值增長到大于或等于第二閾值(可選地,第一閾值與第二閾值的和等于接收隊列包含的接收緩沖格的總個數(shù))時,確定一次信用數(shù)據(jù),并生成一次數(shù)據(jù)導入指令,該數(shù)據(jù)導入指令包括第二物理地址和第一設備的標識,該數(shù)據(jù)導入指令還包括確定的信用數(shù)據(jù),在該信用數(shù)據(jù)中記錄:所述第二設備期望由其接收隊列接收的消息數(shù)據(jù)包的個數(shù);第二設備根 據(jù)該數(shù)據(jù)導入指令中的第二物理地址確定該數(shù)據(jù)導入指令不是訪問第二設備的內存而是訪問第一設備的內存,將該數(shù)據(jù)導入指令中的第二物理地址替換為:與該第二物理地址映射的第一物理地址;然后,直接向第一設備的內存中該數(shù)據(jù)導入指令指向的該第一物理地址寫入本次確定的信用數(shù)據(jù)。可選地,當內第二設備的存控制器(memory controller,簡稱MC)識別到該數(shù)據(jù)導入指令為指向第二物理地址的遠程內存訪問指令時,將該數(shù)據(jù)導入指令轉由第二設備的內存資源控制器(Memory Resources Controller,簡稱MRC)處理;第二設備的MRC將該數(shù)據(jù)導入指令中的第二物理地址替換為對應的第一物理地址,再將地址替換后的該數(shù)據(jù)導入指令發(fā)送至第一設備的MRC;第一設備的MRC識別到該數(shù)據(jù)導入指令指向的所述第一物理地址為第一設備的本地內存的物理地址時,轉發(fā)給數(shù)據(jù)導入指令至第一設備的MC;第一設備的MC根據(jù)該數(shù)據(jù)導入指令向所述第一物理地址寫入本次確定的信用數(shù)據(jù)以更新所述第一物理地址中原存儲的信用數(shù)據(jù)。

可選地,該遠程內存訪問指令包括load指令和store指令,該數(shù)據(jù)導入指令為store指令。第二設備根據(jù)指向第一設備的內存的預設地址的store指令,能夠直接對該預設地址進行遠程的數(shù)據(jù)寫入,更新該預設地址存儲的信用數(shù)據(jù)。

本實施例中,在對第一設備向第二設備發(fā)送載有業(yè)務的數(shù)據(jù)包中,為控制發(fā)送的數(shù)據(jù)包的個數(shù)來實現(xiàn)流量控制,在第一設備的內存中分配一段內存空間,該段內存空間用于存儲信用數(shù)據(jù)的一段內存空間;將該段內存空間的第一物理地址和第一設備的標識通知第二設備之后,第二設備可通過遠程內存訪問指令直接訪問該段內存空間,更改該段內存空間存儲的信用數(shù)據(jù)。第二設備更改該段內存空間存儲的信用數(shù)據(jù)的過程中,都屬于硬件層面的數(shù)據(jù)傳輸,相對于QP需分配緩沖區(qū)來接收載有信用數(shù)據(jù)的數(shù)據(jù)包、從數(shù)據(jù)包解析出信用數(shù)據(jù)、再由第一設備的處理器在該段內存空間寫入信用數(shù)據(jù),減小了在第一設備的該段內存空間中更新信用數(shù)據(jù)的時延,提前了根據(jù)該信用數(shù)據(jù)繼續(xù)向第二設備發(fā)送載有業(yè)務的數(shù)據(jù)包的發(fā)送時間,能夠更加有效地利用網(wǎng)絡帶寬。

本發(fā)明一實施例,提供一種流量控制方法,圖2示出了依據(jù)本實施例提供的該方法的實現(xiàn)流程,但為了便于描述,圖2僅示出了與本發(fā)明實施例相關的部分。所述流量控制方法包括步驟S201和步驟S202。

本實施例所述的消息數(shù)據(jù)包為:第一設備向第二設備提供業(yè)務的過程中,由第一設備向第二設備發(fā)送的數(shù)據(jù)包;該數(shù)據(jù)包載有該業(yè)務的數(shù)據(jù)。

預先在第一設備中的內存中分配一段內存空間,該段內存空間用于存儲信用數(shù)據(jù),此處統(tǒng)稱可訪問該段內存空間的地址為預設地址,例如,所述預設地址為該段內存空間的物理地址(即上述的第一物理地址),再例如,所述預設地址為對該第一物理地址進行地址映射后得到的虛擬地址。

如果該預設地址為該段內存空間的第一物理地址,將該預設地址進行地址映射,得到該段內存空間的虛擬地址;第一設備的處理器可根據(jù)該虛擬地址訪問該段內存空間。

另外,確定第一設備的標識,使得第二設備能夠根據(jù)第一設備的標識訪問到第一設備;第一設備,在其與第二設備的通信中,將載有第一物理地址和第一設備的標識通知第二設備;繼而,第二設備能夠根據(jù)指向第一物理地址的遠程內存訪問指令直接訪問第一設備的內存中的該段內存空間。

步驟S201,從接收隊列獲取第一消息數(shù)據(jù)包,所述接收隊列中存儲由第一設備向第二設備發(fā)送的消息數(shù)據(jù)包。其中,所述第一消息數(shù)據(jù)包為已存儲在該接收隊列中的、業(yè)務的應用正在從該接收隊列取走的數(shù)據(jù)包。

步驟S202,在所述接收隊列中刪除已獲取的所述第一消息數(shù)據(jù)包,若所述接收隊列中存儲的消息數(shù)據(jù)包的個數(shù)小于或等于所述第一閾值,向所述第一設備發(fā)送載有信用數(shù)據(jù)的數(shù)據(jù)導入指令,將所述信用數(shù)據(jù)寫入所述第一設備內存中的預設地址,以使所述第一設備根據(jù)所述預設地址記錄的所述信用數(shù)據(jù)確定向所述第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù) 上限,其中,所述信用數(shù)據(jù)為所述接收隊列期望接收的消息數(shù)據(jù)包的個數(shù),所述數(shù)據(jù)導入指令屬于遠程內存訪問指令。

第一設備向第二設備提供業(yè)務的過程中,第一設備向第二設備發(fā)送載有該業(yè)務的消息數(shù)據(jù)包;如,采用QP進行第一設備與第二設備之間消息數(shù)據(jù)包的收發(fā),將第一設備中期望向第二設備發(fā)送的消息數(shù)據(jù)包添加入第一設備的發(fā)送隊列,該發(fā)送隊列由多個發(fā)送緩沖格組成,每個該發(fā)送緩沖格能緩存一個待發(fā)送的數(shù)據(jù)包,可將待發(fā)送的該消息數(shù)據(jù)包依次緩存在該發(fā)送緩沖格中;按照第一設備的內存的預設地址中存儲的信用數(shù)據(jù)確定最多可向第二設備發(fā)送該消息數(shù)據(jù)包的個數(shù),根據(jù)確定的個數(shù)控制發(fā)送隊列中消息數(shù)據(jù)包的發(fā)送。

相應地,第二設備具有接收隊列,該接收隊列由多個接收緩沖格組成,每個該接收緩沖格能緩存一個接收的數(shù)據(jù)包,因此在第一設備向第二設備提供業(yè)務的過程中,第二設備將接收的消息數(shù)據(jù)包依次緩存在該接收緩沖格中。

第二設備中,該業(yè)務的應用可從該接收隊列取走消息數(shù)據(jù)包(正在被取走的消息數(shù)據(jù)包為第一數(shù)據(jù)包),取走該第一消息數(shù)據(jù)包這一動作包括從接收緩沖格中獲取第一消息數(shù)據(jù)包、刪除該接收緩沖格中存儲的第一消息數(shù)據(jù)包;該業(yè)務的應用每從一個接收緩沖格中取走第一消息數(shù)據(jù)包,該接收緩沖格便能夠再次用來緩存接收到的消息數(shù)據(jù)包;因此,該業(yè)務的應用持續(xù)從接收緩沖格中取走消息數(shù)據(jù)包的過程中,可能會出現(xiàn)所述接收隊列中的消息數(shù)據(jù)包的個數(shù)從大于第一閾值減小到小于或等于所述第一閾值這一事件,一旦出現(xiàn)該事件,則在所述接收隊列中的消息數(shù)據(jù)包的個數(shù)減小到小于或等于所述第一閾值時,觸發(fā)數(shù)據(jù)導入指令,也即可再次用來接收消息數(shù)據(jù)包的接收緩沖格的個數(shù)從小于第二閾值增長到大于或等于第二閾值(第一閾值與第二閾值的和等于接收隊列包含的接收緩沖格的總個數(shù))時觸發(fā)該數(shù)據(jù)導入指令;該數(shù)據(jù)導入指令的參數(shù)包括:第一物理地址和第一設備的標識。因此,該第二設備能夠根據(jù)該數(shù)據(jù)導入指令直接向第一設備的內存的預設地址寫入信用數(shù)據(jù),第一設備根據(jù)本次寫入的該信用數(shù)據(jù)確定:在第二設備下一次更新該信 用數(shù)據(jù)之前,第一設備至多可向第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù)。以此類推,第二設備,每次所述接收隊列中的消息數(shù)據(jù)包的個數(shù)從大于第一閾值減小到小于或等于所述第一閾值時,均觸發(fā)一次數(shù)據(jù)導入指令,通過該數(shù)據(jù)導入指令更新第一設備的內存的預設地址中存儲的信用數(shù)據(jù);信用數(shù)據(jù)每次更新后,第一設備每次可根據(jù)更新的信用數(shù)據(jù)確定可向第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù)。實現(xiàn)根據(jù)信用數(shù)據(jù)的更新,控制第一設備不同時間段可向第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù),實現(xiàn)第一設備向第二設備提供業(yè)務時的流量控制。

另外,在第一設備與第二設備之間初始建立QP通道時,第二設備的接收隊列中可用于接收數(shù)據(jù)包的接收緩沖格的個數(shù)小于或等于所述第一閾值,步驟S202觸發(fā)數(shù)據(jù)導入指令,通過該數(shù)據(jù)導入指令重置第一設備的內存的預設地址中存儲的信用數(shù)據(jù)。

另外,第一設備與第二設備之間建立的QP通道中斷后再次啟用,如果第二設備的接收隊列中可用于接收數(shù)據(jù)包的接收緩沖格的個數(shù)小于或等于所述第一閾值,步驟S202觸發(fā)數(shù)據(jù)導入指令,通過該數(shù)據(jù)導入指令更新第一設備的內存的預設地址中存儲的信用數(shù)據(jù)。

本實施例中,對采用哪種方式實現(xiàn)第二設備將數(shù)據(jù)導入指令發(fā)送至第一設備不做限定;例如,第二設備直接向第一設備發(fā)送該數(shù)據(jù)導入指令;再如,經(jīng)其他轉發(fā)設備(如路由器、交換機等)將第二設備發(fā)送的該數(shù)據(jù)導入指令轉發(fā)至第一設備。

另外,本實施例對第一設備中由哪個器件響應該數(shù)據(jù)導入指令并將信用數(shù)據(jù)寫入內存的預設地址不做限定;如,由內存資源控制器響應該數(shù)據(jù)導入指令并轉發(fā)該數(shù)據(jù)導入指令至第一設備的內存控制器,由第一設備的內存控制器并將信用數(shù)據(jù)寫入內存的預設地址;如,由第一設備的處理器響應該數(shù)據(jù)導入指令,并控制內存控制器將信用數(shù)據(jù)寫入內存的預設地址。

可選地,對圖2提供的流量控制方法做一可選細化,所述向所述第一設備發(fā)送載有信用數(shù)據(jù)的數(shù)據(jù)導入指令,將所述信用數(shù)據(jù)寫入所述第一設備內存中的預設地址,具體為:

所述第二設備的內存資源控制器MRC向所述第一設備的MRC發(fā)送所述數(shù)據(jù)導入指令,使得所述第一設備的MRC轉發(fā)所述數(shù)據(jù)導入指令至所述第一設備的內存控制器MC,由所述第一設備的MC根據(jù)所述數(shù)據(jù)導入指令將所述信用數(shù)據(jù)寫入所述預設地址。

具體地,預先在第二設備中分配一段物理地址,將分配的該段物理地址定義為第二物理地址。第一設備首先向第二設備發(fā)送第一設備的標識和第一物理地址;第二設備獲得第一物理地址后,確定第一物理地址與第二物理地址的映射關系。

第二設備每次期望更新第一設備的內存中的信用數(shù)據(jù),則觸發(fā)所述數(shù)據(jù)導入指令,觸發(fā)的所述數(shù)據(jù)導入指令指向的地址為第二物理地址,此處對觸發(fā)該數(shù)據(jù)導入指令的場景不做詳述,具體參見上述實施例的描述。第二設備在識別到第二物理地址不為指向本地內存的物理地址時,將所述數(shù)據(jù)導入指令中的第二物理地址替換為對應的第一物理地址,將地址替換后的數(shù)據(jù)導入指令發(fā)送至所述第一設備的內存資源控制器,所述第一設備的內存資源控制器識別到該數(shù)據(jù)導入指令指向的所述第一物理地址為第一設備的本地內存的地址時,轉發(fā)給數(shù)據(jù)導入指令至第一設備的內存控制器;第一設備的內存控制器根據(jù)該數(shù)據(jù)導入指令向內存的第一物理地址(與預設地址對應)寫入該數(shù)據(jù)導入指令載有的信用數(shù)據(jù)。

可選地,所述數(shù)據(jù)導入指令包括:所述第一設備的標識、與所述預設地址對應的物理地址。其中,與所述預設地址對應的物理地址為上述的第一物理地址。即,如果所述預設地址為第一設備的第一物理地址,則所述預設地址與所述數(shù)據(jù)導入指令包括的物理地址相同,如果所述預設地址為與該第一物理地址映射的虛擬地址,則所述預設地址與所述數(shù)據(jù)導入指令包括的物理地址具有對應關系。

其中,所述第一設備的標識為:第一設備與第二設備通信時,用于第二設備找到第一設備的地址或者身份標識。

具體地,第二設備能夠根據(jù)該數(shù)據(jù)導入指令指向的所述第一設備的標識,指定第一設備執(zhí)行該數(shù)據(jù)導入指令;進一步根據(jù)與所述預設地址 對應的第一物理地址,能夠指向第一設備的內存的預設地址,并對該預設地址執(zhí)行所述信用數(shù)據(jù)的寫入。

本發(fā)明一實施例,提供一種第二設備300,圖3示出了依據(jù)本實施例提供的該第二設備300的邏輯結構示意圖,但為了便于描述,圖3僅示出了與本發(fā)明實施例相關的部分。

所述第二設備300包括:數(shù)據(jù)處理模塊301,用于從接收隊列獲取第一消息數(shù)據(jù)包,所述接收隊列中存儲由第一設備向所述第二設備發(fā)送的消息數(shù)據(jù)包;

所述數(shù)據(jù)處理模塊301,還用于在所述接收隊列中刪除已獲取的所述第一消息數(shù)據(jù)包,若所述接收隊列中存儲的消息數(shù)據(jù)包的個數(shù)小于或等于所述第一閾值,確定信用數(shù)據(jù),所述信用數(shù)據(jù)為所述接收隊列期望接收的消息數(shù)據(jù)包的個數(shù);

指令發(fā)送模塊302,用于向所述第一設備發(fā)送載有信用數(shù)據(jù)的數(shù)據(jù)導入指令,將所述信用數(shù)據(jù)寫入所述第一設備內存中的預設地址,以使所述第一設備根據(jù)所述預設地址記錄的所述信用數(shù)據(jù)確定向所述第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù)上限,所述數(shù)據(jù)導入指令屬于遠程內存訪問指令。

可選地,所述指令發(fā)送模塊302,用于向所述第一設備發(fā)送載有信用數(shù)據(jù)的數(shù)據(jù)導入指令,將所述信用數(shù)據(jù)寫入所述第一設備內存中的預設地址,具體為:

所述指令發(fā)送模塊302為所述第二設備的內存資源控制器MRC,用于向所述第一設備的MRC發(fā)送所述數(shù)據(jù)導入指令,使得所述第一設備的MRC轉發(fā)所述數(shù)據(jù)導入指令至所述第一設備的內存控制器MC,由所述第一設備的MC根據(jù)所述數(shù)據(jù)導入指令將所述信用數(shù)據(jù)寫入所述預設地址。

可選地,所述數(shù)據(jù)導入指令包括:所述第一設備的標識、與所述預設地址對應的物理地址。

本發(fā)明一實施例,提供一種流量控制方法,圖4示出了依據(jù)本實施 例提供的該方法的實現(xiàn)流程,但為了便于描述,圖4僅示出了與本發(fā)明實施例相關的部分。所述流量控制方法包括步驟S401和步驟S402。

預先在第一設備中的內存中分配一段內存空間,該段內存空間用于存儲信用數(shù)據(jù),此處統(tǒng)稱可訪問該段內存空間的地址為預設地址,例如,所述預設地址為該段內存空間的物理地址(即上述的第一物理地址),再例如,所述預設地址為對該第一物理地址進行地址映射后得到的虛擬地址。;

如果該預設地址為該段內存空間的第一物理地址,將該預設地址進行地址映射,得到該段內存空間的虛擬地址;第一設備的處理器可根據(jù)該虛擬地址訪問該段內存空間。

另外,確定第一設備的標識,使得第二設備能夠根據(jù)第一設備的標識訪問到第一設備;第一設備,在其與第二設備的通信中,將載有第一物理地址和第一設備的標識通知第二設備;繼而,第二設備能夠根據(jù)指向第一物理地址的遠程內存訪問指令直接訪問第一設備的內存中的該段內存空間。

步驟S401,接收由第二設備向第一設備發(fā)送的數(shù)據(jù)導入指令,向內存中所述數(shù)據(jù)導入指令指向的預設地址寫入所述信用數(shù)據(jù),其中,所述數(shù)據(jù)導入指令載有信用數(shù)據(jù),所述數(shù)據(jù)導入指令屬于遠程內存訪問指令;

步驟S402,根據(jù)所述預設地址記錄的所述信用數(shù)據(jù)確定向所述第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù)上限。

第二設備中,業(yè)務的應用從接收緩沖格中取走消息數(shù)據(jù)包的過程中,每次所述接收隊列中的消息數(shù)據(jù)包的個數(shù)從大于第一閾值減小到小于或等于所述第一閾值時,均觸發(fā)一次數(shù)據(jù)導入指令;即,可再次用來接收消息數(shù)據(jù)包的接收緩沖格的個數(shù)從小于第二閾值增長到大于或等于第二閾值時觸發(fā)該數(shù)據(jù)導入指令,其中,第一閾值與第二閾值的和等于接收隊列包含的接收緩沖格的總個數(shù)。第一設備根據(jù)該數(shù)據(jù)導入指令載有的信用數(shù)據(jù),更新第一設備的內存的預設地址中存儲的信用數(shù)據(jù);信用數(shù)據(jù)每次更新后,第一設備每次可根據(jù)更新的信用數(shù)據(jù)確定可向第 二設備發(fā)送的消息數(shù)據(jù)包的個數(shù)。實現(xiàn)根據(jù)信用數(shù)據(jù)的更新,控制第一設備不同時間段可向第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù),實現(xiàn)第一設備向第二設備提供業(yè)務時的流量控制。

另外,在第一設備與第二設備之間初始建立QP通道時,第二設備的接收隊列中可用于接收數(shù)據(jù)包的接收緩沖格的個數(shù)小于或等于所述第一閾值,第二設備觸發(fā)數(shù)據(jù)導入指令;步驟S401接收到從第二設備向第一設備發(fā)送的數(shù)據(jù)導入指令,通過該數(shù)據(jù)導入指令重置第一設備的內存的預設地址中存儲的信用數(shù)據(jù)。

另外,第一設備與第二設備之間建立的QP通道中斷后再次啟用,如果第二設備的接收隊列中可用于接收數(shù)據(jù)包的接收緩沖格的個數(shù)小于或等于所述第一閾值,第二設備觸發(fā)數(shù)據(jù)導入指令;步驟S401接收到從第二設備向第一設備發(fā)送的數(shù)據(jù)導入指令,通過該數(shù)據(jù)導入指令更新第一設備的內存的預設地址中存儲的信用數(shù)據(jù)。

可選地,步驟S401做一具體可選細化,參見圖5,所述接收由第二設備向第一設備發(fā)送的數(shù)據(jù)導入指令,向內存中所述數(shù)據(jù)導入指令指向的預設地址寫入信用數(shù)據(jù),具體包括步驟S4011和步驟S4012。

步驟S4011,所述第一設備的MRC接收從所述第二設備的MRC發(fā)送的所述數(shù)據(jù)導入指令,轉發(fā)所述數(shù)據(jù)導入指令至所述第一設備的內存控制器MC;

步驟S4012,所述第一設備的MC根據(jù)所述數(shù)據(jù)導入指令向所述預設地址寫入所述信用數(shù)據(jù)。

可選地,所述數(shù)據(jù)導入指令包括:所述第一設備的標識、與所述預設地址對應的物理地址。

本發(fā)明一實施例,提供一種第一設備600,圖6示出了依據(jù)本實施例提供的該第一設備600的邏輯結構示意圖,但為了便于描述,圖6僅示出了與本發(fā)明實施例相關的部分。

所述第一設備600包括:

指令接收模塊601,用于接收由第二設備向第一設備發(fā)送的數(shù)據(jù)導 入指令,其中,所述數(shù)據(jù)導入指令載有信用數(shù)據(jù),所述數(shù)據(jù)導入指令屬于遠程內存訪問指令;

指令響應模塊602,用于向內存中所述數(shù)據(jù)導入指令指向的預設地址寫入所述信用數(shù)據(jù);

消息數(shù)據(jù)包限制模塊603,用于根據(jù)所述預設地址記錄的所述信用數(shù)據(jù)確定向所述第二設備發(fā)送的消息數(shù)據(jù)包的個數(shù)上限。

可選地,所述指令接收模塊601為第一設備的內存資源控制器MRC,用于接收從第二設備的MRC發(fā)送的數(shù)據(jù)導入指令,轉發(fā)所述數(shù)據(jù)導入指令至所述第一設備的內存控制器MC;

所述指令響應模塊602為所述第一設備的MC,用于根據(jù)所述數(shù)據(jù)導入指令向所述預設地址寫入所述信用數(shù)據(jù)。

可選地,所述數(shù)據(jù)導入指令包括:所述第一設備的標識、與所述預設地址對應的物理地址。

本發(fā)明一實施例,提供一種系統(tǒng)100,所述系統(tǒng)100包括第一設備101和第二設備102,所述第一設備101和所述第二設備102通信連接;

所述第二設備102,用于從接收隊列獲取第一消息數(shù)據(jù)包,所述接收隊列中存儲由所述第一設備101向所述第二設備102發(fā)送的所述消息數(shù)據(jù)包;其中,所述第一消息數(shù)據(jù)包為已存儲在該接收隊列中的、業(yè)務的應用正在從該接收隊列取走的數(shù)據(jù)包;

所述第二設備102,用于在所述接收隊列中刪除已獲取的所述第一消息數(shù)據(jù)包,若所述接收隊列中存儲的消息數(shù)據(jù)包的個數(shù)小于或等于所述第一閾值,向所述第一設備101發(fā)送載有信用數(shù)據(jù)的數(shù)據(jù)導入指令,所述信用數(shù)據(jù)為所述接收隊列期望接收的消息數(shù)據(jù)包的個數(shù),所述數(shù)據(jù)導入指令屬于遠程內存訪問指令;

所述第一設備101,用于根據(jù)所述數(shù)據(jù)導入指令將所述信用數(shù)據(jù)寫入其內存中的預設地址,根據(jù)所述預設地址記錄的所述信用數(shù)據(jù)確定向所述第二設備102發(fā)送的消息數(shù)據(jù)包的個數(shù)上限。

可選地,所述第一設備101,用于根據(jù)所述數(shù)據(jù)導入指令將所述信 用數(shù)據(jù)寫入其內存中的預設地址,具體為:

所述第一設備101,用于由所述第一設備101的內存資源控制器1011接收從所述第二設備的內存資源控制器1021發(fā)送的所述數(shù)據(jù)導入指令,轉發(fā)所述數(shù)據(jù)導入指令至所述第一設備的內存控制器1022,由所述第一設備的內存控制器1022根據(jù)所述數(shù)據(jù)導入指令向所述預設地址寫入所述信用數(shù)據(jù)。

可選地,所述數(shù)據(jù)導入指令包括:所述第一設備的標識、與所述預設地址對應的物理地址。

在本申請所提供的幾個實施例中,應該理解到,所揭露的系統(tǒng),設備和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的設備實施例僅僅是示意性的,例如,所述模塊和單元的劃分,僅僅為一種邏輯功能劃分,實現(xiàn)時可以有另外的劃分方式,例如多個模塊或單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,設備或模塊的間接耦合或通信連接,可以是電性,機械或其它的形式。

所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊的部件可以是或者也可以不是物理模塊,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡模塊上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。

另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一個處理模塊中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能模塊的形式實現(xiàn)。

上述以軟件功能模塊的形式實現(xiàn)集成的模塊,可以存儲在一個計算機可讀取存儲介質中。上述軟件功能模塊存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質包括:移動硬盤、只讀存儲器(英文:Read-Only Memory,簡稱 ROM)、隨機存取存儲器(英文:Random Access Memory,簡稱RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質。

最后應說明的是:以上實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的保護范圍。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
沭阳县| 云和县| 鸡泽县| 赤城县| 靖西县| 藁城市| 皋兰县| 廉江市| 南和县| 凯里市| 大丰市| 铜川市| 淳化县| 昭苏县| 清涧县| 京山县| 瓦房店市| 安康市| 西林县| 黎川县| 唐山市| 盐边县| 新建县| 西城区| 集贤县| 黎川县| 高尔夫| 灵川县| 龙泉市| 瓦房店市| 南郑县| 西林县| 容城县| 孙吴县| 南雄市| 西充县| 潜山县| 盐源县| 二手房| 定兴县| 新田县|