專利名稱:一種基于ring的多核CPU負載均衡方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及多核CPU (Central Processing Unit,中央處理單元),尤其涉及多核 CPU的網(wǎng)絡負載均衡。
背景技術:
當前網(wǎng)絡已經(jīng)非常普及,互聯(lián)網(wǎng)高速發(fā)展使得網(wǎng)絡訪問越來越頻繁,因此引起用 戶對網(wǎng)絡帶寬、網(wǎng)絡訪問速度的要求也越來越高。網(wǎng)絡設備中的網(wǎng)卡已經(jīng)隨著用戶對網(wǎng)絡 訪問速度的要求從十兆網(wǎng)卡、百兆網(wǎng)卡發(fā)展到千兆網(wǎng)卡。隨著現(xiàn)有網(wǎng)絡各個核心部分業(yè)務量的提高以及訪問量和數(shù)據(jù)流量的快速增長,對 數(shù)據(jù)處理能力和計算強度要求也大大增強,使得單一服務器設備無法承擔。在此情況下,如 果扔掉現(xiàn)有設備去做大量硬件升級,這將造成現(xiàn)有資源巨大浪費,而且如果再面臨下一次 業(yè)務量提升時,又將導致再一次硬件升級的高額成本投入,甚至性能再卓越的設備也不能 滿足當前業(yè)務量增長的需求。針對此情況而衍生出來的一種廉價有效透明的技術即為負載均衡,負載均衡是一 種擴展現(xiàn)有網(wǎng)絡設備和服務器帶寬、增加吞吐量、加強網(wǎng)絡數(shù)據(jù)處理能力、提高網(wǎng)絡的靈活 性和可用性的技術。在多核CPU系統(tǒng)中有多個網(wǎng)卡和多個CPU,通常情況下,一個網(wǎng)卡只對應一個CPU, 此時最小負載平衡單元是網(wǎng)卡,當網(wǎng)卡流量很大時與其對應的CPU將非常忙,因此很可能 導致網(wǎng)絡丟包,進而大大影響訪問網(wǎng)絡速度。
發(fā)明內(nèi)容
本發(fā)明提供了一種能夠提高CPU負載均衡的方法及系統(tǒng)。在第一方面,本發(fā)明提供了一種基于ring的多核CPU負載均衡方法,該方法首先 實時檢測該多核CPU中各CPU負載均衡情況并判定該多核CPU是否均衡;然后在該多核CPU 不均衡情況下,評估各ring負載情況;最后以ring為單位調(diào)整ring與CPU之間的綁定關系。在第二方面,本發(fā)明提供了一種基于ring的多核CPU負載均衡系統(tǒng),該系統(tǒng)包括 均衡模塊,用于實時檢測該多核CPU中各CPU負載均衡情況并判定該多核CPU是否均衡;在 該多核CPU不均衡情況下,評估各ring負載情況;并以ring為單位調(diào)整ring與CPU之間 的綁定關系。在本發(fā)明的一個實施例中,實時檢測多核CPU中各CPU負載均衡情況包括實時檢 測該多核CPU實際占用率、CPU運行進程數(shù)量、CPU處理數(shù)據(jù)包數(shù)量、CPU處理數(shù)據(jù)包大小、 CPU負載網(wǎng)卡ring的數(shù)量。在本發(fā)明的另一個實施例中,評估各ring負載情況包括實時檢測多核CPU中各 ring通過ring數(shù)據(jù)包數(shù)量、通過ring數(shù)據(jù)包長度、ring的連接數(shù)。本發(fā)明通過判定CPU負載是否均衡,檢測每個ring負載情況,以及調(diào)整ring與CPU綁定關系,解決了多核CPU負載均衡問題。本發(fā)明方法以ring為最小平衡單元來調(diào)整CPU負載度,網(wǎng)卡流量劃分更細,多核CPU負載更加均衡。
下面將參照附圖對本發(fā)明的具體實施方案進行更詳細的說明,在附圖中圖1是本發(fā)明一個實施例的基于ring的多核CPU負載均衡系統(tǒng)框圖;圖2是本發(fā)明一個實施例的基于ring的多核CPU負載均衡流程圖。
具體實施例方式圖1是本發(fā)明一個實施例的基于ring的多核CPU負載均衡系統(tǒng)框圖。該系統(tǒng)包 括第一 CPU111、第二 CPU112、第三CPU113、均衡模塊120和第一網(wǎng)卡130、第二網(wǎng)卡140。其 中,第一網(wǎng)卡130包含第一 ringl31、第二 ringl32、第三ringl33 ;第二網(wǎng)卡140包含第四 ringl41、第五ringl42、第六ringl43、第七ringl44。圖 1 中,第一 CPUlll 與第二ringl32、 第四ringl41綁定,第二 CPU112與第一 ringl31、第六ringl43綁定,第三CPU113與第三 ringl33、第五 ringl42、第七 ringl44 綁定。為了方便描述,圖1僅示意性地描述出CPU數(shù)量為三個,網(wǎng)卡數(shù)量為兩個,ring數(shù) 量為七個,以及CPU與ring之間綁定關系,實際上,CPU、網(wǎng)卡、ring的數(shù)量均不限,且CPU 與ring之間綁定關系也不固定。第一 CPU111、第二 CPU112、第三CPU113用于處理來自第一網(wǎng)卡130或第二網(wǎng)卡 140中某個或某些ring中的數(shù)據(jù)。第一網(wǎng)卡130、第二網(wǎng)卡140分別包含多個ring,且每個網(wǎng)卡ring數(shù)量均可以根 據(jù)系統(tǒng)需求進行配置,該第一網(wǎng)卡130、第二網(wǎng)卡140用于將其所在系統(tǒng)接入到網(wǎng)絡中,該 第一網(wǎng)卡130、第二網(wǎng)卡140中的每個ring用于接收來自網(wǎng)絡的數(shù)據(jù)包以及向網(wǎng)絡中發(fā)送 數(shù)據(jù)包。均衡模塊120實時檢測第一 CPUl 11、第二 CPUl 12、第三CPUl 13的均衡狀況,同時 衡量第一網(wǎng)卡130、第二網(wǎng)卡140中各ring負載情況,根據(jù)所述各CPU均衡狀況及所述各 ring負載情況,調(diào)整CPU與ring之間的綁定關系,進而使多核CPU負載均衡。下面詳細闡 述均衡模塊120如何判定CPU均衡情況、如何衡量ring負載情況,以及如何調(diào)整CPU與ring 之間的綁定關系。假定均衡模塊120檢測到當前時刻第一 CPUlll與第一網(wǎng)卡130中的第二 ringl32 及第二網(wǎng)卡140中的第四ringl41綁定;第二 CPU112與第一網(wǎng)卡130中的第一 ringl31、 第二網(wǎng)卡140中的第六ringl43綁定;第三CPU123與第一網(wǎng)卡中的第三ringl33、第二網(wǎng) 卡140中的第五ringl42、第二網(wǎng)卡140中的第七ringl44綁定,如圖1所示。均衡模塊120實時檢查各CPU (第一 CPUl 11、第二 CPUl 12、第三CPUl 13)實際占用 率、運行進程數(shù)量、處理數(shù)據(jù)包數(shù)量、處理數(shù)據(jù)包大小、負載網(wǎng)卡ring的數(shù)量等技術指標, 計算CPU(第一 CPU111、第二 CPU112、第三CPU113)各技術指標所占百分比,并分別賦予各 技術指標一定權(quán)重,進而得到每個CPU (CPU111、CPUl 12、CPUl 13)均衡值。具體地,假設均衡模塊120實時檢測到當前時刻第一 CPUlll實際占用率為10%, 第一 CPUlll運行進程數(shù)量占多核CPU總運行進程數(shù)量20%,第一 CPUlll處理數(shù)據(jù)包數(shù)量占多核CPU總處理數(shù)據(jù)包數(shù)量40%,第一 CPUl 11處理數(shù)據(jù)包大小占多核CPU總處理數(shù)據(jù)包 大小20%,第一 CPUlll負載網(wǎng)卡ring數(shù)量占多核CPU總負載網(wǎng)卡ring數(shù)量60%,以及負 載程度所占權(quán)重為a,運程進程數(shù)量所占權(quán)重為b,處理數(shù)據(jù)包數(shù)量所占權(quán)重為c,處理數(shù)據(jù) 包大小所占權(quán)重為d,負載網(wǎng)卡ring數(shù)量所占權(quán)重為e,則該第一 CPUlll均衡值xl為,
xl = a*10% +b*20% +c*40% +d*20% +e*60%(1)假設此時第二 CPUl 12實際占用率為40%,第二 CPUl 12運行進程數(shù)量占多核CPU 總運行進程數(shù)量30%,第二 CPUl 12處理數(shù)據(jù)包數(shù)量占多核CPU總處理數(shù)據(jù)包數(shù)量30%,第 二 CPUl 12處理數(shù)據(jù)包大小占多核CPU總處理數(shù)據(jù)包大小60%,第二 CPUl 12負載網(wǎng)卡ring 數(shù)量占多核CPU總負載網(wǎng)卡ring數(shù)量40%,則該第二 CPUl 12均衡值x2為,x2 = a*40% +b*30% +c*30% +d*60% +e*40%(2)則此時第三CPUl 13均衡值x3為,X3 = a*50% +b*50% +c*30% +d*20% +e*0%(3)取a = 100,b = 10,c = 10,d = 10,e = 20,則 xl = 30,x2 = 60,x3 = 60。均衡模塊120根據(jù)該第一 CPUlll均衡值xl、第二 CPUl 12均衡值x2、第三CPUl 13 均衡值x3,得到多核CPU均衡平均值,并根據(jù)該平均值分別得到該CPU111、CPU112、CPUl 13 均衡值與該平均值之間的差值yl、y2、y3,以及該差值yl、y2、y3分別占其相應均衡值xl、 x2、x3百分比111%、112%、113%。具體地,yl值為,yl = xl-(xl+x2+x3)/3(4)y2 值為,y2 = x2-(xl+x2+x3)/3(5)y3 值為,y3 = x3-(xl+x2+x3)/3(6)ul 值為,ul = (yl/xl) 100%(7)u2 值為,u2 = (y2/x2) 100%(8)u3 值為,u3 = (y3/x3) 100%(9)將公式(1)、(2)、(3)代入公式(4)、(5)、(6),得到y(tǒng)l = -20, y2 = 10,y3 = 10 ; 再將 yl、y2、y3 代入公式(7)、(8)、(9),得到 ul = -66. 6%, u2 = 16. 7%,u3 = 16. 7%。假設由均衡模塊120設定的CPU均衡閾值η為50,被均衡閾值m為40,由于第一 〇 肌12均衡值110^1 = 30)小于該均衡閾值η (η = 50),則第一 CPU112不需要做均衡,而 第二 0 譏12、第三0 譏13均衡值12、13(乂2 = 60,χ3 = 60)大于均衡閾值η (η = 50),則該 第二 CPU112、第三CPU113需要做均衡。同時由于該第一 CPU112均衡值xl (xl = 30)小于被均衡閾值m(m = 40),則該第 一 CPUl 12 可以被均衡,而第二 CPUl 12、第三 CPUl 13 均衡值 x2、x3 (x2 = 60,x3 = 60)大 于被均衡閾值m(m = 40),則該第二 CPU112、第三CPU113不可以被均衡。由此可知,該第 一 CPUlll可以被均衡,該第二 CPU112、第三CPU113需要均衡,因此將該第二 CPU112、第三 CPU113均衡到第一CPUlll中,具體均衡數(shù)量需要通過評估ring負載情況來完成,以下將詳細闡述如何評估ring負載情況。均衡模塊120實時檢測各ring通過該ring數(shù)據(jù)包數(shù)量、數(shù)據(jù)包長度、連接數(shù) (UDP、TCP連接數(shù))等技術指標,計算各ring每個技術指標在與其綁定CPU中所占百分比, 并分別賦予各技術指標一定權(quán)重,從而得到每個ring的負載。具體地,假設均衡模塊120實時監(jiān)測到當前時刻第一 ringl31通過其數(shù)據(jù)包數(shù)量占與其綁定CPU(即CPU112)通過數(shù)據(jù)包總數(shù)20%,第一 ringl31通過數(shù)據(jù)包包長占與其 綁定CPU(即CPU112)通過數(shù)據(jù)包總包長30%,第一 ringl31連接數(shù)占與其綁定CPU(即 CPUl 12)總連接數(shù)70 %,以及所述數(shù)據(jù)包數(shù)量權(quán)重為f,數(shù)據(jù)包包長權(quán)重為g,連接數(shù)權(quán)重為 h,則該第一 ringl31負載zl為,zl = f*20% +g*30% +h*70%(10)同理可得第二 ringl32負載z2、第三ringl33負載z3、第四ringl41負載z4、第五 ringl42負載z5、第六ringl43負載z6、第七ringl44負載z7。根據(jù)ring負載可得該ring負載在與其綁定CPU總ring負載中的百分比ν。圖1 中,第一 ringl31、第六ringl43與第二 CPUl 12綁定,假定該第一 ringl31負載zl值為10, 第六ringl43負載z6值為40,則該第一 ringl31負載在與其綁定CPUl 12總ring負載中的 百分比vl等于20% (通過10/(10+40)得到),則該第六1^叫143負載在與其綁定0 肌12 總ring負載中的百分比v6等于80%。同理可得,其他ring負載在與其綁定CPU總ring 負載中的百分比。在此假設與該第一 CPUlll綁定的第二 ringl32、第四ringl41負載在該第一 CPUlll總ring負載中的百分比v2、v4分別為40%、60%,并假設與第三CPUl 13綁定的第 三ringl33、第五ringl42、第七ringl44負載在該第三CPU113總ring負載中的百分比v3、 v5、v7分別為10%、20%、70%,如圖1中所標注。均衡模塊120分別用每個ring負載在與其綁定CPU總ring負載中的百分比v,減 去該CPU均衡值與多核CPU均衡平均值之間差值占該CPU均衡值百分比u,再求得V減u最 小差值絕對值,最后將該最小差值絕對值對應ring與CPU之間綁定關系調(diào)整為被均衡CPU 中。具體地,第一ringl31負載在CPUl 12總ring負載中的百分比vl等于20%,CPUl 12 均衡值與多核CPU均衡平均值之間差值占該CPU112均衡值百分比u2等于16. 7%,用該 vl減去該u2后的絕對值等于3. 3% ;而第六ringl43的v6 (80 % )與該第二 CPU112的 u2(16. 7% )之間差值絕對值等于63. 3%;由于3. 3%小于63. 3%,因此將第一 ringl31與 第二 CPU112之間的綁定關系調(diào)整為將該第一 ringl31綁定到第一 CPUlll上。同理將第三 CPUl 13與第五ringl42之間綁定關系調(diào)整為將該第五ringl43綁定到第一 CPUl 11上,如圖 1所示,其中虛線為調(diào)整后的綁定關系。圖2是本發(fā)明一個實施例的基于ring的多核CPU負載均衡流程圖。在步驟210,實時檢測多核CPU中各CPU均衡狀況并判定該多核CPU是否均衡。在本發(fā)明的一個實施例中,均衡模塊實時檢測各CPU實際占用率、運行進程數(shù)量、 處理數(shù)據(jù)包數(shù)量、處理數(shù)據(jù)包大小、負載網(wǎng)卡ring的數(shù)量等技術指標,計算CPU各技術指 標所占百分比,并分別賦予各技術指標一定權(quán)重,從而得到每個CPU均衡值;然后判定每個 CPU均衡值與系統(tǒng)設定的均衡閾值及被均衡閾值之間大小關系,當存在某個或某些CPU均衡值大于均衡閾值且存在某個或某些CPU均衡值小于被均衡閾值情況下,說明該多核CPU 不均衡。在判定到該多核CPU不均衡情況下,求得該多核CPU中所有CPU均衡值的平均值, 且均衡值大于均衡平均值的CPU為需要均衡的CPU,均衡值小于均衡平均值的CPU為需要被 均衡的CPU ;再求得各CPU均衡值與該多核CPU均衡平均值之間的差值,最后計算該差值與 該差值對應CPU均衡值的百分比。在步驟220,在多核CPU不均衡情況下,評估每個ring負載情況。 在本發(fā)明的一個實施例中,均衡模塊實時檢測各ring通過該ring數(shù)據(jù)包數(shù)量、數(shù) 據(jù)包長度、連接數(shù)等技術指標,計算ring各項技術指標在與其綁定CPU中所占百分比,并分 別賦予各技術指標一定權(quán)重,從而得到每個ring的負載,然后再求該ring負載在與其綁定 CPU總ring負載中的百分比,從而得到該多核CPU中每個ring負載情況。在步驟230,以ring為單位調(diào)整ring與CPU之間綁定關系,以便該多核CPU負載 均衡。在需要均衡的所有CPU中,分別用每個ring負載在與其綁定CPU總ring負載中 百分比,減去該CPU均衡值與均衡平均值之間差值占該CPU均衡值百分比,再求得該差值最 小絕對值,最后將該最小絕對值對應ring與CPU之間的綁定關系調(diào)整到被均衡CPU中。以上所述檢測CPU均衡情況、評估ring負載情況的算法有多種,需要說明的是,只 要是判定CPU不均衡后以ring為最小單位對CPU與ring之間綁定關系進行調(diào)整的方法及 相應設備就都在本發(fā)明保護范圍之內(nèi)。顯而易見,在不偏離本發(fā)明的真實精神和范圍的前提下,在此描述的本發(fā)明可以 有許多變化。因此,所有對于本領域技術人員來說顯而易見的改變,都應包括在本權(quán)利要求 書所涵蓋的范圍之內(nèi)。本發(fā)明所要求保護的范圍僅由所述的權(quán)利要求書進行限定。
權(quán)利要求
一種基于ring的多核CPU負載均衡方法,包括步驟a,實時檢測該多核CPU中各CPU負載均衡情況并判定該多核CPU是否均衡;步驟b,在該多核CPU不均衡情況下,評估各ring負載情況;步驟c,以ring為單位調(diào)整ring與CPU之間的綁定關系。
2.如權(quán)利要求1所述的一種基于ring的多核CPU負載均衡方法,其特征在于,所述步 驟a中實時檢測該多核CPU中各CPU負載均衡情況包括步驟d ;步驟d,實時檢測該多核CPU中各CPU技術指標。
3.如權(quán)利要求2所述的一種基于ring的多核CPU負載均衡方法,其特征在于,所述CPU 技術指標包括CPU實際占用率、CPU運行進程數(shù)量、CPU處理數(shù)據(jù)包數(shù)量、CPU處理數(shù)據(jù)包大 小、CPU負載網(wǎng)卡ring的數(shù)量中的一個或多個。
4.如權(quán)利要求2所述的一種基于ring的多核CPU負載均衡方法,其特征在于,在步驟 d之后包括步驟e ;步驟e,根據(jù)所述實時檢測到的多核CPU中各CPU技術指標,計算CPU各技術指標所占 百分比,并分別賦予各技術指標一定權(quán)重,從而得到每個CPU均衡值。
5.如權(quán)利要求4所述的一種基于ring的多核CPU負載均衡方法,其特征在于,所述步 驟a中判定該多核CPU是否均衡包括步驟f ;步驟f,判定每個CPU均衡值與系統(tǒng)設定的均衡閾值及被均衡閾值之間大小關系,當存 在CPU均衡值大于均衡閾值且存在CPU均衡值小于被均衡閾值時,判定該多核CPU不均衡。
6.如權(quán)利要求4所述的一種基于ring的多核CPU負載均衡方法,其特征在于,在步驟 e之后包括步驟g ;步驟g,求該多核CPU中所有CPU均衡值的平均值,然后再求各CPU均衡值與多核CPU 均衡平均值之間的差值,再計算該差值在與該差值對應CPU均衡值中的百分比。
7.如權(quán)利要求1所述的一種基于ring的多核CPU負載均衡方法,其特征在于,步驟b 中評估各ring負載情況包括步驟h ;步驟h,實時檢測該多核CPU中各ring技術指標。
8.如權(quán)利要求7所述的一種基于ring的多核CPU負載均衡方法,其特征在于,所述 ring技術指標包括通過ring數(shù)據(jù)包數(shù)量、通過ring數(shù)據(jù)包長度、ring的連接數(shù)。
9.如權(quán)利要求8所述的一種基于ring的多核CPU負載均衡方法,其特征在于,所述步驟;步驟i,計算ring各項技術指標在與其綁定CPU中所占百分比,并分別賦予各技術指標 一定權(quán)重,從而得到每個ring負載,然后再求該ring負載在與其綁定CPU總ring負載中 的百分比。
10.如權(quán)利要求1所述的一種基于ring的多核CPU負載均衡方法,其特征在于,所述步 驟c為根據(jù)所述CPU負載均衡情況及ring負載情況,以ring為單位調(diào)整ring與CPU之間 的綁定關系。
11.一種基于ring的多核CPU負載均衡系統(tǒng),包括均衡模塊;所述均衡模塊用于實時檢測該多核CPU中各CPU負載均衡情況并判定該多核CPU是否 均衡;在該多核CPU不均衡情況下,評估各ring負載情況;并以ring為單位調(diào)整ring與 CPU之間的綁定關系。
全文摘要
本發(fā)明涉及一種基于ring的多核CPU負載均衡方法及系統(tǒng)。該方法包括實時檢測該多核CPU中各CPU負載均衡情況并判定該多核CPU是否均衡;在該多核CPU不均衡情況下,評估各ring負載情況;以ring為單位調(diào)整ring與CPU之間的綁定關系。本發(fā)明方法以ring為最小單位調(diào)整CPU負載度,網(wǎng)卡流量劃分更細,進而使多核CPU負載更加均衡。本發(fā)明方法及系統(tǒng)能夠廣泛應用于多核CPU中。
文檔編號G06F9/50GK101840356SQ20091024357
公開日2010年9月22日 申請日期2009年12月25日 優(yōu)先權(quán)日2009年12月25日
發(fā)明者梁志勇, 王慶官, 米嘉, 陳鑫 申請人:北京網(wǎng)康科技有限公司