一种多cpu系统的数据流处理方法和装置制造方法

文档序号:7797846阅读:122来源:国知局
一种多cpu系统的数据流处理方法和装置制造方法
【专利摘要】本发明公开了一种多CPU系统的数据流处理方法和装置,该方法包括:转发CPU确定本转发CPU的运行状态;本转发CPU的运行状态包括:本转发CPU处于繁忙状态、或处于空闲状态、或处于正常状态;在本转发CPU处于繁忙状态并可以转出数据流时,确定处于空闲状态的转发CPU,从本转发CPU对应的处理序列内选择处理队列,并通知所述处于空闲状态的转发CPU以使其将该处理队列添加到自身对应的处理序列内,并从本转发CPU对应的处理序列内删除该处理队列。本发明实施例中,可以提高转发CPU的利用效率和处理性能,并提升系统的转发处理能力。
【专利说明】一种多CPU系统的数据流处理方法和装置
【技术领域】
[0001]本发明涉及了通信【技术领域】,尤其是涉及了一种多CPU系统的数据流处理方法和
>J-U ρ?α装直。
【背景技术】
[0002]目前物理CPU (Central Processing Unit,中央处理器)通常包括多个处理内核,每个处理内核可以包括多个线程,并且每个线程对业务处理系统来说就是一个CPU,后续的CPU可以指物理CPU的处理内核中包括的线程。
[0003]在数据包转发系统(以数据包转发以及相关业务处理为主要业务的系统)中,如果数据包转发系统包含多个CPU,则为了更好的利用CPU资源,将多个CPU划分为接收分流CPU (简称接收CPU)和转发及业务处理CPU (简称转发CPU)。接收CPU从物理接口(Interface)接收数据流(将连续处理的特征比较相似的一组数据包(数据包也可称为数据报文)称为一条数据流,比如将源/目的地址,源/目的端口,协议号都相同的一组数据包称为一条数据流)后,按照一定规则进行分流,并将分流后的数据流分配到不同的处理队列。
[0004]以接收CPU按照Hash规则分流为例进行说明,如图1所示,处理队列I用于缓存Hash结果为O的数据流,处理队列2用于缓存Hash结果为I数据流,处理队列3用于缓存Hash结果为2的数据流,处理队列4用于缓存Hash结果为3的数据流,处理队列5用于缓存Hash结果为4的数据流,处 理队列6用于缓存Hash结果为5的数据流。例如,接收CPU在接收到数据流之后,通过Hash算法对该数据流进行Hash处理,如果Hash结果为1,则将该数据流缓存到处理队列2。
[0005]基于上述处理队列,为了充分利用CPU资源,可以由转发CPUl负责处理队列I和处理队列3内缓存的数据流,由转发CPU2负责处理队列2和处理队列4内缓存的数据流,由转发CPU3负责处理队列5内缓存的数据流,由转发CPU4负责处理队列6内缓存的数据流。但是,现有技术中,由哪个转发CPU负责哪个处理队列,在系统初始化时已经固定,从而导致有些转发CPU比较繁忙,而有些转发CPU比较空闲,继而不能充分发挥CPU性能,造成CPU资源的浪费。例如,当处理队列I和处理队列3内缓存的数据流很多,而处理队列6内缓存的数据流很少时,则会造成转发CPUl比较繁忙,转发CPU4比较空闲。

【发明内容】

