一种级联多核CPU间VCPU均衡分担控制方法及其装置转让专利

申请号 : CN201110342050.4

文献号 : CN102364455B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邹勇王东

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明公开了一种级联多核CPU间VCPU均衡分担控制方法及其装置。该方法包括:根据级联的各多核CPU中VCPU报文处理速率,确定各多核CPU中用于参与业务处理的VCPU数量,其中,前级与后级多核CPU中参与业务处理的VCPU数量与两者的VCPU报文处理速率呈反比;当前级多核CPU接收到报文后,根据报文特征值在前级多核CPU用于参与业务处理的VCPU中选取VCPU进行报文处理,在后级多核CPU用于参与业务处理的VCPU中选取VCPU,并将所选取的后级VCPU的指示信息与前级VCPU处理后的报文输出给后级多核CPU;其中,该前级VCPU本次所选取出的后级VCPU与该前级VCPU前次选取的后级VCPU不同;后级多核CPU根据所述VCPU的指示信息,选取对应的VCPU对前级多核CPU输出的报文进行处理。本发明可提高多核CPU级联后的整体性能。

权利要求 :

1.一种级联多核CPU间VCPU均衡分担控制方法,其特征在于,该方法包括:

根据级联的各多核CPU中VCPU报文处理速率,确定各多核CPU中用于参与业务处理的VCPU数量,其中,前级与后级多核CPU中参与业务处理的VCPU数量与两者的VCPU报文处理速率呈反比;

当前级多核CPU接收到报文后,根据报文特征值在前级多核CPU用于参与业务处理的VCPU中选取VCPU进行报文处理,在后级多核CPU用于参与业务处理的VCPU中选取VCPU,并将所选取的后级VCPU的指示信息与前级VCPU处理后的报文输出给后级多核CPU;其中,该前级VCPU本次所选取出的后级VCPU与该前级VCPU前次选取的后级VCPU不同;

后级多核CPU根据所述VCPU的指示信息,选取对应的VCPU对前级多核CPU输出的报文进行处理。

2.如权利要求1所述的方法,其特征在于,前级多核CPU中对应于每个用于参与业务处理的VCPU设置有一数组和变量,所述数组中的各元素分别对应于后级多核CPU用于参与业务处理的各VCPU,初始时,所述变量的值为该数组中任一元素的所在的位置索引;

所述前级VCPU所选取出的后级VCPU为所述变量所对应的后级VCPU,发送给后级多核CPU的后级VCPU的指示信息为所述变量的值;

所述前级VCPU在将所述变量所对应的VCPU选取为处理所述前级VCPU输出报文的后级VCPU之后,还包括:将所述变量的值更新为对应数组中的下一个元素的位置索引,或者,将所述变量的值加1后与后级多核CPU中用于参与业务处理的VCPU数量进行求余运算。

3.如权利要求1所述的方法,其特征在于,所述将所选取的后级VCPU的指示信息与前级VCPU处理后的报文输出给后级多核CPU,包括:所述前级VCPU将所选取的后级VCPU的指示信息携带于前级VCPU处理后的报文的头部中输出给后级多核CPU;

后级多核CPU接收到前级CPU输出的报文并获取其中携带的VCPU的指示信息后,还包括:将该报文的头部中的VCPU指示信息删除。

4.一种多核CPU,应用于级联多核CPU间VCPU均衡分担控制过程,包括VCPU,其特征在于,所述多核CPU与该多核CPU级联的其它多核CPU中用于参与业务处理的VCPU数量,与两者的VCPU报文处理速率呈反比;

该多核CPU还包括:第一接收模块、第二接收模块、第一均衡模块、第二均衡模块和发送模块,其中:第一接收模块,用于在本多核CPU作为前级多核CPU时接收报文;

第一均衡模块,用于在所述第一接收模块接收到报文后,根据报文特征值在本多核CPU用于参与业务处理的VCPU中选取VCPU进行报文处理;

所述第一均衡模块所选取的VCPU,用于进行报文处理,以及在后级多核CPU用于参与业务处理的VCPU中选取VCPU;其中,前级VCPU本次所选取出的后级VCPU与前级VCPU前次选取的后级VCPU不同;

发送模块,用于将所述第一均衡模块所选取的VCPU处理后的报文和选取出的VCPU的指示信息发送给后级多核CPU;

第二接收模块,用于在本多核CPU作为后级多核CPU时接收前级多核CPU输出的报文和VCPU的指示信息;

