Cpu过载控制方法、装置及系统的制作方法

文档序号:7992194阅读:660来源:国知局
专利名称:Cpu过载控制方法、装置及系统的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种CPU(Central Processing Unit,中央处理器)过载控制方法、装置及系统。
背景技术
在网络设备出现的一些问题中,报文冲击导致CPU过载一直是个很严重的问题,一旦发生CPU过载,会导致很多问题,如:网管不能管理网络设备、设备业务单板故障、用户的正常业务不能上线(如组播、PPPOE等)、甚至系统故障等,而随着用户量的増加,该问题将会日益突出。网络设备会同时承载多种业务,如语音业务、PPP0E、组播业务等,当发生CPU过载时,大流量的业务(如组播业务)会影响语音业务,对用户而言,这是不可接受的,因此需要解决CPU在过载时,不同业务之间的公平性,这样,某种业务过载不影响其他业务的正常处理。现有网络设备上的过载控制方案,主要采用漏桶原理对报文进行控制,系统将所有接收的报文注入到一个漏桶中,通过调整输出报文的速率来对CPU占用率的调整。漏桶(Leaky Bucket)算法是ー种有效的过载控制算法,可以对进入网络的业务速率进行监控和调整,保证业务的平均(或峰值)速率不超过被接纳时的预置速率,而且容许业务有一定的突发性。漏桶算法的思想很简単,就是设计ー个具有漏桶特性的缓冲器,就好比用一个底部开有小孔的桶接水,那么不论向桶里倒水的速度是否变化,水从孔中流出的速度都是恒定的,只有桶空了,水的流出速率才变为零。如果不顾桶的大小,以太高的速度向里倒水,水就会从上沿溢出。在实现上,漏桶可被设计为一个计数器,每当信息源产生ー个信元时计数值加1,同时计数值按ー个适当的速率a減少。如图1所示,在计数值达到设定的阈值N(漏桶容量)时到达的信元将被丢弃或被标识。漏桶的两个控制參数是漏出速率a和漏桶容量N。在现有方案中,当前漏出速率a是根据CPU占用率动态调整的,当CPU占用率高于设定的目标值吋,开始调低漏出速率a,这样报文到达的速度被快速的抑制;当CPU占用率没有达到目标值时,调高漏出速率a,容量N保持不变。然而现有的这种方式不能解决在过载情况下不同业务之间处理的公平性,也不能保证某种流量的报文冲击不影响其他业务报文。同时也不能解决用户管理任务(如告警处理、加载处理、数据保存处理、MIB处理等)的过载控制,不能保证设备升级、正常运行的可靠性。

发明内容
本发明实施例提供ー种CPU过载控制系统,在所述CPU中设置多级漏桶,所述多级漏桶至少包括顶级漏桶和若干个叶子漏桶,每个叶子漏桶对应ー个优先级实体队列;所述若干个叶子漏桶的权重水位之和等于所述顶级漏桶的权重水位,其中,
所述叶子漏桶,用于在对应的实体队列中有报文时,判断当前水位是否超过当前叶子漏桶的权重水位,如果没有超过,则申请令牌对报文进行处理;如果超过权重水位,则向上级漏桶申请令牌;所述顶级漏桶,用于接收下级漏桶的令牌申请,判断当前水位是否超过顶级漏桶的权重水位,如果没有超过,则允许所述下级漏桶申请令牌。本发明实施例提供ー种CPU过载控制方法,所述CPU设置有多级漏桶,所述多级漏桶至少包括顶级漏桶和若干个叶子漏桶,每个叶子漏桶对应ー个优先级实体队列;所述若干个叶子漏桶的权重水位之和等于所述顶级漏桶的权重水位,所述方法包括:所述叶子漏桶在对应的实体队列中有报文时,判断当前水位是否超过当前叶子漏桶的权重水位,如果没有超过,则申请令牌对报文进行处理;如果超过权重水位,则向上级漏桶申请令牌,以使得所述上级漏桶根据所述上级漏桶的当前水位和所述上级漏桶的权重水位判断是否允许所述叶子漏桶申请令牌。本发明实施例提供ー种CPU,所述CPU中设置多级漏桶,所述多级漏桶至少包括顶级漏桶和若干个叶子漏桶,每个叶子漏桶对应ー个优先级实体队列;所述若干个叶子漏桶的权重水位之和等于所述顶级漏桶的权重水位,其中,所述叶子漏桶,用于在对应的实体队列中有报文时,判断当前水位是否超过当前叶子漏桶的权重水位,如果没有超过,则申请令牌对报文进行处理;如果超过权重水位,则向上级漏桶申请令牌;所述顶级漏桶,用于接收下级漏桶的令牌申请,判断当前水位是否超过顶级漏桶的权重水位,如果没有超过,则允许所述下级漏桶申请令牌。本发明实施例提供的方法、装置和系统,在系统受到报文攻击时,不仅可以保证系统的当前CPU占用率不超过目标CPU占用率,同时可以保证在CPU繁忙时,不同协议报文的带宽公平性,不影响其他协议报文的正常处理。