[0006]本发明实施例提供一种多CPU系统的数据流处理方法和装置,以提高转发CPU的利用效率,并提高转发CPU的处理性能。
[0007]为了达到上述目的,本发明实施例提供一种多中央处理器CPU系统的数据流处理方法,所述多CPU系统包括多个转发CPU,所述方法包括:
[0008]转发CPU确定本转发CPU的运行状态;其中,本转发CPU的运行状态包括:本转发CPU处于繁忙状态、或处于空闲状态、或处于正常状态;
[0009]在本转发CPU处于繁忙状态并可以转出数据流时,确定处于空闲状态的转发CPU,从本转发CPU对应的处理序列内选择处理队列,并通知所述处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内,并从本转发CPU对应的处理序列内删除该选择的处理队列。
[0010]所述转发CPU确定本转发CPU的运行状态的过程,具体包括:
[0011]所述转发CPU检测本转发CPU对应的处理序列内记录的处理队列的长度;如果处理序列内记录的所有处理队列的长度均小于预设第一阈值,则确定本转发CPU的运行状态为空闲状态;如果处理序列内记录的处理队列中至少有两个处理队列的长度大于预设第二阈值,则确定本转发CPU的运行状态为繁忙状态;否则,确定本转发CPU的运行状态为正常状态;其中,所述预设第二阈值大于所述预设第一阈值。
[0012]所述转发CPU从本转发CPU对应的处理序列内选择处理队列的过程,具体包括:所述转发CPU检测本转发CPU对应的处理序列内记录的各处理队列的长度,并选择长度为第二长的处理队列。
[0013]所述在本转发CPU处于繁忙状态并可以转出数据流具体包括:
[0014]本转发CPU处于繁忙状态,且当前为持有调整令牌的非转出状态;当所述转发CPU从本转发CPU对应的处理序列内删除该选择的处理队列之后,所述转发CPU将所述调整令牌传递给其它转发CPU,并结束本轮调整处理。
[0015]所述转发CPU通知所述处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内的过程,具体包括:
[0016]所述转发CPU在确定处于空闲状态的转发CPU后,所述转发CPU标记本转发CPU的调整状态为转出状态,在待转区域内标记该选择的处理队列需要由所述处于空闲状态的转发CPU进行处理,同时标记该选择的处理队列的来源CPU为本转发CPU以及标记所述处于空闲状态的转发CPU的调整状态为转入状态,以便由所述处于空闲状态的转发CPU在确定本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的该选择的处理队列添加到自身对应的处理序列内,并将所述转发CPU的调整状态标记为无调整状态,将自身的调整状态标记为无调整状态。
[0017]本发明实施例提供一种多中央处理器CPU数据流处理装置,所述多CPU数据流处理装置包括多个转发CPU,所述转发CPU包括:
[0018]确定模块,用于确定本转发CPU的运行状态;其中,本转发CPU的运行状态包括:本转发CPU处于繁忙状态、或处于空闲状态、或处于正常状态;
[0019]处理模块,用于在本转发CPU处于繁忙状态并可以转出数据流时,确定处于空闲状态的转发CPU,从本转发CPU对应的处理序列内选择处理队列,通知所述处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内,并从本转发CPU对应的处理序列内删除该选择的处理队列。
[0020]所述确定本转发CPU的运行状态,具体包括:检测本转发CPU对应的处理序列内记录的处理队列的长度;如果处理序列内记录的所有处理队列的长度均小于预设第一阈值,则确定本转发CPU的运行状态为空闲状态;如果处理序列内记录的处理队列中至少有两个处理队列的长度大于预设第二阈值,则确定本转发CPU的运行状态为繁忙状态;否则,确定本转发CPU的运行状态为正常状态;其中,所述预设第二阈值大于所述预设第一阈值。
[0021]所述从本转发CPU对应的处理序列内选择处理队列,具体包括:检测本转发CPU对应的处理序列内记录的各处理队列的长度,并选择长度为第二长的处理队列。
[0022]所述在本转发CPU处于繁忙状态并可以转出数据流具体包括:本转发CPU处于繁忙状态,且当前为持有调整令牌的非转出状态;
[0023]所述处理模块,还用于当从本转发CPU对应的处理序列内删除该选择的处理队列之后,将所述调整令牌传递给其它转发CPU,并结束本轮调整处理。
[0024]所述通知所述处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内,具体包括:在确定处于空闲状态的转发CPU后,标记本转发CPU的调整状态为转出状态,在待转区域内标记该选择的处理队列需要由所述处于空闲状态的转发CPU进行处理,同时标记该选择的处理队列的来源CPU为本转发CPU以及标记所述处于空闲状态的转发CPU的调整状态为转入状态,以便由所述处于空闲状态的转发CPU在确定本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的该选择的处理队列添加到自身对应的处理序列内,并将所述转发CPU的调整状态标记为无调整状态,将自身的调整状态标记为无调整状态。
[0025]与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,转发CPU在确定自身处于繁忙状态时,能够及时将需要由本转发CPU处理的数据流调整到其它处于空闲状态的转发CPU,使得处于空闲状态的转发CPU代替本转发CPU对数据流进行相关处理,从而提高转发CPU的利用效率和处理性能,并提升系统的转发处理能力。
【专利附图】