第二均衡模块,用于根据所述第二接收模块接收到的所述VCPU的指示信息,选取对应的VCPU对前级多核CPU输出的报文进行处理。

5.如权利要求4所述的多核CPU,其特征在于,所述多核CPU的每个用于参与业务处理的VCPU中包括:存储单元,用于存储一数组和变量,所述数组中的各元素分别对应于后级多核CPU用于参与业务处理的各VCPU,初始时,所述变量的值为该数组中任一元素的所在的位置索引;

选取单元,用于将所述变量所对应的VCPU选取为处理本VCPU输出报文的后级VCPU;

更新单元,用于在所述选取单元选取出后级VCPU之后,将所述变量的值更新为对应数组中的下一个元素的位置索引,或者,将所述变量的值加1后与后级多核CPU中用于参与业务处理的VCPU数量进行求余运算。

6.如权利要求4所述的多核CPU,其特征在于,所述发送模块具体用于,将本多核CPU中的VCPU所选取的后级VCPU的指示信息携带于本多核CPU处理后的报文的头部中输出给后级多核CPU;

所述第二均衡模块具体用于,接收到前级CPU输出的报文并获取其中携带的VCPU的指示信息后,还包括:将该报文的头部中的VCPU指示信息删除。

说明书 :

一种级联多核CPU间VCPU均衡分担控制方法及其装置

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种级联多核CPU间VCPU均衡分担控制方法及其装置。

背景技术

[0002] 路由器设备上的核心业务单元,有些是通过特定的硬件处理芯片实现的,而有些则是通过CPU实现的。CPU对业务处理的速度远远低于专业的硬件处理芯片的处理速度。
[0003] 多核CPU,是指在一个CPU里集成了多个处理单元。这些处理单元,通常被称为VCPU(Virtual CPU,虚拟CPU),可以同时独立运行,互不干扰,具有类似于多个CPU同时运行的能力。正是由于多核CPU具有很多这样的VCPU,所以其处理能力远远比传统的单核CPU强大。由于多核CPU成本远远低于专业的硬件处理芯片,同时具有比传统的单核CPU更加强大的处理能力,所以某些路由器的业务通过多核CPU实现。
[0004] 通过多核CPU实现某些业务的路由器,区别于以前单核CPU实现的一个重大区别就是:在业务过程中,需要将不同的报文分担到多核CPU的各个VCPU中去实现。并且,为了防止部分VCPU处理不过来,而部分VCPU空转的情况出现,这种分担要尽可能均衡。
[0005] 现在常用的VCPU分担算法是逐流的,即不同的流量被分担到不同的VCPU上处理。流量分流一般是通过报文IP头中的源/目的IP地址、协议类型、源/目的Transport、MPLS(Multiprotocol Label Switching,多协议标签交换)标签(MPLS Label)等字段进行计算。其流量分担过程如图1所示,其中,N条不同的流量被分担到不同的VCPU进行业务处理。
[0006] 不同型号的多核CPU的流量分担算法存在差异,VCPU的处理性能(通常由VCPU处理报文的速率表征VCPU的处理性能)通常也会存在差异,在多个多核CPU级联使用的情况下,不同型号的多核CPU间会存在某些不可避免的业务处理拥塞,导致整体处理性能降低,这显然是不合理的。

发明内容