为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的ー些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中漏桶技术示意图;图2为本发明实施例提供的CPU过载控制系统的架构的示意图;图3为本发明实施例提供的CPU过载控制系统的架构的示意图;图4为本发明实施例提供的管理任务的令牌数计算方法的示意图;图5为本发明实施例提供的CPU过载控制方法逐级申请令牌的过程的示意图。图6为本发明实施例提供的CPU过载控制方法的流程图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供了ー种CPU过载控制系统,如图2所示,在所述CPU中设置多级漏桶,所述多级漏桶至少包括顶级漏桶和若干个叶子漏桶,每个叶子漏桶对应ー个优先级的实体队列。所述叶子漏桶,用于在对应的实体队列中有报文时,判断当前水位是否超过当前叶子漏桶的权重水位,如果没有超过,则申请令牌对报文进行处理;如果超过权重水位,则向上级漏桶申请令牌;所述顶级漏桶,用于接收下级漏桶的令牌申请,判断当前水位是否超过顶级漏桶的权重水位,如果没有超过,则允许所述下级漏桶申请令牌。本实施例中的实体队列用于收集对应类型的报文。本实施例中的多级漏桶还可以包括多个中间漏桶,如图3所示,作为举例,叶子漏桶可以是图3中的四级漏桶,中间漏桶可以是图3中的一级漏桶和ニ级漏桶。顶级漏桶:设置的权重水位代表CPU的总处理能力,对应系统的令牌。可以根据目标CPU占用率给顶级漏桶设置权重水位,比如当CPU能处理的最大令牌数为1000个时,如果希望CPU的占用率为80%,则可是给顶级漏桶设置800权重水位,也即对应800个令牌。可以根据顶级漏桶所辖下级漏桶的WRR(Weighted Round Robin,加权循环调度算法)权重值将顶级漏桶的权重水位分配给所辖下级漏桶。中间漏桶:每个中间漏桶设置有ー个WRR权重值,用于反映该中间漏桶所辖的叶子漏桶所对应业务的优先级,所辖的叶子漏桶所对应业务的优先级越高的,WRR权重值可以越大。每个中间漏桶的权重水位可以采用下面的公式计算获取:权重水位=WRR权重值*上级漏桶权重水位(I)所有中间漏桶的权重水位之和等于顶级漏桶的权重水位。本实施例中的中间漏桶可以不映射到实体队列,用于反映所辖叶子漏桶的当前水位,每个中间漏桶的权重水位根据所辖下级漏桶的WRR权重值分配给叶子漏桶。叶子漏桶:每个叶子漏桶对应ー个优先级的实体队列,隶属于顶级漏桶或者中间漏桶。每个叶子漏桶也设置有ー个WRR权重值,用于反映对应业务的优先级。每个叶子漏桶的权重水位可以采用公式(I)计算得到。基于上述架构,当系统收到某种类型的报文时,将进入对应的实体队列,轮询到对应的叶子漏桶时,叶子漏桶启动令牌申请过程,包括:叶子漏桶判断当前水位是否超过该叶子漏桶的权重水位,如果没有超过,则申请令牌对实体队列中的报文进行处理,如果超过了,则像上级漏桶申请令牌。上级漏桶在接收到叶子漏桶的令牌申请后,判断当前水位是否超过自己的权重水位,如果没有超过,则允许所述叶子漏桶申请令牌;如果超过,则继续向上级漏桶申请令牌,按照这种逐级申请的方式,子漏桶可以抢占上级漏桶的带宽,直到顶级漏桶的权重水位用完。其中,当前水位用于反映已经申请到的令牌数。本实施例中,CPU会按照设定的周期(如I秒)比较当前CPU占用率和目标CPU占用率,当所述当前CPU占用率低于所述目标CPU占用率时,増加顶级漏桶的权重水位;当所述当如CPU占用率闻于所述目标CPU占用率时,减少所述顶级漏摘的权重水位。CPU也可以按照设定的周期(如I秒)判断是否有丢包事件发生,如果没有,则将各级漏桶的当前水位刷新为0 ;如果有,则给占用带宽多的漏桶设置带宽门限以限制所述占用带宽多的漏桶使用带宽,所述带宽门限基于加权轮询算法和所述占用带宽多的漏桶所允许通过的流量,并将各级漏桶的当前水位刷新为O。通过门限技术,可以解决某类报文独占系统带宽的问题,避免该类报文影响其他报文的带宽,从而保证不同业务之间的带宽公平性。本实施例提供的系统,还可以将管理任务(如告警处理、加载处理、数据保存处理、MIB处理、单板配置恢复等)納入进来进行管理,也即本实施例中的叶子漏桶可以映射到管理任务。管理任务同普通协议报文的最大差别表现在:普通协议报文的流量是按照PPS (报文数/毎秒)来计算的,统计某类普通协议报文的报文数就很容易计算出该类报文所占用的带宽;而管理任务对系统的CPU占用同系统接收的报文数目没有直接关联,举例如下:系统执行数据保存操作时,系统会将需要保存的数据收集到内存中,然后将待保存的数据分批写入到非易失存储介质中(如FLASH/硬盘),此时CPU的消耗主要是在往非易失存储介质的写入过程中。因此,对于管理任务不能按照统计报文数(pps)来计算带宽,应该按照管理任务在一个统计周期内占用的时间来计算带宽。具体算法如下:当前水位(消耗令牌数)=任务占用时间*单位时间映射的令牌数。图4以保存作为示例,计算在一个统计周期(1000ms)中保存任务所消耗的令牌数:保存任务漏桶水位=600ms*l令牌/ms = 600令牌
其中,Ims对应I个令牌。本实施例提供的CPU过载控制系统,可以保证系统的CPU占用率不超过目标CPU占用率,同时可以保证在CPU繁忙时,不同协议报文的带宽公平性,不影响其他协议报文的
正常处理。本实施例提供的CPU过载控制系统,还可以解决用户管理任务的过载控制,保证系统设备升级的成功率,同时CPU占用率会控制在目标CPU占用率,用户管理任务和协议报文会统一由CPU过载控制系统控制,解决二者CPU占用率抢占冲突的问题,同时保证二者之间的带宽公平性。本发明实施例还提供ー种CPU过载控制方法,所述CPU中设置有多级漏桶,所述多级漏桶至少包括顶级漏桶和若干个叶子漏桶,每个叶子漏桶对应ー个优先级实体队列;所述若干个叶子漏桶的权重水位之和等于所述顶级漏桶的权重水位,所述方法包括:所述叶子漏桶在对应的实体队列中有报文时,判断当前水位是否超过当前叶子漏桶的权重水位,如果没有超过,则申请令牌对报文进行处理;如果超过权重水位,则向上级漏桶申请令牌,以使得所述上级漏桶根据所述上级漏桶的当前水位和所述漏桶的权重水位判断是否允许所述叶子漏桶申请令牌。
在申请令牌的过程中,WRR算法轮询到的叶子漏桶可以采用逐级申请的方式,如图5所示,具体的过程如图6所示,包括:步骤600,所述叶子漏桶在对应的实体队列中有报文时,判断当前水位是否超过当前叶子漏桶的权重水位,如果没有超过,执行步骤602 ;如果超过了,执行步骤604.
步骤602,则申请令牌对报文进行处理。步骤604,则向上级漏桶申请令牌。上级漏桶也采取与所述叶子漏桶相同的处理方式,根据该上级漏桶的当前水位和所述上级漏桶的权重水位判断是否允许所述叶子漏桶申请令牌,如果该上级漏桶的当前水位超过该上级漏桶的权重水位,则依次向上级漏桶申请令牌。本实施例提供的方法,CPU还会按照设定的周期(如I秒)比较当前CPU占用率和目标CPU占用率,当所述当如CPU占用率低于所述目标CPU占用率时,增加顶级漏摘的权重水位;当所述当如CPU占用率闻于所述目标CPU占用率时,减少所述顶级漏摘的权重水位。CPU也可以按照设定的周期(如I秒)判断是否有丢包事件发生,如果没有,则将各级漏桶的当前水位刷新为0 ;如果有,则给占用带宽多的漏桶设置带宽门限以限制所述占用带宽多的漏桶使用带宽,所述带宽门限基于加权轮询算法和所述占用带宽多的漏桶所允许通过的流量,并将各级漏桶的当前水位刷新为O。通过门限技术,可以解决某类报文独占系统带宽的问题,避免该类报文影响其他报文的带宽,从而保证不同业务之间的带宽公平性。本实施例提供的方法,通过采样逐级申请令牌的方式,子漏桶可以抢占父漏桶的带宽,按照WRR权重比例分摊共享带宽,保证不同业务在系统繁忙时按照权重分配带宽。对于方法实施例而言,由于其基本相应于系统实施例,所以描述得比较简单,相关之处參见系统实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于ー个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明实施例的精神或范围的情况下,在其它实施例中实现。因此,本发明实施例将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
权利要求
1.ー种CPU过载控制系统,其特征在于,在所述CPU中设置多级漏桶,所述多级漏桶至少包括顶级漏桶和若干个叶子漏桶,每个叶子漏桶对应ー个优先级实体队列;所述若干个叶子漏桶的权重水位之和等于所述顶级漏桶的权重水位,其中, 所述叶子漏桶,用于在对应的实体队列中有报文时,判断当前水位是否超过当前叶子漏桶的权重水位,如果没有超过,则申请令牌对报文进行处理;如果超过权重水位,则向上级漏桶申请令牌; 所述顶级漏桶,用于接收下级漏桶的令牌申请,判断当前水位是否超过顶级漏桶的权重水位,如果没有超过,则允许所述下级漏桶申请令牌。
2.根据权利要求1所述的系统,其特征在于,每个叶子漏桶设置有加权循环调度算法WRR权重值,所述顶级漏桶的权重水位根据每个叶子漏桶的WRR权重值分配给所述若干个叶子漏桶。
3.根据权利要求1所述的系统,其特征在于,所述顶级漏桶的当前水位等于其下级漏桶的当前水位之和。
4.根据权利要求1所述的系统,其特征在于,所述CPU按照设定的周期比较当前CPU占用率和目标CPU占用率,当所述当前CPU占用率低于所述目标CPU占用率时,増加所述顶级漏摘的权重水位;当所述当如CPU占用率闻于所述目标CPU占用率时,减少所述顶级漏摘的权重水位。
5.根据权利要求1所述的系统,其特征在于,所述CPU按照设定的周期判断是否有丢包事件发生,如果没有,则将各级漏桶的当前水位刷新为O ;如果有,则给占用带宽多的漏桶设置带宽门限以限制所述占用带宽多的漏桶使用带宽,并将各级漏桶的当前水位刷新为O。
6.根据权利要求5所述的系统,其特征在于,所述带宽门限基于加权轮询算法和所述占用带宽多的漏桶所允许通过的流量。
7.根据权利要求1所述的系统,其特征在于,所述叶子漏桶还用于映射管理任务,根据CPU占用时间计算管理任务需要申请的令牌数。
8.根据权利要求1-7任意一项所述的系统,其特征在于,所述系统还包括若干个中间漏桶,所述中间漏桶的权重水位之和等于所述顶级漏桶的权重水位;每个中间漏桶为所述若干个叶子漏桶中的至少ー个的父漏桶,用于反映所辖子漏桶的当前水位。
9.ー种CPU过载控制方法,其特征在于,所述CPU设置有多级漏桶,所述多级漏桶至少包括顶级漏桶和若干个叶子漏桶,每个叶子漏桶对应ー个优先级实体队列;所述若干个叶子漏桶的权重水位之和等于所述顶级漏桶的权重水位,所述方法包括: 所述叶子漏桶在对应的实体队列中有报文时,判断当前水位是否超过当前叶子漏桶的权重水位,如果没有超过,则申请令牌对报文进行处理;如果超过权重水位,则向上级漏桶申请令牌,以使得所述上级漏桶根据所述上级漏桶的当前水位和所述上级漏桶的权重水位判断是否允许所述叶子漏桶申请令牌。
10.根据权利要求9所述的方法,其特征在于,每个叶子漏桶设置有WRR权重值,所述顶级漏桶的权重水位根据每个叶子漏桶的WRR权重值分配给所述若干个叶子漏桶。
11.ー种CPU,其特征在于,所述CPU中设置有多级漏桶,所述多级漏桶至少包括顶级漏桶和若干个叶子漏桶,每个叶子漏桶对应ー个优先级实体队列;所述若干个叶子漏桶的权重水位之和等于所述顶级漏桶的权重水位,其中,所述叶子漏桶,用于在对应的实体队列中有报文时,判断当前水位是否超过当前叶子漏桶的权重水位,如果没有超过,则申请令牌对报文进行处理;如果超过权重水位,则向上级漏桶申请令牌; 所述顶级漏桶,用于接收下级漏桶的令牌申请,判断当前水位是否超过顶级漏桶的权重水位,如果没有超过,则允许所述下级漏桶申请令牌。
12.根据权利要求11所述的CPU,其特征在于,还包括若干个中间漏桶,所述中间漏桶的权重水位之和等于所述顶级漏桶的权重水位;每个中间漏桶为所述若干个叶子漏桶中的至少ー个的父漏桶, 用于反映所辖子漏桶的当前水位。
全文摘要
本发明实施例公开了一种CPU过载控制方法、装置和系统,方法包括在所述CPU中设置多级漏桶,所述多级漏桶至少包括顶级漏桶和若干个叶子漏桶,所述顶级漏桶的权重水位为所述CPU能处理的最大令牌数;所述若干个叶子漏桶的权重水位之和等于所述顶级漏桶的权重水位,其中,所述叶子漏桶,用于在对应的实体队列中有报文时,判断当前水位是否超过当前叶子漏桶的权重水位,如果没有超过,则申请令牌对报文进行处理;如果超过权重水位,则向上级漏桶申请令牌;所述顶级漏桶,用于接收下级漏桶的令牌申请,判断当前水位是否超过顶级漏桶的权重水位,如果没有超过,则允许所述下级漏桶申请令牌。
文档编号H04L12/819GK103139097SQ201110388058
公开日2013年6月5日 申请日期2011年11月28日 优先权日2011年11月28日
发明者汪道明, 林祥员 申请人:华为技术服务有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1