【附图说明】
[0026]图1是现有技术中按照Hash规则分流的应用示意图;
[0027]图2是本发明实施例提供的多CPU系统的数据流处理方法流程图;
[0028]图3是本发明实施例提供的多CPU数据流处理装置的结构图。
【具体实施方式】
[0029]针对现有技术中存在的问题,本发明实施例提供一种多CPU系统的数据流处理方法,且所述多CPU系统中至少包括一个或多个接收CPU以及多个转发CPU。接收CPU负责从物理接口接收数据流,并按照一定规则(如Hash规则,后续过程中以Hash规则为例进行说明)进行分流,并将分流后的数据流分配到不同的处理队列。转发CPU负责处理对应的处理队列内缓存的数据流,该处理过程具体可以为转发对应的处理队列内缓存的数据流,或者,对相应的处理队列内缓存的数据流进行相关业务处理。
[0030]本发明实施例中,各转发CPU分别对应有处理序列,且处理序列内记录有需要由相应的转发CPU进行处理的处理队列,因此各转发CPU均有本转发CPU对应的处理队列,且一个转发CPU可以对应一个或多个处理队列,并且各转发CPU均用于处理本转发CPU对应的处理队列内缓存的数据流。
[0031]以图1为本发明实施例的应用场景,转发CPUl对应的处理序列内记录有处理队列I和处理队列3,因此转发CPUl对应的处理队列为处理队列I和处理队列3,即转发CPUl负责处理队列I和处理队列3内缓存的数据流,且处理队列I用于缓存Hash结果为O的数据流,处理队列3用于缓存Hash结果为2的数据流;转发CPU2对应的处理序列内记录有处理队列2和处理队列4,因此转发CPU2对应的处理队列为处理队列2和处理队列4,即转发CPU2负责处理队列2和处理队列4内缓存的数据流,且处理队列2用于缓存Hash结果为I数据流,处理队列4用于缓存Hash结果为3的数据流;转发CPU3对应的处理序列内记录有处理队列5,因此转发CPU3对应的处理队列为处理队列5,即转发CPU3负责处理队列5内缓存的数据流,且处理队列5用于缓存Hash结果为4的数据流;转发CPU4对应的处理序列内记录有处理队列6,因此转发CPU4对应的处理队列为处理队列6,即转发CPU4负责处理队列6内缓存的数据流,且处理队列6用于缓存Hash结果为5的数据流。
[0032]基于上述应用场景,接收CPU在接收到数据流之后,通过Hash算法对该数据流进行Hash处理;如果Hash结果为0,则接收CPU将该数据流缓存到处理队列I ;如果Hash结果为1,则接收CPU将该数据流缓存到处理队列2 ;以此类推。对于处理队列I内缓存的数据流,由转发CPUl负责处理;对于处理队列2内缓存的数据流,由转发CPU2负责处理;以此类推。
[0033]基于上述应用场景,如图2所示,该数据流处理方法包括以下步骤:
[0034]步骤201,转发CPU确定本转发CPU的运行状态。
[0035]其中,本转发CPU的运行状态具体可以包括:本转发CPU处于繁忙状态、或者本转发CPU处于空闲状态、或者本转发CPU处于正常状态。
[0036]本发明实施例中,转发CPU确定本转发CPU的运行状态的过程,具体包括:转发CPU检测本转发CPU对应的处理序列内记录的处理队列的长度(例如,转发CPUl检测本转发CPUl对应的处理序列内记录的处理队列I以及处理队列3的长度);如果该处理序列内记录的所有处理队列的长度均小于预设第一阈值(如:第一阈值=64个报文),则确定本转发CPU的运行状态为空闲状态;如果该处理序列内记录的处理队列中至少有两个处理队列的长度大于预设第二阈值,即处理序列内记录有多个处理队列,且该多个处理队列中至少有两个处理队列的长度大于预设第二阈值(如:第二阈值=512个报文),则确定本转发CPU的运行状态为繁忙状态;否则(即上述两种情况之外的其它情况,此时本转发CPU的运行状态不是空闲状态,也不是繁忙状态),确定本转发CPU的运行状态为正常状态;其中,预设第二阈值大于预设第一阈值。
[0037]具体的,针对转发CPU的每一轮调度过程,各转发CPU在对本转发CPU对应的处理序列内记录的处理队列内缓存的数据流进行处理之前,首先计算本转发CPU对应的处理序列内记录的处理队列的长度,并根据本转发CPU对应的处理序列内记录的处理队列的长度确定本转发CPU的运行状态。即:如果处理序列内记录的所有处理队列的长度均小于预设第一阈值,则确定本转发CPU的运行状态为空闲状态;如果处理序列内记录的处理队列中至少有两个处理队列的长度大于预设第二阈值,则确定本转发CPU的运行状态为繁忙状态;否则,确定本转发CPU的运行状态为正常状态。
[0038]步骤202,在本转发CPU处于繁忙状态并可以转出数据流时,确定处于空闲状态的转发CPU,从本转发CPU对应的处理序列内选择处理队列,并通知处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内,并从本转发CPU对应的处理序列内删除该选择的处理队列。
[0039]其中,各转发CPU确定本转发CPU的运行状态后,可以将本转发CPU的运行状态通知给其它转发CPU,例如,转发CPU在确定本转发CPU处于空闲状态时,将本转发CPU处于空闲状态的信息公告给其它转发CPU ;基于此,当转发CPU处于繁忙状态时,该转发CPU可基于其它转发CPU公告的信息(即转发CPU处于空闲状态的信息)确定出处于空闲状态的转发CPU。在具体实现方式中,转发CPU在确定本转发CPU处于空闲状态之后,只有在本转发CPU的调整状态为无调整状态时,该转发CPU才将本转发CPU处于空闲状态的信息公告给其它转发CPU,无调整状态的内容在后续过程中阐述。
[0040]本发明实施例中,在处于繁忙状态的转发CPU对应的处理序列内将记录有多个处理队列,且转发CPU从本转发CPU对应的处理序列内选择处理队列的过程,具体包括:转发CPU检测本转发CPU对应的处理序列内记录的各处理队列的长度,并按照各处理队列的长度选择处理队列。在按照各处理队列的长度选择处理队列时,转发CPU选择的处理队列不是长度最长的处理队列,转发CPU可以任意选择其它长度的处理队列。例如:转发CPU可以选择长度为第二长的处理队列,或者,转发CPU可以选择长度最短的处理队列。
[0041 ] 本发明实施例中,本转发CPU处于繁忙状态并可以转出数据流具体包括:本转发CPU处于繁忙状态,且当前为持有调整令牌的非转出状态;进一步的,当转发CPU从本转发CPU对应的处理序列内删除该选择的处理队列之后,本转发CPU将所述调整令牌传递给其它转发CPU,并结束本轮调整处理。
[0042]具体的,系统中只包含一个调整令牌,该调整令牌在多个转发CPU之间循环传递,同一时间,只有一个转发CPU能够持有该调整令牌,且只有持有该调整令牌的转发CPU才能进行数据流的转出处理。在步骤202中,在本转发CPU处于繁忙状态时,只有该转发CPU当前持有调整令牌,该转发CPU才执行确定处于空闲状态的转发CPU,从本转发CPU对应的处理序列内选择处理队列,并通知处于空闲状态的转发CPU以使其将该选择的处理队列添加到处于空闲状态的转发CPU对应的处理序列内,并从本转发CPU对应的处理序列内删除该选择的处理队列。
[0043]本发明实施例中,针对转发CPU的一轮数据流调整过程(即执行本发明实施例提供的技术方案后,处于繁忙状态的转发CPU以及处于空闲状态的转发CPU的相关处理过程),转发CPU确定本转发CPU的运行状态之后,(I)在本转发CPU处于空闲状态时,如果本转发CPU当前未持有调整令牌,则转发CPU结束本轮调整处理,并等待下一轮数据流调整过程;如果本转发CPU当前持有调整令牌,则转发CPU将该调整令牌传递给其它转发CPU,并结束本轮调整处理,并等待下一轮数据流调整过程。(2)在本转发CPU处于正常状态时,如果本转发CPU当前未持有调整令牌,则转发CPU结束本轮调整处理,并等待下一轮数据流调整过程;如果本转发CPU当前持有调整令牌,则转发CPU将该调整令牌传递给其它转发CPU,结束本轮调整处理,并等待下一轮数据流调整过程。(3)在本转发CPU处于繁忙状态时,如果本转发CPU当前未持有调整令牌,则转发CPU结束本轮调整处理,并等待下一轮数据流调整过程;如果本转发CPU当前持有调整令牌,则转发CPU执行“确定处于空闲状态的转发CPU,从本转发CPU对应的处理序列内选择处理队列,并通知处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内,并从本转发CPU对应的处理序列内删除该选择的处理队列”的相关过程;在转发CPU从本转发CPU对应的处理序列内删除该选择的处理队列之后,转发CPU结束本轮调整处理,并等待下一轮数据流调整过程。
[0044]本发明实施例中,还可以为每个转发CPU设置对应的调整状态。转发CPU在确定处于空闲状态的转发CPU,并从本转发CPU对应的处理序列内选择处理队列的过程中,本转发CPU的调整状态为转出状态,且确定出的处于空闲状态的转发CPU的调整状态为转入状态。本转发CPU在转出状态下,不能再对其它处理队列内缓存的数据流执行转出处理,也不能对其它转发CPU对应的处理队列内缓存的数据流执行转入处理。该处于空闲状态的转发CPU在转入状态下,不能对自身对应的处理队列内缓存的数据流执行转出处理,也不能对上述选择的处理队列之外的其它处理队列内缓存的数据流执行转入处理。此外,如果有转发(PU在确定处于空闲状态且未对处理队列内缓存的数据流执行转出处理,也未对处理队列内缓存的数据流执行转入处理,则该转发CPU的调整状态为无调整状态;在无调整状态下,该转发CPU可以对处理队列内缓存的数据流执行转出处理,也可以对处理队列内缓存的数据流执行转入处理。
[0045]基于上述分析过程,本发明实施例中,转发CPU确定处于空闲状态的转发CPU,并通知处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内的过程,具体包括:转发CPU在确定处于空闲状态的转发CPU后,转发CPU标记本转发CPU的调整状态为转出状态,在待转区域内标记该选择的处理队列需要由处于空闲状态的转发CPU进行处理,同时标记该选择的处理队列的来源CPU为本转发CPU以及标记处于空闲状态的转发CPU的调整状态为转入状态,以便由处于空闲状态的转发CPU在确定本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的该选择的处理队列添加到自身对应的处理序列内,并将转发CPU的调整状态标记为无调整状态,将自身的调整状态标记为无调整状态。
[0046]具体的,转发CPU在确定处于空闲状态的转发CPU后,只有本转发CPU的调整状态为无调整状态,且处于空闲状态的转发CPU的调整状态为无调整状态时,转发CPU才标记本转发CPU的调整状态为转出状态,在待转区域内标记该选择的处理队列需要由处于空闲状态的转发CPU进行处理,同时标记该选择的处理队列的来源CPU为本转发CPU以及标记处于空闲状态的转发CPU的调整状态为转入状态,以便由处于空闲状态的转发CPU在确定本转发CPU的调整状态为转入状态时,需要读取待转区域内标记的信息。之后,处于空闲状态的转发CPU将待转区域内标记的需要由自身进行处理的该选择的处理队列添加到自身对应的处理序列内,并将处理队列的来源CPU的调整状态标记为无调整状态,并将本转发CPU的调整状态标记为无调整状态。
[0047]此外,在本转发CPU当前处于繁忙状态时,如果该转发CPU当前持有调整令牌,则在本转发CPU的调整状态为转出状态或者转入状态时,该转发CPU不向其它转发CPU传递调整令牌,结束本轮处理。
[0048]综上所述,本发明实施例中,转发CPU在确定自身处于繁忙状态(此时该转发CPU超过自身处理能力)时,能够及时将需要由本转发CPU处理的数据流调整到其它处于空闲状态的转发CPU,使得处于空闲状态的转发CPU代替本转发CPU对数据流进行相关处理,从而提高转发CPU的利用效率和处理性能,并提升系统的转发处理能力。
[0049]基于与上述方法同样的发明构思,本发明实施例中还提供了一种多中央处理器CPU数据流处理装置,所述多CPU数据流处理装置包括多个转发CPU,如图3所示,所述转发CPU包括:
[0050]确定模块11,用于确定本转发CPU的运行状态;其中,本转发CPU的运行状态包括:本转发CPU处于繁忙状态、或处于空闲状态、或处于正常状态;处理模块12,用于在本转发CPU处于繁忙状态并可以转出数据流时,确定处于空闲状态的转发CPU,从本转发CPU对应的处理序列内选择处理队列,通知所述处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内,并从本转发CPU对应的处理序列内删除该选择的处理队列。
[0051 ] 所述确定本转发CPU的运行状态,具体包括:检测本转发CPU对应的处理序列内记录的处理队列的长度;如果处理序列内记录的所有处理队列的长度均小于预设第一阈值,则确定本转发CPU的运行状态为空闲状态;如果处理序列内记录的处理队列中至少有两个处理队列的长度大于预设第二阈值,则确定本转发CPU的运行状态为繁忙状态;否则,确定本转发CPU的运行状态为正常状态;其中,所述预设第二阈值大于所述预设第一阈值。
[0052]所述从本转发CPU对应的处理序列内选择处理队列,具体包括:检测本转发CPU对应的处理序列内记录的各处理队列的长度,并选择长度为第二长的处理队列。
[0053]所述在本转发CPU处于繁忙状态并可以转出数据流具体包括:本转发CPU处于繁忙状态,且当前为持有调整令牌的非转出状态;所述处理模块12,还用于当从本转发CPU对应的处理序列内删除该选择的处理队列之后,将所述调整令牌传递给其它转发CPU,并结束本轮调整处理。
[0054]所述通知所述处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内,具体包括:在确定处于空闲状态的转发CPU后,标记本转发CPU的调整状态为转出状态,在待转区域内标记该选择的处理队列需要由所述处于空闲状态的转发CPU进行处理,同时标记该选择的处理队列的来源CPU为本转发CPU以及标记所述处于空闲状态的转发CPU的调整状态为转入状态,以便由所述处于空闲状态的转发CPU在确定本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的该选择的处理队列添加到自身对应的处理序列内,并将所述转发CPU的调整状态标记为无调整状态,将自身的调整状态标记为无调整状态。
[0055]其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0056]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0057]本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0058]本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0059]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0060]以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
【权利要求】
1.一种多中央处理器CPU系统的数据流处理方法,所述多CPU系统包括多个转发CPU,其特征在于,所述方法具体包括以下步骤: 转发CPU确定本转发CPU的运行状态;其中,本转发CPU的运行状态包括:本转发CPU处于繁忙状态、或处于空闲状态、或处于正常状态; 在本转发CPU处于繁忙状态并可以转出数据流时,确定处于空闲状态的转发CPU,从本转发CPU对应的处理序列内选择处理队列,并通知所述处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内,并从本转发CPU对应的处理序列内删除该选择的处理队列。
2.如权利要求1所述的方法,其特征在于,所述转发CPU确定本转发CPU的运行状态的过程,具体包括: 所述转发CPU检测本转发CPU对应的处理序列内记录的处理队列的长度;如果处理序列内记录的所有处理队列的长度均小于预设第一阈值,则确定本转发CPU的运行状态为空闲状态;如果处理序列内记录的处理队列中至少有两个处理队列的长度大于预设第二阈值,则确定本转发CPU的运行状态为繁忙状态;否则,确定本转发CPU的运行状态为正常状态;其中,所述预设第二阈值大于所述预设第一阈值。
3.如权利要求2所述的方法,其特征在于,所述转发CPU从本转发CPU对应的处理序列内选择处理队列的过程,具体包括: 所述转发CPU检测本转发CPU对应的处理序列内记录的各处理队列的长度,并选择长度为第二长的处理队列。
4.如权利要求1所述的方法,其特征在于,所述在本转发CPU处于繁忙状态并可以转出数据流具体包括:` 本转发CPU处于繁忙状态,且当前为持有调整令牌的非转出状态;当所述转发CPU从本转发CPU对应的处理序列内删除该选择的处理队列之后,所述转发CPU将所述调整令牌传递给其它转发CPU,并结束本轮调整处理。
5.如权利要求1至4任一所述的方法,其特征在于,所述转发CPU通知所述处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内的过程,具体包括: 所述转发CPU在确定处于空闲状态的转发CPU后,所述转发CPU标记本转发CPU的调整状态为转出状态,在待转区域内标记该选择的处理队列需要由所述处于空闲状态的转发CPU进行处理,同时标记该选择的处理队列的来源CPU为本转发CPU以及标记所述处于空闲状态的转发CPU的调整状态为转入状态,以便由所述处于空闲状态的转发CPU在确定本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的该选择的处理队列添加到自身对应的处理序列内,并将所述转发CPU的调整状态标记为无调整状态,将自身的调整状态标记为无调整状态。
6.一种多中央处理器CPU数据流处理装置,所述多CPU数据流处理装置包括多个转发CPU,其特征在于,所述转发CPU包括: 确定模块,用于确定本转发CPU的运行状态;其中,本转发CPU的运行状态包括:本转发CPU处于繁忙状态、或处于空闲状态、或处于正常状态; 处理模块,用于在本转发CPU处于繁忙状态并可以转出数据流时,确定处于空闲状态的转发CPU,从本转发CPU对应的处理序列内选择处理队列,通知所述处于空闲状态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内,并从本转发CPU对应的处理序列内删除该选择的处理队列。
7.如权利要求6所述的装置,其特征在于, 所述确定本转发CPU的运行状态,具体包括:检测本转发CPU对应的处理序列内记录的处理队列的长度;如果处理序列内记录的所有处理队列的长度均小于预设第一阈值,则确定本转发CPU的运行状态为空闲状态;如果处理序列内记录的处理队列中至少有两个处理队列的长度大于预设第二阈值,则确定本转发CPU的运行状态为繁忙状态;否则,确定本转发CPU的运行状态为正常状态;其中,所述预设第二阈值大于所述预设第一阈值。
8.如权利要求7所述的装置,其特征在于, 所述从本转发CPU对应的处理序列内选择处理队列,具体包括:检测本转发CPU对应的处理序列内记录的各处理队列的长度,并选择长度为第二长的处理队列。
9.如权利要求6所述的装置,其特征在于, 所述在本转发CPU处于繁忙状态并可以转出数据流具体包括:本转发CPU处于繁忙状态,且当前为持有调整令牌的非转出状态; 所述处理模块,还用于当从本转发CPU对应的处理序列内删除该选择的处理队列之后,将所述调整令牌传递给其它转发CPU,并结束本轮调整处理。
10.如权利要求6至9任一所述的装置,其特征在于, 所述通知所述处于空闲状 态的转发CPU以使其将该选择的处理队列添加到自身对应的处理序列内,具体包括:在确定处于空闲状态的转发CPU后,标记本转发CPU的调整状态为转出状态,在待转区域内标记该选择的处理队列需要由所述处于空闲状态的转发CPU进行处理,同时标记该选择的处理队列的来源CPU为本转发CPU以及标记所述处于空闲状态的转发CPU的调整状态为转入状态,以便由所述处于空闲状态的转发CPU在确定本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的该选择的处理队列添加到自身对应的处理序列内,并将所述转发CPU的调整状态标记为无调整状态,将自身的调整状态标记为无调整状态。
【文档编号】H04L12/863GK103825842SQ201410072674
【公开日】2014年5月28日 申请日期:2014年2月28日 优先权日:2014年2月28日
【发明者】黄灏, 傅志刚, 邢燚, 吴国华 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1