[0007] 本发明提供了一种级联多核CPU间VCPU均衡分担控制方法及其装置,用以解决现有技术中多核CPU级联后,整体性能低的问题。
[0008] 本发明提供的级联多核CPU间VCPU均衡分担控制方法,该方法包括:
[0009] 根据级联的各多核CPU中VCPU报文处理速率,确定各多核CPU中用于参与业务处理的VCPU数量,其中,前级与后级多核CPU中参与业务处理的VCPU数量与两者的VCPU报文处理速率呈反比;
[0010] 当前级多核CPU接收到报文后,根据报文特征值在前级多核CPU用于参与业务处理的VCPU中选取VCPU进行报文处理,在后级多核CPU用于参与业务处理的VCPU中选取VCPU,并将所选取的后级VCPU的指示信息与前级VCPU处理后的报文输出给后级多核CPU;其中,该前级VCPU本次所选取出的后级VCPU与该前级VCPU前次选取的后级VCPU不同;
[0011] 后级多核CPU根据所述VCPU的指示信息,选取对应的VCPU对前级多核CPU输出的报文进行处理。
[0012] 本发明提供的多核CPU,应用于级联多核CPU间VCPU均衡分担控制过程,包括VCPU,所述多核CPU和与该多核CPU级联的其它多核CPU中用于参与业务处理的VCPU数量,与两者的VCPU报文处理速率呈反比;
[0013] 该多核CPU还包括:第一接收模块、第二接收模块、第一均衡模块、第二均衡模块和发送模块,其中:
[0014] 第一接收模块,用于在本多核CPU作为前级多核CPU时接收报文;
[0015] 第一均衡模块,用于在所述第一接收模块接收到报文后,根据报文特征值在本多核CPU用于参与业务处理的VCPU中选取VCPU进行报文处理;
[0016] 所述第一均衡模块所选取的VCPU,用于进行报文处理,以及在后级多核CPU用于参与业务处理的VCPU中选取VCPU;其中,该VCPU本次所选取出的后级VCPU与该VCPU前次选取的后级VCPU不同;
[0017] 发送模块,用于将所述第一均衡模块所选取的VCPU处理后的报文和选取出的VCPU的指示信息发送给后级多核CPU;
[0018] 第二接收模块,用于在本多核CPU作为后级多核CPU时接收前级多核CPU输出的报文和VCPU的指示信息;
[0019] 第二均衡模块,用于根据所述第二接收模块接收到的所述VCPU的指示信息,选取对应的VCPU对前级多核CPU输出的报文进行处理。
[0020] 本发明的有益技术效果包括:
[0021] 由于一方面根据前级多核CPU和后级多核CPU的VCPU处理性能确定各自参与业务处理的VCPU的数量;另一方面,在前级多核CPU根据报文特征在前级多核CPU中的各参与业务处理的VCPU中进行负载均衡,在后级多核CPU中根据前级多核CPU所指示的后级VCPU,在参与业务处理的各VCPU中进行负载均衡,从而实现了根据前后级多核CPU的VCPU处理性能进行业务处理和负载均衡,且避免了因不同型号的多核CPU采用不同的分担算法导致的业务处理拥塞问题,与现有技术相比,提高了级联多核CPU的整体性能。

附图说明

[0022] 图1为现有技术中N条不同的流量被分担到不同的VCPU进行业务处理的示意图;
[0023] 图2本发明实施例中的级联多核CPU间VCPU均衡分担控制流程示意图;
[0024] 图3为本发明实施例中两个VCPU处理性能为1∶1时的多核CPU建立的1∶1的VCPU分担对应关系示意图;
[0025] 图4为本发明实施例中两个VCPU处理性能为1∶2时的多核CPU建立的2∶1的VCPU分担对应关系示意图;
[0026] 图5为本发明实施例提供的多核CPU的结构示意图;
[0027] 图6为图5中的VCPU的结构示意图。

具体实施方式

