專利名稱:一種級(jí)聯(lián)多核cpu間vcpu均衡分擔(dān)控制方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種級(jí)聯(lián)多核CPU間VCPU均衡分擔(dān)控制方法及其裝置。
背景技術(shù):
路由器設(shè)備上的核心業(yè)務(wù)單元,有些是通過(guò)特定的硬件處理芯片實(shí)現(xiàn)的,而有些則是通過(guò)CPU實(shí)現(xiàn)的。CPU對(duì)業(yè)務(wù)處理的速度遠(yuǎn)遠(yuǎn)低于專業(yè)的硬件處理芯片的處理速度。多核CPU,是指在一個(gè)CPU里集成了多個(gè)處理單元。這些處理單元,通常被稱為 VCPU(Virtual CPU,虛擬CPU),可以同時(shí)獨(dú)立運(yùn)行,互不干擾,具有類似于多個(gè)CPU同時(shí)運(yùn)行的能力。正是由于多核CPU具有很多這樣的VCPU,所以其處理能力遠(yuǎn)遠(yuǎn)比傳統(tǒng)的單核CPU 強(qiáng)大。由于多核CPU成本遠(yuǎn)遠(yuǎn)低于專業(yè)的硬件處理芯片,同時(shí)具有比傳統(tǒng)的單核CPU更加強(qiáng)大的處理能力,所以某些路由器的業(yè)務(wù)通過(guò)多核CPU實(shí)現(xiàn)。通過(guò)多核CPU實(shí)現(xiàn)某些業(yè)務(wù)的路由器,區(qū)別于以前單核CPU實(shí)現(xiàn)的一個(gè)重大區(qū)別就是在業(yè)務(wù)過(guò)程中,需要將不同的報(bào)文分擔(dān)到多核CPU的各個(gè)VCPU中去實(shí)現(xiàn)。并且,為了防止部分VCPU處理不過(guò)來(lái),而部分VCPU空轉(zhuǎn)的情況出現(xiàn),這種分擔(dān)要盡可能均衡?,F(xiàn)在常用的VCPU分擔(dān)算法是逐流的,即不同的流量被分擔(dān)到不同的VCPU上處理。流量分流一般是通過(guò)報(bào)文IP頭中的源/目的IP地址、協(xié)議類型、源/目的Transport、 MPLS (Multiprotocol Label Switching,多協(xié)議標(biāo)簽交換)標(biāo)簽(MPLS Label)等字段進(jìn)行計(jì)算。其流量分擔(dān)過(guò)程如圖1所示,其中,N條不同的流量被分擔(dān)到不同的VCPU進(jìn)行業(yè)務(wù)處理。不同型號(hào)的多核CPU的流量分擔(dān)算法存在差異,VCPU的處理性能(通常由VCPU處理報(bào)文的速率表征VCPU的處理性能)通常也會(huì)存在差異,在多個(gè)多核CPU級(jí)聯(lián)使用的情況下,不同型號(hào)的多核CPU間會(huì)存在某些不可避免的業(yè)務(wù)處理?yè)砣?,?dǎo)致整體處理性能降低, 這顯然是不合理的。
發(fā)明內(nèi)容
本發(fā)明提供了一種級(jí)聯(lián)多核CPU間VCPU均衡分擔(dān)控制方法及其裝置,用以解決現(xiàn)有技術(shù)中多核CPU級(jí)聯(lián)后,整體性能低的問(wèn)題。本發(fā)明提供的級(jí)聯(lián)多核CPU間VCPU均衡分擔(dān)控制方法,該方法包括根據(jù)級(jí)聯(lián)的各多核CPU中VCPU報(bào)文處理速率,確定各多核CPU中用于參與業(yè)務(wù)處理的VCPU數(shù)量,其中,前級(jí)與后級(jí)多核CPU中參與業(yè)務(wù)處理的VCPU數(shù)量與兩者的VCPU報(bào)文處理速率呈反比;當(dāng)前級(jí)多核CPU接收到報(bào)文后,根據(jù)報(bào)文特征值在前級(jí)多核CPU用于參與業(yè)務(wù)處理的VCPU中選取VCPU進(jìn)行報(bào)文處理,在后級(jí)多核CPU用于參與業(yè)務(wù)處理的VCPU中選取 VCPU,并將所選取的后級(jí)VCPU的指示信息與前級(jí)VCPU處理后的報(bào)文輸出給后級(jí)多核CPU ; 其中,該前級(jí)VCPU本次所選取出的后級(jí)VCPU與該前級(jí)VCPU前次選取的后級(jí)VCPU不同;
后級(jí)多核CPU根據(jù)所述VCPU的指示信息,選取對(duì)應(yīng)的VCPU對(duì)前級(jí)多核CPU輸出的報(bào)文進(jìn)行處理。本發(fā)明提供的多核CPU,應(yīng)用于級(jí)聯(lián)多核CPU間VCPU均衡分擔(dān)控制過(guò)程,包括 VCPU,所述多核CPU和與該多核CPU級(jí)聯(lián)的其它多核CPU中用于參與業(yè)務(wù)處理的VCPU數(shù)量, 與兩者的VCPU報(bào)文處理速率呈反比;該多核CPU還包括第一接收模塊、第二接收模塊、第一均衡模塊、第二均衡模塊和發(fā)送模塊,其中第一接收模塊,用于在本多核CPU作為前級(jí)多核CPU時(shí)接收?qǐng)?bào)文;第一均衡模塊,用于在所述第一接收模塊接收到報(bào)文后,根據(jù)報(bào)文特征值在本多核CPU用于參與業(yè)務(wù)處理的VCPU中選取VCPU進(jìn)行報(bào)文處理;所述第一均衡模塊所選取的VCPU,用于進(jìn)行報(bào)文處理,以及在后級(jí)多核CPU用于參與業(yè)務(wù)處理的VCPU中選取VCPU ;其中,該VCPU本次所選取出的后級(jí)VCPU與該VCPU前次選取的后級(jí)VCPU不同;發(fā)送模塊,用于將所述第一均衡模塊所選取的VCPU處理后的報(bào)文和選取出的 VCPU的指示信息發(fā)送給后級(jí)多核CPU ;第二接收模塊,用于在本多核CPU作為后級(jí)多核CPU時(shí)接收前級(jí)多核CPU輸出的報(bào)文和VCPU的指示信息;第二均衡模塊,用于根據(jù)所述第二接收模塊接收到的所述VCPU的指示信息,選取對(duì)應(yīng)的VCPU對(duì)前級(jí)多核CPU輸出的報(bào)文進(jìn)行處理。本發(fā)明的有益技術(shù)效果包括由于一方面根據(jù)前級(jí)多核CPU和后級(jí)多核CPU的VCPU處理性能確定各自參與業(yè)務(wù)處理的VCPU的數(shù)量;另一方面,在前級(jí)多核CPU根據(jù)報(bào)文特征在前級(jí)多核CPU中的各參與業(yè)務(wù)處理的VCPU中進(jìn)行負(fù)載均衡,在后級(jí)多核CPU中根據(jù)前級(jí)多核CPU所指示的后級(jí) VCPU,在參與業(yè)務(wù)處理的各VCPU中進(jìn)行負(fù)載均衡,從而實(shí)現(xiàn)了根據(jù)前后級(jí)多核CPU的VCPU 處理性能進(jìn)行業(yè)務(wù)處理和負(fù)載均衡,且避免了因不同型號(hào)的多核CPU采用不同的分擔(dān)算法導(dǎo)致的業(yè)務(wù)處理?yè)砣麊?wèn)題,與現(xiàn)有技術(shù)相比,提高了級(jí)聯(lián)多核CPU的整體性能。
圖1為現(xiàn)有技術(shù)中N條不同的流量被分擔(dān)到不同的VCPU進(jìn)行業(yè)務(wù)處理的示意圖;圖2本發(fā)明實(shí)施例中的級(jí)聯(lián)多核CPU間VCPU均衡分擔(dān)控制流程示意圖;圖3為本發(fā)明實(shí)施例中兩個(gè)VCPU處理性能為1 1時(shí)的多核CPU建立的1 1 的VCPU分擔(dān)對(duì)應(yīng)關(guān)系示意圖;圖4為本發(fā)明實(shí)施例中兩個(gè)VCPU處理性能為1 2時(shí)的多核CPU建立的2 1 的VCPU分擔(dān)對(duì)應(yīng)關(guān)系示意圖;圖5為本發(fā)明實(shí)施例提供的多核CPU的結(jié)構(gòu)示意圖;圖6為圖5中的VCPU的結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例可在不同型號(hào)的多核CPU級(jí)聯(lián)后,根據(jù)相鄰VCPU的處理性能不同,控制本多核CPU上的某VCPU的流量發(fā)送到對(duì)端某些VCPU上進(jìn)行處理,從而實(shí)現(xiàn)兩個(gè)多核 CPU級(jí)聯(lián)后的整體處理性能的優(yōu)化。下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)描述。參見圖2,為本發(fā)明實(shí)施例提供的級(jí)聯(lián)多核CPU間VCPU均衡分擔(dān)控制流程示意圖。該流程描述的是報(bào)文從CPUl流入到從CPU2流出的過(guò)程,在該過(guò)程中,CPUl為前級(jí)多核CPU,CPU2為后級(jí)多核CPU,其反向過(guò)程(即CPU2為前級(jí)多核CPU,CPUl為后級(jí)多核CPU 的報(bào)文處理過(guò)程)與此類似。不同型號(hào)的CPUl與CPU2級(jí)聯(lián)后,如果CPUl與CPU2的VCPU的處理性能(即VCPU 處理報(bào)文的速率)比是比較簡(jiǎn)單的整數(shù)比M N時(shí),CPUl的N個(gè)VCPU的處理性能與CPU2 的M個(gè)VCPU的處理性能一樣。較優(yōu)的VCPU分擔(dān)方法是按照前后級(jí)VCPU的處理性能確定 CPUl和CPU2上參與業(yè)務(wù)處理的VCPU的數(shù)量,該數(shù)量的比值與多核CPU性能的比值呈反比, CPUl采用基于流的負(fù)載分擔(dān)算法其上進(jìn)行業(yè)務(wù)處理的VCPU中選擇VCPU處理輸入的報(bào)文, CPUl輸出的相同流的報(bào)文則分散到CPU2上參與業(yè)務(wù)處理的VCPU上進(jìn)行處理。為實(shí)現(xiàn)上述目標(biāo),本發(fā)明實(shí)施例中,首先,根據(jù)CPUl和CPU2的VCPU的處理性能, 確定CPUl和CPU2中各自進(jìn)行業(yè)務(wù)處理的VCPU數(shù)量及VCPU標(biāo)識(shí),其中CPUl與CPU2參與業(yè)務(wù)處理的VCPU數(shù)量與兩者的處理性能成反比。具體的,如果CPUl和CPU2的處理性能的最簡(jiǎn)整數(shù)比為M N,則確定CPUl中進(jìn)行業(yè)務(wù)處理的VCPU的數(shù)量為Pl個(gè),CPU2中進(jìn)行業(yè)務(wù)處理的VCPU的數(shù)量為P2個(gè),Pl P2 = N M,然后根據(jù)確定出的VCPU數(shù)量,指定CPUl 中Pl個(gè)VCPU用于處理報(bào)文,指定CPU2中P2個(gè)VCPU處理報(bào)文,至于具體指定哪些VCPU,或者說(shuō)按照什么策略來(lái)選擇VCPU,應(yīng)該屬于具體實(shí)現(xiàn),只要保證Pl P2 = N M即可,比如可以隨機(jī)選,可以按照VCPU的編號(hào)順序選。例如,如果CPUl和CPU2中的VCPU的數(shù)量均為 10,其性能比為1 2,則指定CPUl中的全部10個(gè)VCPU(即VCPUl 10)參與報(bào)文處理,指定VCPU2中的5個(gè)VCPU(如VCPUl 5)參與報(bào)文處理。在具體實(shí)施時(shí),可先分擔(dān)算法及輸入的流量大小確定CPUl中進(jìn)行業(yè)務(wù)處理的 VCPU數(shù)量,然后進(jìn)一步根據(jù)CPUl和CPU2的VCPU的性能比,確定CPU2中進(jìn)行業(yè)務(wù)處理的 VCPU數(shù)量。具體的,可預(yù)先根據(jù)實(shí)際流量特征(如流量源IP地址、目的IP地址等五元組信息)構(gòu)造各種特征的流量報(bào)文,然后輸入CPU1,CPUl將按照分擔(dān)算法根據(jù)報(bào)文的特征值決定將報(bào)文分配到哪個(gè)VCPU進(jìn)行處理,此時(shí)記錄各特征值的報(bào)文與VCPU的對(duì)應(yīng)關(guān)系,從而確定出CPUl上有多少個(gè)VCPU參與業(yè)務(wù)處理以及具體是哪些VCPU進(jìn)行業(yè)務(wù)處理,然后根據(jù) CPUl和CPU2的VCPU的處理性能,確CPU2中進(jìn)行業(yè)務(wù)處理的VCPU數(shù)量。在確定出各多核CPU參與業(yè)務(wù)處理的VCPU之后,可使用多核CPU中的寄存器指定參與業(yè)務(wù)處理的VCPU。在CPUl中的每個(gè)被確定為進(jìn)行業(yè)務(wù)處理的VCPU上還要記錄CPU2 上被確定為進(jìn)行業(yè)務(wù)處理的各VCPU的指示信息。當(dāng)CPUl接收到報(bào)文后,如圖2所示,該流程可包括步驟201,CPUl接收到報(bào)文后,根據(jù)負(fù)載分擔(dān)算法在本多核CPU中被指定為進(jìn)行業(yè)務(wù)處理的Pl個(gè)VCPU中選擇VCPU處理該報(bào)文。該步驟中,CPUl可采用基于報(bào)文特征值(如包括IP地址的五元組信息)的負(fù)載分擔(dān)算法以實(shí)現(xiàn)基于流的負(fù)載分擔(dān)。具體的,可根據(jù)負(fù)載分擔(dān)算法的需要,針對(duì)報(bào)文的類型獲取報(bào)文的某一個(gè)或多個(gè)字段作為分擔(dān)算法的輸入,通過(guò)分擔(dān)算法選出對(duì)應(yīng)的VCPU。比如,如果是MPLS報(bào)文則獲取MPLS Label等字段,如果是TCP/UDP報(bào)文需要獲取報(bào)文的源/目的IP地址等字段。步驟202,CPUl根據(jù)其上所記錄的CPU2上被確定為參與報(bào)文處理的P2個(gè)VCPU, 在該范圍內(nèi)選取后級(jí)VCPU以處理該前級(jí)VCPU所輸出的報(bào)文,并保證該前級(jí)VCPU本次所選取出的后級(jí)VCPU與該前級(jí)VCPU上次所選取的后級(jí)VCPU不同。步驟203,CPUl上的VCPU對(duì)報(bào)文進(jìn)行處理后,將處理完成的報(bào)文連同選擇出的后級(jí)VCPU的指示信息,輸出給CPU2。具體的,可將所選取出的后級(jí)VCPU的指示信息攜帶于報(bào)文頭中,如攜帶于報(bào)文頭中本發(fā)明實(shí)施例所擴(kuò)展的字段中;也可以采用其它方式輸出給CPU2,只要在CPUl和CPU2 之間約定好傳輸格式。步驟204,CPU2接收到CPUl輸出的報(bào)文后,根據(jù)對(duì)應(yīng)的VCPU的指示信息,使用對(duì)應(yīng)的VCPU處理該報(bào)文。具體的,CPU2可從報(bào)文頭中本發(fā)明實(shí)施例所擴(kuò)展的字段中獲取VCPU的指示信息, 并使用對(duì)應(yīng)的VCPU處理接收到的報(bào)文。進(jìn)一步的,在CPU2接收到CPUl輸出的報(bào)文并獲取其中攜帶的VCPU的指示信息后,將報(bào)文中攜帶的VCPU的指示信息刪除。在具體實(shí)施時(shí),為了保證前級(jí)VCPU所選取出的后級(jí)VCPU與該前級(jí)VCPU上一次處理報(bào)文時(shí)所選取的后級(jí)VCPU不同,可在CPUl中對(duì)應(yīng)于每個(gè)被確定為進(jìn)行業(yè)務(wù)處理的VCPU 設(shè)置1個(gè)數(shù)組和1個(gè)變量,該數(shù)組指示出CPU2上所有參與報(bào)文處理的VCPU的集合,該變量用于記錄對(duì)應(yīng)的前級(jí)VCPU當(dāng)前所選取的后級(jí)VCPU在該數(shù)組中的位置索引,或者該變量用于記錄對(duì)應(yīng)的前級(jí)VCPU下一次應(yīng)選取的后級(jí)VCPU在該數(shù)組中的位置索引。前級(jí)VCPU選取后級(jí)VCPU時(shí),采用輪詢的方式從前級(jí)VCPU對(duì)應(yīng)的數(shù)組中選取1 個(gè)元素,即,前級(jí)VCPU根據(jù)對(duì)應(yīng)變量的值從該數(shù)組中的對(duì)應(yīng)位置的下一個(gè)位置選取后級(jí) VCPU,每次選取出一個(gè)VCPU后將對(duì)應(yīng)變量的值更新為該次選取的后級(jí)VCPU在該數(shù)組中的位置;或者,前級(jí)VCPU根據(jù)對(duì)應(yīng)變量的值從該數(shù)組中的對(duì)應(yīng)位置選取后級(jí)VCPU,每次選取出一個(gè)VCPU后將該變量的值更新為該數(shù)組中下一個(gè)VCPU的位置。進(jìn)一步的,當(dāng)?shù)竭_(dá)數(shù)組中的最后一個(gè)元素時(shí),選取該數(shù)組的第一個(gè)元素所指示的后級(jí)VCPU。例如,以前述CPUl中進(jìn)行業(yè)務(wù)處理的VCPU的數(shù)量為Pl個(gè),CPU2中進(jìn)行業(yè)務(wù)處理的VCPU的數(shù)量為P2個(gè)為例,CPUl中對(duì)應(yīng)于Pl個(gè)VCPU中的每一個(gè)VCPU設(shè)置數(shù)組a [P2]和變量b :數(shù)組 a[P2] {cpu2. vcpu_l. tag, cpu2. vcpu_2. tag, . . . , cpu2. vcpu_P2-l. tag, cpu2. vcpu_P2. tag}同時(shí),在CPU2上設(shè)置如下硬件映射表{cpu2. vcpu_l. tag- > vcpul}{cpu2. vcpu_2. tag - > vcpu2}......{cpu2. vcpu_P2-l. tag- > vcpu P2-1}{cpu2. vcpu_P2. tag- > vcpu P2}數(shù)組a[P2]的內(nèi)容依次為CPU2的每個(gè)參與業(yè)務(wù)處理的VCPU對(duì)應(yīng)的VCPU的指示信息。變量b的初始值為數(shù)組a[P2]中的任一元素的位置索引,優(yōu)選為a[P2]中的第一個(gè)元素的位置索引。以CPUl上的VCPUl為例,當(dāng)前變量b = cpu2. vcpu_l. tag,當(dāng)CPUl接收到報(bào)文并通過(guò)負(fù)載分擔(dān)選項(xiàng)VCPUl進(jìn)行處理后,該VCPUl將處理后的報(bào)文以及當(dāng)前變量b的值 cpu2. vcpu_l. tag發(fā)送給CPU2,并將變量b的值更新為數(shù)組a[P2]中的下一個(gè)位置的元素值cpu2. vcpu_2. tag ;CPU2接收到CPUl輸出的該報(bào)文后,根據(jù)其上設(shè)置的上述硬件映射表以及變量b的值,確定對(duì)應(yīng)的vcpul對(duì)該報(bào)文進(jìn)行處理。此后,當(dāng)CPUl再次匹配到VCPUl 進(jìn)行報(bào)文處理時(shí),將當(dāng)前變量b的值cpu2. vcpu_2. tag發(fā)送給CPU2作為選取VCPU的依據(jù), 并將變量b的值更新為cpu2. vcpu_3. tag。以此類推,當(dāng)變量b的值已經(jīng)是數(shù)組a[P2]的最后一個(gè)元素時(shí),在更新變量b的值時(shí),將其更新為數(shù)組a[P2]的第一個(gè)元素值??梢钥闯觯珻PUl上每個(gè)參與業(yè)務(wù)處理的VCPU在處理完報(bào)文后,根據(jù)對(duì)應(yīng)的數(shù)組 a[P2]和變量b,確定攜帶到后級(jí)CPU的VCPU的指示信息,并且為了完成報(bào)文在后級(jí)CPU中公平輪轉(zhuǎn)的使用各個(gè)VCPU,該變量b的值還需要在每處理一個(gè)報(bào)文后自動(dòng)更新到下一個(gè)數(shù)組元素對(duì)應(yīng)的下標(biāo),數(shù)組元素依次按照循環(huán)方式遍歷。另一種更新變量b的值的方式是在CPUl中的VCPU選取后級(jí)VCPU時(shí),根據(jù)變量 b當(dāng)前的值選取對(duì)應(yīng)的后級(jí)VCPU,然后將當(dāng)前的變量b的值加1并對(duì)P2求余,從而保證變量b的取值與更新前的取值相比在變化而又小于P2,即保證每次選取的后級(jí)VCPU都不相同,但均在數(shù)組a[P2]的范圍之內(nèi)。需要說(shuō)明的是,以上通過(guò)數(shù)組方式選取VCPU僅為一種具體的實(shí)現(xiàn)方式,本領(lǐng)域技術(shù)人員應(yīng)該能夠理解,任何能夠保證前級(jí)VCPU本次選取的后級(jí)VCPU與該前級(jí)VCPU上一次選取的后級(jí)VCPU不同,且在后級(jí)多核CPU進(jìn)行業(yè)務(wù)處理的VCPU范圍內(nèi)的實(shí)現(xiàn)方式,均在本發(fā)明的保護(hù)范圍之內(nèi)。通過(guò)以上流程可以看出,對(duì)于相同特征的數(shù)據(jù)流(即根據(jù)五元組計(jì)算出的特征值相同),在前級(jí)CPU上會(huì)由相同的VCPU處理,但是該數(shù)據(jù)流的一系列報(bào)文會(huì)由后級(jí)CPU上的各個(gè)參與報(bào)文處理的VCPU依次輪流處理,而不會(huì)集中在后級(jí)CPU上的某個(gè)特定VCPU處理; 同時(shí)由于預(yù)先根據(jù)前級(jí)多核CPU和后級(jí)多核CPU的VCPU處理性能確定各自多核CPU參與業(yè)務(wù)處理的VCPU的數(shù)量,從而實(shí)現(xiàn)了根據(jù)前后級(jí)多核CPU的處理性能進(jìn)行業(yè)務(wù)處理和負(fù)載均衡,與現(xiàn)有技術(shù)相比,提高了級(jí)聯(lián)多核CPU的整體性能。下面結(jié)合圖3和圖4,說(shuō)明根據(jù)兩個(gè)多核CPU各自的處理性能提高兩個(gè)多核CPU級(jí)聯(lián)后的整體處理性能的原理。如圖3所示,在多核CPUl與多核CPU2的VCPU處理性能相同的情況下,它們建立 1 1的VCPU數(shù)量映射關(guān)系,S卩,CPUl和CPU2各自參與報(bào)文處理的VCPU數(shù)量為1 1。這樣,根據(jù)本發(fā)明實(shí)施例的以上流程,進(jìn)入CPUl的不同流被均勻分擔(dān)到某η個(gè)VCPU上處理, 一個(gè)前級(jí)VCPU將對(duì)應(yīng)流的報(bào)文分配到后級(jí)的η個(gè)VCPU上進(jìn)行處理(圖中僅示出了多核 CPUl中的VCPUl將Mreamel的報(bào)文分配到多核CPU2的η個(gè)VCPU的示意圖)。如圖4所示,在多核CPUl與多核CPU2的VCPU處理性能是1 2的情況下,它們建立2 1的VCPU數(shù)量映射關(guān)系,S卩,CPUl和CPU2各自參與報(bào)文處理的VCPU數(shù)量為2 1。 這樣,根據(jù)本發(fā)明實(shí)施例的以上流程,進(jìn)入CPUl的不同流被均勻分擔(dān)到某2η個(gè)VCPU上處理,一個(gè)前級(jí)VCPU將對(duì)應(yīng)流的報(bào)文分配到后級(jí)的η個(gè)VCPU上進(jìn)行處理(圖中僅示出了多核CPUl中的VCPUl將Mreamel的報(bào)文分配到多核CPU2的2η個(gè)VCPU的示意圖,其中多核CPU2中虛線表示的VCPU表示未被選取為參與業(yè)務(wù)處理的VCPU)。當(dāng)然,根據(jù)級(jí)聯(lián)的兩個(gè)多核CPU各自VCPU的性能,只要確實(shí)有條件,還可以建立 2 3、3 4等等的VCPU數(shù)量映射關(guān)系。通過(guò)本發(fā)明的實(shí)施例,將不同型號(hào)的多核CPU級(jí)聯(lián)時(shí),如果根據(jù)多核CPU的性能為級(jí)聯(lián)的兩個(gè)多核CPU建立各自參與報(bào)文處理的VCPU的映射關(guān)系,只要流量能夠在前一級(jí)多核CPU上很好地分擔(dān)(一般的多核CPU都能做到),即使多核CPU分擔(dān)算法不同,也能夠避免后一級(jí)多核CPU成為前一級(jí)多核CPU的瓶頸,或者后一級(jí)多核CPU的某些VCPU空轉(zhuǎn)等待的情況發(fā)生,提高了各VCPU處理能力的利用率,從而也提高了多核CPU級(jí)聯(lián)時(shí)整體的處理性能。基于相同的技術(shù)構(gòu)思,本發(fā)明實(shí)施例還提供了一種多核CPU,應(yīng)用于上述實(shí)施例描述的級(jí)聯(lián)多核CPU間VCPU均衡分擔(dān)控制過(guò)程。參見圖5,為本發(fā)明實(shí)施例提供的多核CPU的結(jié)構(gòu)示意圖,該多核CPU包括VCPU 501,該多核CPU中用于參與業(yè)務(wù)處理的VCPU數(shù)量和與該多核CPU級(jí)聯(lián)的其它多核CPU中用于參與業(yè)務(wù)處理的VCPU數(shù)量,與兩者的VCPU報(bào)文處理速率呈反比。該多核CPU還可包括第一接收模塊502、第二接收模塊503、第一均衡模塊504、第二均衡模塊505和發(fā)送模塊506,其中第一接收模塊502,用于在本多核CPU作為前級(jí)多核CPU時(shí)接收輸入到該該前級(jí)多核CPU的報(bào)文;第一均衡模塊503,用于在第一接收模塊502接收到報(bào)文后,根據(jù)報(bào)文特征值在本多核CPU用于參與業(yè)務(wù)處理的VCPU 501中選取VCPU 501進(jìn)行報(bào)文處理;第一均衡模塊503所選取的VCPU 501,用于進(jìn)行報(bào)文處理,以及在后級(jí)多核CPU 用于參與業(yè)務(wù)處理的VCPU中選取VCPU ;其中,該VCPU 501本次所選取出的后級(jí)VCPU與該 VCPU 501前次選取的后級(jí)VCPU不同;發(fā)送模塊504,與本多核CPU中的每一個(gè)用于參與業(yè)務(wù)處理的VCPU連接,用于將第一均衡模塊503所選取的VCPU 501處理后的報(bào)文和選取出的VCPU的指示信息發(fā)送給后級(jí)多核CPU ;第二接收模塊505,用于在本多核CPU作為后級(jí)多核CPU時(shí)接收前級(jí)多核CPU輸出的報(bào)文和VCPU的指示信息;第二均衡模塊506,用于根據(jù)第二接收模塊505接收到的所述VCPU的指示信息,選取對(duì)應(yīng)的VCPU對(duì)前級(jí)多核CPU輸出的報(bào)文進(jìn)行處理。如圖6所示,上述多核CPU的每個(gè)用于參與業(yè)務(wù)處理的VCPU 501可包括存儲(chǔ)單元601,用于存儲(chǔ)一數(shù)組和變量,所述數(shù)組中的各元素分別對(duì)應(yīng)于后級(jí)多核 CPU用于參與業(yè)務(wù)處理的各VCPU,初始時(shí),所述變量的值為該數(shù)組中任一元素的所在的位置索引;選取單元602,用于將所述變量所對(duì)應(yīng)的VCPU選取為處理本VCPU輸出報(bào)文的后級(jí) VCPU ;更新單元603,用于在選取單元602選取出后級(jí)VCPU之后,將所述變量值更新為對(duì)應(yīng)數(shù)組中的下一個(gè)元素的位置索引,或者,將所述變量的值加1后與后級(jí)多核CPU中用于參與業(yè)務(wù)處理的VCPU數(shù)量進(jìn)行求余運(yùn)算。
具體的,發(fā)送模塊504可將本多核CPU中的VCPU所選取的后級(jí)VCPU的指示信息攜帶于本多核CPU處理后的報(bào)文的頭部中輸出給后級(jí)多核CPU ;相應(yīng)的,第二均衡模塊506 接收到前級(jí)CPU輸出的報(bào)文并獲取其中攜帶的VCPU的指示信息后,還將該報(bào)文的頭部中的 VCPU指示信息刪除。通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視本發(fā)明的保護(hù)范圍。
10
權(quán)利要求
1.一種級(jí)聯(lián)多核CPU間VCPU均衡分擔(dān)控制方法,其特征在于,該方法包括根據(jù)級(jí)聯(lián)的各多核CPU中VCPU報(bào)文處理速率,確定各多核CPU中用于參與業(yè)務(wù)處理的 VCPU數(shù)量,其中,前級(jí)與后級(jí)多核CPU中參與業(yè)務(wù)處理的VCPU數(shù)量與兩者的VCPU報(bào)文處理速率呈反比;當(dāng)前級(jí)多核CPU接收到報(bào)文后,根據(jù)報(bào)文特征值在前級(jí)多核CPU用于參與業(yè)務(wù)處理的 VCPU中選取VCPU進(jìn)行報(bào)文處理,在后級(jí)多核CPU用于參與業(yè)務(wù)處理的VCPU中選取VCPU, 并將所選取的后級(jí)VCPU的指示信息與前級(jí)VCPU處理后的報(bào)文輸出給后級(jí)多核CPU ;其中, 該前級(jí)VCPU本次所選取出的后級(jí)VCPU與該前級(jí)VCPU前次選取的后級(jí)VCPU不同;后級(jí)多核CPU根據(jù)所述VCPU的指示信息,選取對(duì)應(yīng)的VCPU對(duì)前級(jí)多核CPU輸出的報(bào)文進(jìn)行處理。
2.如權(quán)利要求1所述的方法,其特征在于,前級(jí)多核CPU中對(duì)應(yīng)于每個(gè)用于參與業(yè)務(wù)處理的VCPU設(shè)置有一數(shù)組和變量,所述數(shù)組中的各元素分別對(duì)應(yīng)于后級(jí)多核CPU用于參與業(yè)務(wù)處理的各VCPU,初始時(shí),所述變量的值為該數(shù)組中任一元素的所在的位置索引;所述前級(jí)VCPU所選取出的后級(jí)VCPU為所述變量所對(duì)應(yīng)的后級(jí)VCPU,發(fā)送給后級(jí)多核 CPU的后級(jí)VCPU的指示信息為所述變量的值;所述前級(jí)VCPU在將所述變量所對(duì)應(yīng)的VCPU選取為處理所述前級(jí)VCPU輸出報(bào)文的后級(jí)VCPU之后,還包括將所述變量值更新為對(duì)應(yīng)數(shù)組中的下一個(gè)元素的位置索引,或者,將所述變量的值加1后與后級(jí)多核CPU中用于參與業(yè)務(wù)處理的VCPU數(shù)量進(jìn)行求余運(yùn)算。
3.如權(quán)利要求1所述的方法,其特征在于,所述將所選取的后級(jí)VCPU的指示信息與前級(jí)VCPU處理后的報(bào)文輸出給后級(jí)多核CPU,包括所述前級(jí)VCPU將所選取的后級(jí)VCPU的指示信息攜帶于前級(jí)VCPU處理后的報(bào)文的頭部中輸出給后級(jí)多核CPU ;后級(jí)多核CPU接收到前級(jí)CPU輸出的報(bào)文并獲取其中攜帶的VCPU的指示信息后,還包括將該報(bào)文的頭部中的VCPU指示信息刪除。
4.一種多核CPU,應(yīng)用于級(jí)聯(lián)多核CPU間VCPU均衡分擔(dān)控制過(guò)程,包括VCPU,其特征在于,所述多核CPU與該多核CPU級(jí)聯(lián)的其它多核CPU中用于參與業(yè)務(wù)處理的VCPU數(shù)量,與兩者的VCPU報(bào)文處理速率呈反比;該多核CPU還包括第一接收模塊、第二接收模塊、第一均衡模塊、第二均衡模塊和發(fā)送模塊,其中第一接收模塊,用于在本多核CPU作為前級(jí)多核CPU時(shí)接收?qǐng)?bào)文;第一均衡模塊,用于在所述第一接收模塊接收到報(bào)文后,根據(jù)報(bào)文特征值在本多核CPU 用于參與業(yè)務(wù)處理的VCPU中選取VCPU進(jìn)行報(bào)文處理;所述第一均衡模塊所選取的VCPU,用于進(jìn)行報(bào)文處理,以及在后級(jí)多核CPU用于參與業(yè)務(wù)處理的VCPU中選取VCPU ;其中,該VCPU本次所選取出的后級(jí)VCPU與該VCPU前次選取的后級(jí)VCPU不同;發(fā)送模塊,用于將所述第一均衡模塊所選取的VCPU處理后的報(bào)文和選取出的VCPU的指示信息發(fā)送給后級(jí)多核CPU ;第二接收模塊,用于在本多核CPU作為后級(jí)多核CPU時(shí)接收前級(jí)多核CPU輸出的報(bào)文和VCPU的指示信息;第二均衡模塊,用于根據(jù)所述第二接收模塊接收到的所述VCPU的指示信息,選取對(duì)應(yīng)的VCPU對(duì)前級(jí)多核CPU輸出的報(bào)文進(jìn)行處理。
5.如權(quán)利要求4所述的多核CPU,其特征在于,所述多核CPU的每個(gè)用于參與業(yè)務(wù)處理的VCPU中包括存儲(chǔ)單元,用于存儲(chǔ)一數(shù)組和變量,所述數(shù)組中的各元素分別對(duì)應(yīng)于后級(jí)多核CPU用于參與業(yè)務(wù)處理的各VCPU,初始時(shí),所述變量的值為該數(shù)組中任一元素的所在的位置索引;選取單元,用于將所述變量所對(duì)應(yīng)的VCPU選取為處理本VCPU輸出報(bào)文的后級(jí)VCPU ;更新單元,用于在所述選取單元選取出后級(jí)VCPU之后,將所述變量值更新為對(duì)應(yīng)數(shù)組中的下一個(gè)元素的位置索引,或者,將所述變量的值加1后與后級(jí)多核CPU中用于參與業(yè)務(wù)處理的VCPU數(shù)量進(jìn)行求余運(yùn)算。
6.如權(quán)利要求4所述的多核CPU,其特征在于,所述發(fā)送模塊具體用于,將本多核CPU 中的VCPU所選取的后級(jí)VCPU的指示信息攜帶于本多核CPU處理后的報(bào)文的頭部中輸出給后級(jí)多核CPU ;所述第二均衡模塊具體用于,接收到前級(jí)CPU輸出的報(bào)文并獲取其中攜帶的VCPU的指示信息后,還包括將該報(bào)文的頭部中的VCPU指示信息刪除。
全文摘要
本發(fā)明公開了一種級(jí)聯(lián)多核CPU間VCPU均衡分擔(dān)控制方法及其裝置。該方法包括根據(jù)級(jí)聯(lián)的各多核CPU中VCPU報(bào)文處理速率,確定各多核CPU中用于參與業(yè)務(wù)處理的VCPU數(shù)量,其中,前級(jí)與后級(jí)多核CPU中參與業(yè)務(wù)處理的VCPU數(shù)量與兩者的VCPU報(bào)文處理速率呈反比;當(dāng)前級(jí)多核CPU接收到報(bào)文后,根據(jù)報(bào)文特征值在前級(jí)多核CPU用于參與業(yè)務(wù)處理的VCPU中選取VCPU進(jìn)行報(bào)文處理,在后級(jí)多核CPU用于參與業(yè)務(wù)處理的VCPU中選取VCPU,并將所選取的后級(jí)VCPU的指示信息與前級(jí)VCPU處理后的報(bào)文輸出給后級(jí)多核CPU;其中,該前級(jí)VCPU本次所選取出的后級(jí)VCPU與該前級(jí)VCPU前次選取的后級(jí)VCPU不同;后級(jí)多核CPU根據(jù)所述VCPU的指示信息,選取對(duì)應(yīng)的VCPU對(duì)前級(jí)多核CPU輸出的報(bào)文進(jìn)行處理。本發(fā)明可提高多核CPU級(jí)聯(lián)后的整體性能。
文檔編號(hào)G06F15/163GK102364455SQ201110342050
公開日2012年2月29日 申請(qǐng)日期2011年10月31日 優(yōu)先權(quán)日2011年10月31日
發(fā)明者王東, 鄒勇 申請(qǐng)人:杭州華三通信技術(shù)有限公司