[0028] 本发明实施例可在不同型号的多核CPU级联后,根据相邻VCPU的处理性能不同,控制本多核CPU上的某VCPU的流量发送到对端某些VCPU上进行处理,从而实现两个多核CPU级联后的整体处理性能的优化。
[0029] 下面结合附图对本发明实施例进行详细描述。
[0030] 参见图2,为本发明实施例提供的级联多核CPU间VCPU均衡分担控制流程示意图。该流程描述的是报文从CPU1流入到从CPU2流出的过程,在该过程中,CPU1为前级多核CPU,CPU2为后级多核CPU,其反向过程(即CPU2为前级多核CPU,CPU1为后级多核CPU的报文处理过程)与此类似。
[0031] 不同型号的CPU1与CPU2级联后,如果CPU1与CPU2的VCPU的处理性能(即VCPU处理报文的速率)比是比较简单的整数比M∶N时,CPU1的N个VCPU的处理性能与CPU2的M个VCPU的处理性能一样。较优的VCPU分担方法是按照前后级VCPU的处理性能确定CPU1和CPU2上参与业务处理的VCPU的数量,该数量的比值与多核CPU性能的比值呈反比,CPU1采用基于流的负载分担算法其上进行业务处理的VCPU中选择VCPU处理输入的报文,CPU1输出的相同流的报文则分散到CPU2上参与业务处理的VCPU上进行处理。
[0032] 为实现上述目标,本发明实施例中,首先,根据CPU1和CPU2的VCPU的处理性能,确定CPU1和CPU2中各自进行业务处理的VCPU数量及VCPU标识,其中CPU1与CPU2参与业务处理的VCPU数量与两者的处理性能成反比。具体的,如果CPU1和CPU2的处理性能的最简整数比为:M∶N,则确定CPU1中进行业务处理的VCPU的数量为P1个,CPU2中进行业务处理的VCPU的数量为P2个,P1∶P2=N∶M,然后根据确定出的VCPU数量,指定CPU1中P1个VCPU用于处理报文,指定CPU2中P2个VCPU处理报文,至于具体指定哪些VCPU,或者说按照什么策略来选择VCPU,应该属于具体实现,只要保证P1∶P2=N∶M即可,比如可以随机选,可以按照VCPU的编号顺序选。例如,如果CPU1和CPU2中的VCPU的数量均为10,其性能比为1∶2,则指定CPU1中的全部10个VCPU(即VCPU1~10)参与报文处理,指定VCPU2中的5个VCPU(如VCPU1~5)参与报文处理。
[0033] 在具体实施时,可先分担算法及输入的流量大小确定CPU1中进行业务处理的VCPU数量,然后进一步根据CPU1和CPU2的VCPU的性能比,确定CPU2中进行业务处理的VCPU数量。具体的,可预先根据实际流量特征(如流量源IP地址、目的IP地址等五元组信息)构造各种特征的流量报文,然后输入CPU1,CPU1将按照分担算法根据报文的特征值决定将报文分配到哪个VCPU进行处理,此时记录各特征值的报文与VCPU的对应关系,从而确定出CPU1上有多少个VCPU参与业务处理以及具体是哪些VCPU进行业务处理,然后根据CPU1和CPU2的VCPU的处理性能,确CPU2中进行业务处理的VCPU数量。
[0034] 在确定出各多核CPU参与业务处理的VCPU之后,可使用多核CPU中的寄存器指定参与业务处理的VCPU。在CPU1中的每个被确定为进行业务处理的VCPU上还要记录CPU2上被确定为进行业务处理的各VCPU的指示信息。
[0035] 当CPU1接收到报文后,如图2所示,该流程可包括:
[0036] 步骤201,CPU1接收到报文后,根据负载分担算法在本多核CPU中被指定为进行业务处理的P1个VCPU中选择VCPU处理该报文。
[0037] 该步骤中,CPU1可采用基于报文特征值(如包括IP地址的五元组信息)的负载分担算法以实现基于流的负载分担。具体的,可根据负载分担算法的需要,针对报文的类型获取报文的某一个或多个字段作为分担算法的输入,通过分担算法选出对应的VCPU。比如,如果是MPLS报文则获取MPLS Label等字段,如果是TCP/UDP报文需要获取报文的源/目的IP地址等字段。
[0038] 步骤202,CPU1根据其上所记录的CPU2上被确定为参与报文处理的P2个VCPU,在该范围内选取后级VCPU以处理该前级VCPU所输出的报文,并保证该前级VCPU本次所选取出的后级VCPU与该前级VCPU上次所选取的后级VCPU不同。
[0039] 步骤203,CPU1上的VCPU对报文进行处理后,将处理完成的报文连同选择出的后级VCPU的指示信息,输出给CPU2。
[0040] 具体的,可将所选取出的后级VCPU的指示信息携带于报文头中,如携带于报文头中本发明实施例所扩展的字段中;也可以采用其它方式输出给CPU2,只要在CPU1和CPU2之间约定好传输格式。
[0041] 步骤204,CPU2接收到CPU1输出的报文后,根据对应的VCPU的指示信息,使用对应的VCPU处理该报文。
[0042] 具体的,CPU2可从报文头中本发明实施例所扩展的字段中获取VCPU的指示信息,并使用对应的VCPU处理接收到的报文。进一步的,在CPU2接收到CPU1输出的报文并获取其中携带的VCPU的指示信息后,将报文中携带的VCPU的指示信息删除。
[0043] 在具体实施时,为了保证前级VCPU所选取出的后级VCPU与该前级VCPU上一次处理报文时所选取的后级VCPU不同,可在CPU1中对应于每个被确定为进行业务处理的VCPU设置1个数组和1个变量,该数组指示出CPU2上所有参与报文处理的VCPU的集合,该变量用于记录对应的前级VCPU当前所选取的后级VCPU在该数组中的位置索引,或者该变量用于记录对应的前级VCPU下一次应选取的后级VCPU在该数组中的位置索引。
[0044] 前级VCPU选取后级VCPU时,采用轮询的方式从前级VCPU对应的数组中选取1个元素,即,前级VCPU根据对应变量的值从该数组中的对应位置的下一个位置选取后级VCPU,每次选取出一个VCPU后将对应变量的值更新为该次选取的后级VCPU在该数组中的位置;或者,前级VCPU根据对应变量的值从该数组中的对应位置选取后级VCPU,每次选取出一个VCPU后将该变量的值更新为该数组中下一个VCPU的位置。进一步的,当到达数组中的最后一个元素时,选取该数组的第一个元素所指示的后级VCPU。
[0045] 例如,以前述CPU1中进行业务处理的VCPU的数量为P1个,CPU2中进行业务处理的VCPU的数量为P2个为例,CPU1中对应于P1个VCPU中的每一个VCPU设置数组a[P2]和变量b:
[0046] 数 组a[P2]:{cpu2.vcpu_1.tag,cpu2.vcpu_2.tag,...,cpu2.vcpu_P2-1.tag,cpu2.vcpu_P2.tag}
[0047] 同时,在CPU2上设置如下硬件映射表:
[0048] {cpu2.vcpu_1.tag->vcpu1}
[0049] {cpu2.vcpu_2.tag ->vcpu2}
[0050] ……
[0051] {cpu2.vcpu_P2-1.tag->vcpu P2-1}
[0052] {cpu2.vcpu_P2.tag->vcpu P2}
[0053] 数组a[P2]的内容依次为CPU2的每个参与业务处理的VCPU对应的VCPU的指示信息。变量b的初始值为数组a[P2]中的任一元素的位置索引,优选为a[P2]中的第一个元素的位置索引。
[0054] 以CPU1上的VCPU1为例,当前变量b=cpu2.vcpu_1.tag,当CPU1接收到报文并通过负载分担选项VCPU1进行处理后,该VCPU1将处理后的报文以及当前变量b的值cpu2.vcpu_1.tag发送给CPU2,并将变量b的值更新为数组a[P2]中的下一个位置的元素值cpu2.vcpu_2.tag;CPU2接收到CPU1输出的该报文后,根据其上设置的上述硬件映射表以及变量b的值,确定对应的vcpu1对该报文进行处理。此后,当CPU1再次匹配到VCPU1进行报文处理时,将当前变量b的值cpu2.vcpu_2.tag发送给CPU2作为选取VCPU的依据,并将变量b的值更新为cpu2.vcpu_3.tag。以此类推,当变量b的值已经是数组a[P2]的最后一个元素时,在更新变量b的值时,将其更新为数组a[P2]的第一个元素值。
[0055] 可以看出,CPU1上每个参与业务处理的VCPU在处理完报文后,根据对应的数组a[P2]和变量b,确定携带到后级CPU的VCPU的指示信息,并且为了完成报文在后级CPU中公平轮转的使用各个VCPU,该变量b的值还需要在每处理一个报文后自动更新到下一个数组元素对应的下标,数组元素依次按照循环方式遍历。
[0056] 另一种更新变量b的值的方式是:在CPU1中的VCPU选取后级VCPU时,根据变量b当前的值选取对应的后级VCPU,然后将当前的变量b的值加1并对P2求余,从而保证变量b的取值与更新前的取值相比在变化而又小于P2,即保证每次选取的后级VCPU都不相同,但均在数组a[P2]的范围之内。
[0057] 需要说明的是,以上通过数组方式选取VCPU仅为一种具体的实现方式,本领域技术人员应该能够理解,任何能够保证前级VCPU本次选取的后级VCPU与该前级VCPU上一次选取的后级VCPU不同,且在后级多核CPU进行业务处理的VCPU范围内的实现方式,均在本发明的保护范围之内。
[0058] 通过以上流程可以看出,对于相同特征的数据流(即根据五元组计算出的特征值相同),在前级CPU上会由相同的VCPU处理,但是该数据流的一系列报文会由后级CPU上的各个参与报文处理的VCPU依次轮流处理,而不会集中在后级CPU上的某个特定VCPU处理;同时由于预先根据前级多核CPU和后级多核CPU的VCPU处理性能确定各自多核CPU参与业务处理的VCPU的数量,从而实现了根据前后级多核CPU的处理性能进行业务处理和负载均衡,与现有技术相比,提高了级联多核CPU的整体性能。
[0059] 下面结合图3和图4,说明根据两个多核CPU各自的处理性能提高两个多核CPU级联后的整体处理性能的原理。
[0060] 如图3所示,在多核CPU1与多核CPU2的VCPU处理性能相同的情况下,它们建立1∶1的VCPU数量映射关系,即,CPU1和CPU2各自参与报文处理的VCPU数量为1∶1。这样,根据本发明实施例的以上流程,进入CPU1的不同流被均匀分担到某n个VCPU上处理,一个前级VCPU将对应流的报文分配到后级的n个VCPU上进行处理(图中仅示出了多核CPU1中的VCPU1将Streame1的报文分配到多核CPU2的n个VCPU的示意图)。
[0061] 如图4所示,在多核CPU1与多核CPU2的VCPU处理性能是1∶2的情况下,它们建立2∶1的VCPU数量映射关系,即,CPU1和CPU2各自参与报文处理的VCPU数量为2∶1。这样,根据本发明实施例的以上流程,进入CPU1的不同流被均匀分担到某2n个VCPU上处理,一个前级VCPU将对应流的报文分配到后级的n个VCPU上进行处理(图中仅示出了多核CPU1中的VCPU1将Streame1的报文分配到多核CPU2的2n个VCPU的示意图,其中多核CPU2中虚线表示的VCPU表示未被选取为参与业务处理的VCPU)。
[0062] 当然,根据级联的两个多核CPU各自VCPU的性能,只要确实有条件,还可以建立2∶3、3∶4等等的VCPU数量映射关系。
[0063] 通过本发明的实施例,将不同型号的多核CPU级联时,如果根据多核CPU的性能为级联的两个多核CPU建立各自参与报文处理的VCPU的映射关系,只要流量能够在前一级多核CPU上很好地分担(一般的多核CPU都能做到),即使多核CPU分担算法不同,也能够避免后一级多核CPU成为前一级多核CPU的瓶颈,或者后一级多核CPU的某些VCPU空转等待的情况发生,提高了各VCPU处理能力的利用率,从而也提高了多核CPU级联时整体的处理性能。
[0064] 基于相同的技术构思,本发明实施例还提供了一种多核CPU,应用于上述实施例描述的级联多核CPU间VCPU均衡分担控制过程。
[0065] 参见图5,为本发明实施例提供的多核CPU的结构示意图,该多核CPU包括VCPU501,该多核CPU中用于参与业务处理的VCPU数量和与该多核CPU级联的其它多核CPU中用于参与业务处理的VCPU数量,与两者的VCPU报文处理速率呈反比。该多核CPU还可包括:第一接收模块502、第二接收模块503、第一均衡模块504、第二均衡模块505和发送模块506,其中:
[0066] 第一接收模块502,用于在本多核CPU作为前级多核CPU时接收输入到该该前级多核CPU的报文;
[0067] 第一均衡模块503,用于在第一接收模块502接收到报文后,根据报文特征值在本多核CPU用于参与业务处理的VCPU 501中选取VCPU 501进行报文处理;
[0068] 第一均衡模块503所选取的VCPU 501,用于进行报文处理,以及在后级多核CPU用于参与业务处理的VCPU中选取VCPU;其中,该VCPU 501本次所选取出的后级VCPU与该VCPU 501前次选取的后级VCPU不同;
[0069] 发送模块504,与本多核CPU中的每一个用于参与业务处理的VCPU连接,用于将第一均衡模块503所选取的VCPU 501处理后的报文和选取出的VCPU的指示信息发送给后级多核CPU;
[0070] 第二接收模块505,用于在本多核CPU作为后级多核CPU时接收前级多核CPU输出的报文和VCPU的指示信息;
[0071] 第二均衡模块506,用于根据第二接收模块505接收到的所述VCPU的指示信息,选取对应的VCPU对前级多核CPU输出的报文进行处理。
[0072] 如图6所示,上述多核CPU的每个用于参与业务处理的VCPU 501可包括:
[0073] 存储单元601,用于存储一数组和变量,所述数组中的各元素分别对应于后级多核CPU用于参与业务处理的各VCPU,初始时,所述变量的值为该数组中任一元素的所在的位置索引;
[0074] 选取单元602,用于将所述变量所对应的VCPU选取为处理本VCPU输出报文的后级VCPU;
[0075] 更新单元603,用于在选取单元602选取出后级VCPU之后,将所述变量值更新为对应数组中的下一个元素的位置索引,或者,将所述变量的值加1后与后级多核CPU中用于参与业务处理的VCPU数量进行求余运算。
[0076] 具体的,发送模块504可将本多核CPU中的VCPU所选取的后级VCPU的指示信息携带于本多核CPU处理后的报文的头部中输出给后级多核CPU;相应的,第二均衡模块506接收到前级CPU输出的报文并获取其中携带的VCPU的指示信息后,还将该报文的头部中的VCPU指示信息删除。
[0077] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0078] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。