CN105159763A - 一种cpu利用率控制方法及装置 - Google Patents
一种cpu利用率控制方法及装置 Download PDFInfo
- Publication number
- CN105159763A CN105159763A CN201510476044.6A CN201510476044A CN105159763A CN 105159763 A CN105159763 A CN 105159763A CN 201510476044 A CN201510476044 A CN 201510476044A CN 105159763 A CN105159763 A CN 105159763A
- Authority
- CN
- China
- Prior art keywords
- control data
- buffer queue
- data bag
- cpu
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种CPU利用率控制方法和装置,该方法包括:探测CPU的利用率;判断所述CPU的利用率是否大于或等于第一阈值;若是,则根据控制数据包的优先级确定需要加大流量抑制的控制数据包缓存队列,并提高向所述需要加大流量抑制的控制数据包缓存队列发送抑制数据包的速率。本发明用以结合CPU当前的利用率,采用抑制数据包挤占控制数据包的方式,实现对CPU利用率的有效控制。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种CPU利用率控制方法及装置。
背景技术
在交换设备和路由设备中,分组芯片负责数据平面的工作,比如数据包的转发或者路由,CPU(CentralProcessingUnit,中央处理器)负责控制平面的工作,比如协议处理工作,协处理器也可分担一些协议处理工作。
CPU利用率是指一段时间内CPU实际处理数据的时间占实际运行时间的百分比,是反映CPU工作状态及处理效率的指标。影响CPU利用率的因素主要有两个方面,一方面是物理事件,比如端口连接或断开,物理温度过高或过低等;另一方面是数据包对CPU的冲击,一般情况下,发送给CPU的数据包的速率越高,对CPU的冲击越大,CPU的利用率就越高。
在交换设备或路由设备正常工作状态下,物理事件发生的次数远小于数据包冲击CPU的次数,因此对进入CPU的数据包进行控制,成为控制CPU利用率高低的关键。
发明内容
本发明实施例提供一种CPU利用率控制方法及装置,用以结合CPU当前的利用率,采用抑制数据包挤占控制数据包的方式,实现对CPU利用率的有效控制。
本发明包括:
一种CPU利用率控制方法,包括:
探测中央处理器CPU的利用率;
判断所述CPU的利用率是否大于或等于第一阈值;
若是,则根据控制数据包的优先级确定需要加大流量抑制的控制数据包缓存队列,并提高向所述需要加大流量抑制的控制数据包缓存队列发送抑制数据包的速率;其中,所述控制数据包中承载控制信息,通过分组芯片转发给CPU,所述分组芯片中包括N个控制数据包缓存队列,N为大于1的整数,一个控制数据包缓存队列中的抑制数据包的优先级高于该缓存队列中的控制数据包的优先级,一个控制数据包缓存队列中的抑制数据包在从所在的控制数据包缓存队列出队后被丢弃,一个控制数据包缓存队列中的控制数据包被转发给所述CPU。
所述根据分组芯片中的控制数据包缓存队列的优先级确定需要加大流量抑制的控制数据包缓存队列,包括:
按照控制数据包的优先级从低到高的顺序,确定需要加大流量抑制的控制数据包缓存队列。
按照所缓存的控制数据包优先级从低到高的顺序,所述N个控制数据包缓存队列包括第一缓存队列至第N缓存队列;
所述按照控制数据包的优先级从低到高的顺序确定需要加大流量抑制的控制数据包缓存队列,并提高向所述需要加大流量抑制的控制数据包缓存队列发送抑制数据包的速率,包括:
步骤201:将i设置为1;
步骤202:判断第i缓存队列中的控制数据包的发送速率是否高于所述控制数据包的最低保证速率,若是,则转入步骤203,否则转入步骤205;
步骤203:向第i缓存队列发送抑制数据包,向第i缓存队列发送抑制数据包的速率等于第i缓存队列中的控制数据包的发送速率减去所述控制数据包的最低保证速率所得到的差值;
步骤204:探测所述CPU的利用率,若所述CPU的利用率大于或等于所述第一阈值,则转入步骤205;
步骤205:将i递增1;
步骤206:若i≤N,则转入步骤202。
所述步骤206中,若i>N,则转入步骤207;
步骤207:将i设置为1;
步骤208:增加向第i缓存队列发送抑制数据包的速率,向第i缓存队列发送抑制数据包增加的速率等于第i缓存队列中的控制数据包的发送速率;
步骤209:探测所述CPU的利用率,若所述CPU的利用率大于或等于所述第一阈值,则转入步骤210;
步骤210:将i递增1;
步骤211:若i≤N,则转入步骤208。
所述步骤211中,若i>N,则发送用于指示CPU利用率高的告警指示。
若所述CPU的利用率小于第二阈值,则根据控制数据包的优先级确定需要降低流量抑制的控制数据包缓存队列,并降低向所述需要降低流量抑制的控制数据包缓存队列发送抑制数据包的速率;其中,所述第二阈值小于或等于所述第一阈值。
所述根据控制数据包的优先级确定需要降低流量抑制的控制数据包缓存队列,包括:
按照控制数据包的优先级从高到低的顺序,确定需要降低流量抑制的控制数据包缓存队列。
所述N个缓存队列的优先级彼此各不相同,按照优先级从低到高的顺序,所述N个缓存队列包括第一缓存队列至第N缓存队列;
所述按照所述分组芯片中的缓存队列的优先级从高到低的顺序确定需要降低流量抑制的缓存队列,并降低向所述需要降低流量抑制的缓存队列发送抑制数据包的速率,包括:
步骤301:将i设置为N;
步骤302:判断第i缓存队列中的控制数据包的发送速率是否低于所述控制数据包的最低保证速率,若是,则转入步骤303,否则转入步骤305;
步骤303:按照设定步长降低向第i缓存队列发送抑制数据包的速率,转入步骤304;
步骤304:探测所述CPU的利用率,若所述CPU的利用率小于或等于所述第二阈值,则转入步骤302;
步骤305:将i递减1;
步骤306:若i≥1,则转入步骤302。
所述步骤306中,若i<1,则转入步骤307;
步骤307:将i设置为N;
步骤308:判断第i缓存队列发送抑制数据包的速率是否大于零,若是,则转入步骤309,否则转入步骤311;
步骤309:按照设定步长降低向第i缓存队列发送抑制数据包;
步骤310:探测所述CPU的利用率,若所述CPU的利用率小于或等于所述第二阈值,则转入步骤311;
步骤311:将i递减1;
步骤312:若i≥1,则转入步骤308。
所述第i缓存队列中的控制数据包的发送速率为:
Rfi=CIRi-Dfi-Hfi
其中,Rfi为第i缓存队列中的控制数据包的发送速率,CIRi为第i缓存队列中的保证信息速率,Dfi为第i缓存队列中的抑制数据包的发送速率,Hfi为第i缓存队列中的测量数据包的接收速率;一个缓存队列中的测量数据包的优先级低于该缓存队列中的控制数据包的优先级。
所述探测CPU的利用率,包括:
向所述CPU发送探测数据包,并接收所述CPU返回的所述探测数据包;
根据所述探测数据包的发送时间和接收时间之差,得出所述探测数据包在所述CPU中的驻留时间;
根据所述探测数据包在所述CPU中的驻留时间查询预先设置的驻留时间与CPU利用率的对应关系,得到所述CPU的利用率。
一种CPU利用率控制装置,包括:探测模块、判断模块和抑制模块;
所述探测模块,用于探测中央处理器CPU的利用率;
所述判断模块,用于判断所述CPU的利用率是否大于或等于第一阈值;
所述抑制模块,用于当所述CPU的利用率大于或等于所述第一阈值时,根据控制数据包的优先级确定需要加大流量抑制的控制数据包缓存队列,并提高向所述需要加大流量抑制的控制数据包缓存队列发送抑制数据包的速率;其中,所述控制数据包中承载控制信息,通过分组芯片转发给CPU,所述分组芯片中包括N个控制数据包缓存队列,N为大于1的整数,一个控制数据包缓存队列中的抑制数据包的优先级高于该缓存队列中的控制数据包的优先级,一个控制数据包缓存队列中的抑制数据包在从所在的控制数据包缓存队列出队后被丢弃,一个控制数据包缓存队列中的控制数据包被转发给所述CPU。
所述抑制模块还用于:按照控制数据包的优先级从低到高的顺序,确定需要加大流量抑制的控制数据包缓存队列。
按照所缓存的控制数据包优先级从低到高的顺序,所述N个控制数据包缓存队列包括第一缓存队列至第N缓存队列;
所述抑制模块具体用于执行以下步骤:
步骤201:将i设置为1;
步骤202:判断第i缓存队列中的控制数据包的发送速率是否高于所述控制数据包的最低保证速率,若是,则转入步骤203,否则转入步骤205;
步骤203:向第i缓存队列发送抑制数据包,向第i缓存队列发送抑制数据包的速率等于第i缓存队列中的控制数据包的发送速率减去所述控制数据包的最低保证速率所得到的差值;
步骤204:探测所述CPU的利用率,若所述CPU的利用率大于或等于所述第一阈值,则转入步骤205;
步骤205:将i递增1;
步骤206:若i≤N,则转入步骤202。
所述抑制模块还用于执行以下步骤:
所述步骤206中,若i>N,则转入步骤207;
步骤207:将i设置为1;
步骤208:增加向第i缓存队列发送抑制数据包的速率,向第i缓存队列发送抑制数据包增加的速率等于第i缓存队列中的控制数据包的发送速率;
步骤209:探测所述CPU的利用率,若所述CPU的利用率大于或等于所述第一阈值,则转入步骤210;
步骤210:将i递增1;
步骤211:若i≤N,则转入步骤208。
所述抑制模块还用于:所述步骤211中,若i>N,则发送用于指示CPU利用率高的告警指示。
所述抑制模块还用于:若所述CPU的利用率小于第二阈值,则根据控制数据包的优先级确定需要降低流量抑制的控制数据包缓存队列,并降低向所述需要降低流量抑制的控制数据包缓存队列发送抑制数据包的速率;其中,所述第二阈值小于或等于所述第一阈值。
所述抑制模块还用于:按照控制数据包的优先级从高到低的顺序,确定需要降低流量抑制的控制数据包缓存队列。
所述N个缓存队列的优先级彼此各不相同,按照优先级从低到高的顺序,所述N个缓存队列包括第一缓存队列至第N缓存队列;
所述抑制模块具体用于执行以下步骤:
步骤301:将i设置为N;
步骤302:判断第i缓存队列中的控制数据包的发送速率是否低于所述控制数据包的最低保证速率,若是,则转入步骤303,否则转入步骤305;
步骤303:按照设定步长降低向第i缓存队列发送抑制数据包的速率,转入步骤304;
步骤304:探测所述CPU的利用率,若所述CPU的利用率小于或等于所述第二阈值,则转入步骤302;
步骤305:将i递减1;
步骤306:若i≥1,则转入步骤302。
所述抑制模块还用于执行以下步骤:
所述步骤306中,若i<1,则转入步骤307;
步骤307:将i设置为N;
步骤308:判断第i缓存队列发送抑制数据包的速率是否大于零,若是,则转入步骤309,否则转入步骤311;
步骤309:按照设定步长降低向第i缓存队列发送抑制数据包;
步骤310:探测所述CPU的利用率,若所述CPU的利用率小于或等于所述第二阈值,则转入步骤311;
步骤311:将i递减1;
步骤312:若i≥1,则转入步骤308。
所述装置还包括测量模块,用于测量所述控制数据包的发送速率,所述第i缓存队列中的控制数据包的发送速率为:
Rfi=CIRi-Dfi-Hfi
其中,Rfi为第i缓存队列中的控制数据包的发送速率,CIRi为第i缓存队列中的保证信息速率,Dfi为第i缓存队列中的抑制数据包的发送速率,Hfi为第i缓存队列中的测量数据包的接收速率;一个缓存队列中的测量数据包的优先级低于该缓存队列中的控制数据包的优先级。
所示探测模块具体用于:
向所述CPU发送探测数据包,并接收所述CPU返回的所述探测数据包;
根据所述探测数据包的发送时间和接收时间之差,得出所述探测数据包在所述CPU中的驻留时间;
根据所述探测数据包在所述CPU中的驻留时间查询预先设置的驻留时间与CPU利用率的对应关系,得到所述CPU的利用率。
本发明实施例中,当CPU的利用率大于或等于第一阈值时,说明CPU达到一定工作饱和度,此时根据控制数据包的优先级确定需要加大流量抑制的控制数据包缓存队列,并提高向所述需要加大流量抑制的控制数据包缓存队列发送抑制数据包的速率。由于抑制数据包的优先级高于控制数据包的优先级,且不会被发送到CPU,从而形成抑制数据包对控制数据包进行挤占,因此可通过提高抑制数据包的发送速率来抑制发往CPU的控制数据包的数量,进而减小进入CPU的数据流,从而降低了CPU的利用率,防止CPU过于繁忙,完成对CPU的保护。另一方面,根据控制数据包的优先级确定需要加大流量抑制的控制数据包缓存队列,可以兼顾控制数据包处理的缓急程度,比如,优先对低优先级的控制数据包的流量进行抑制,可以保证高优先级的控制数据包被发送到CPU进行处理,从而保证关键事务的处理。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例适用的设备内部结构图;
图2为本发明实施例提供的控制CPU利用率装置的结构原理图;
图3为本发明实施例中探测CPU利用率初始阶段的原理图;
图4为本发明实施例中CPU利用率和探测数据包的驻留时间的对应关系图;
图5为本发明实施例中限速小桶抑制原理图;
图6为本发明实施例中限速大桶和限速小桶共同抑制原理图;
图7为本发明实施例CPU利用率控制方法的流程图;
图8为本发明实施例CPU利用率控制方法的流程图;
图9为本发明实施例CPU利用率控制方法的抑制过程的流程图;
图10为本发明实施例CPU利用率控制方法的扩张过程的流程图;
图11为本发明实施例CPU利用率控制装置的结构示意图;
图12为本发明实施例控制CPU利用率的系统示意图;
图13为本发明实施例另一控制CPU利用率的系统示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1示例性地示出了本发明实施例适用的设备的内部结构。该设备可以是路由器或交换机,或者其他可实现数据转发功能的设备。
如图1所示,该设备可包括:CPU101、协处理器102和分组芯片103。CPU101负责管理和控制整个系统的正常工作,分组芯片103负责数据包的转发或路由,具体来说,业务数据包进入分组芯片后,经分组芯片进行转发处理,被转发至相应的出端口。协处理器102用于分担CPU的一些协议处理工作,或者用于功能的升级扩展,协处理器102可由FPGA(现场可编程门阵列,Field-ProgrammableGateArray)实现。
CPU与分组芯片之间,协处理器与分组芯片之间可分别通过数据通道实现数据交换,控制数据包进入分组芯片后通过与CPU之间的数据通道进入CPU进行协议处理。CPU可通过控制通道控制协处理器和分组芯片工作,协处理器和分组芯片可分别通过事件通道向CPU101发送事件请求。其中,控制数据包中承载控制信息,与业务数据包不同,是通过分组芯片转发给CPU,可以包括协议数据包和/或管理数据包。协议数据包根据协议类型的不同,可实现不同的功能,可包括ARP(地址解析协议,AddressResolutionProtocol)消息,用以根据IP地址获取物理地址,比如,还可以是OSPF(开放式最短路径优先,OpenShortestPathFirst)消息,用于建立链路状态数据库,生成最短路径树。管理数据包可实现不同的管理功能,可包括SNMP(简单网络管理协议,SimpleNetworkManagementProtocol)消息,能够管理网络设备,及时发现并解决网络问题以及规划网络的增长,再比如,可以是TelNet(远程终端协议,TelecommunicationsNetwork)消息,可实现在本地计算机上控制远程主机工作。
本发明实施例中,为了实现对CPU利用率的控制,可对控制数据包进行分类,每种类别控制数据包具有各自的优先级。在设备运行过程中,可根据CPU当前的利用率,根据控制数据包优先级,利用抑制数据包对控制数据包进行挤占,从而对部分类别或全部类别的控制数据包的发送速率进行控制,进而实现对CPU利用率进行控制的目的。其中,本发明实施例中,控制数据包的发送速率是指控制数据包被发送到CPU的速率。
其中,所述抑制数据包为本发明实施例中定义的一种特殊类型的数据包,抑制数据包可由协处理器生成并发送给分组芯片,分组芯片处理完成抑制数据包后将其丢弃或者发送给协处理器,由协处理器将从分组芯片返回的抑制数据包丢弃。抑制数据包的优先级高于控制数据包的优先级,从而实现对控制数据包进行挤占的目的。
本发明实施例中,在分组芯片中,每种类别的控制数据包进入分组芯片后可首先进入对应的控制数据包缓存队列等待分组芯片处理。一个控制数据包缓存队列用来缓存同一类别的控制数据包。控制数据包缓存队列可以是优先级机制的缓存队列,即优先级高的数据包先于优先级低的数据包出队。
进一步地,还可针对每种类别的控制数据包定义CIR(CommittedInformationRate,保证信息速率或者为承诺信息速率),其中,一种类别的控制数据包的CIR的取值不超过CUP可接受的最大速率。可根据需要来设置不同类别的控制数据包的CIR,比如,根据每种类别的协议的CPU占用时间确定该类别控制数据包的CIR,优选地,优先级高的控制数据包的CIR大于优先级低的控制数据包的CIR。
基于图1所示的结构,本发明实施例提供的CPU利用率控制方案主要由协处理器并协同分组芯片来实现。
图2示出了本发明实施例提供的CPU利用率控制流程的示意图,该流程可在协议处理器侧实现。如图所示,该流程可包括:
步骤S101:探测CPU的利用率;
步骤S102:CPU的利用率大于或等于第一阈值;
其中,第一阈值用来衡量CPU的利用率的程度,如果步骤S101中探测出的CPU的利用率大于或等于该阈值,则表明当前CPU的利用率较高,需要对进入CPU的控制数据包的数量进行控制。第一阈值的取值可根据CPU的性能或者根据需要等多种因素进行设定,比如该第一阈值可取值为80%。
步骤S103:根据控制数据包的优先级确定需要加大流量抑制的控制数据包缓存队列,并提高向需要加大流量抑制的控制数据包缓存队列发送抑制数据包的速率。
其中,控制数据包中承载控制信息,通过分组芯片转发给CPU,分组芯片中包括N个控制数据包缓存队列,N为大于1的整数,一个控制数据包缓存队列中的抑制数据包的优先级高于该控制数据包缓存队列中的控制数据包的优先级,一个控制数据包缓存队列中的抑制数据包在从所在的控制数据包缓存队列出队后被丢弃,一个控制数据包缓存队列中的控制数据包被转发给CPU。
具体来说,步骤S103中,可按照控制数据包的优先级从低到高的顺序,确定需要加大流量抑制的控制数据包缓存队列。这样,可优先对低优先级的控制数据包的发送速率进行抑制,从而在降低CPU利用率的同时,尽量保证高优先级的控制数据包的发送,进而保证重要的事务优先处理。
进一步地,可按照控制数据包的优先级从低到高,从优先级最低的控制数据包缓存队列开始,增加发送抑制数据包的速率,直至将优先级最低的控制数据包的发送速率抑制为零。若此时CPU利用率仍大于第一阈值,则增加向优先级次低的控制数据包缓存队列发送抑制数据包的速率,直至将优先级次低的控制数据包的发送速率抑制为零。以此类推,直至将优先级最高的控制数据包的发送速率抑制为零。
优选地,为了保证CPU对事务的处理,步骤S103中对控制数据包的抑制过程可以分为两个处理阶段:第一处理阶段和第二处理阶段。第一处理阶段主要目的是针对发送速率大于最低保证速率的控制数据包,将其发送速率降低到该最低保证速率,在完成第一处理阶段的基础上,若CPU的利用率仍没有降低到预期的程度,比如低于第一阈值,则进入第二处理阶段。第二处理阶段的主要目的是针对发送速率等于最低保证速率的控制数据包,将其发送速率降低到零。
在控制数据包的抑制过程的第一处理阶段中,可针对控制数据包发送速率大于最低保证速率的控制数据包缓存队列,按照控制数据包优先级从低到高的顺序,向这些缓存队列发送抑制数据包,使这些缓存队列中的控制数据包的发送速率降低至最低保证速率,并当CPU的利用率降低到预期程度(比如第一阈值)或者针对所有控制数据包发送速率大于最低保证速率的控制数据包缓存队列均处理完成时,结束该第一处理阶段。
图3示例性地示出了一种控制数据包的抑制过程的第一处理阶段以及第二处理阶段的流程图。
为了描述方便,按照控制数据包发送缓存队列中所缓存的控制数据包优先级从低到高的顺序,将N个控制数据包缓存队列描述为第一缓存队列至第N缓存队列。
如图3所示,步骤S103中控制数据包抑制过程的第一处理阶段可以包括以下步骤:
步骤201:将i设置为1;
步骤202:判断第i缓存队列中的控制数据包的发送速率是否高于该控制数据包的最低保证速率,若是,则转入步骤203,否则转入步骤205;
步骤203:向第i缓存队列发送抑制数据包,向第i缓存队列发送抑制数据包的速率等于第i缓存队列中的控制数据包的发送速率减去该控制数据包的最低保证速率所得到的差值;
步骤204:探测CPU的利用率,若CPU的利用率大于或等于第一阈值,则转入步骤205,否则结束本次抑制过程的第一处理阶段的流程;
步骤205:将i递增1;
步骤206:若i≤N,则转入步骤202,否则,结束本次抑制过程的第一处理阶段的流程,进入抑制过程的第二处理阶段。
通过上述流程可以看出,按优先级从低到高的顺序,首先抑制低优先级控制数据包的发送速率,将该低优先级的控制数据包的速率抑制到该控制数据包的最低保证速率,然后探测CPU的利用率,若此时CPU利用率仍较高,则继续对更高优先级的控制数据包的发送速率进行抑制,如此重复以上步骤,直至将所有发送速率高于最低保证速率的控制数据包的发送速率均抑制到相应的最低保证速率。
抑制过程的第一阶段完成后,若CPU的利用率仍高于第一阈值,则继续执行抑制过程的第二阶段。
如图3所示,控制数据包抑制过程的第二处理阶段可以包括以下步骤:
步骤207:将i设置为1;
步骤208:增加向第i缓存队列发送抑制数据包的速率,以使第i缓存队列中的控制数据包的发送速率为零;
步骤209:探测CPU的利用率,若CPU的利用率大于或等于第一阈值,则转入步骤210,否则结束本次抑制过程的第二处理阶段,后续可继续对CPU的利用率进行探测,并根据探测到的CPU的利用率触发相应流程;
步骤210:将i递增1;
步骤211:若i≤N,则转入步骤208,否则结束本次抑制过程的第二处理阶段,后续可继续对CPU的利用率进行探测,并根据探测到的CPU的利用率触发相应流程。
进一步地,将所有控制数据包的速率均抑制为零后,CPU的利用率仍大于第一阈值,则可以发送用于指示CPU利用率高的告警指示。
通过上述流程可以看出,当所有控制数据包的发送速率均被抑制到最低保证速率,CPU的利用率仍大于第一阈值,则从优先级最低的控制数据包开始,将低优先级的控制数据包的发送速率降至零,然后探测CPU的利用率,若此时CPU利用率仍大于第一阈值,则按优先级从低到高的顺序,将更高优先级的控制数据包的发送速率降低至零,直至将所有控制数据包的发送速率降低至零。
通过上述抑制过程的两个处理阶段,首先将控制数据包速率抑制到最低保证速率,而不是直接将控制数据包速率完全抑制掉,在快速降低协议数据流对CPU产生的冲击,降低CPU利用率的同时,又可以尽可能地保障CPU对事务的处理。
如前所述,在抑制过程的第二处理阶段完成后,可继续对CPU的利用率进行探测,并根据探测到的CPU的利用率触发相应流程。比如,当探测到的CPU的利用率较低时,可触发扩张过程以提高控制数据包的发送速率。
具体来说,若CPU的利用率小于第二阈值,则可根据控制数据包的优先级确定需要降低流量抑制的控制数据包缓存队列,并降低向需要降低流量抑制的控制数据包缓存队列发送抑制数据包的速率。其中,第二阈值小于或等于第一阈值,第二阈值的取值可根据CPU的性能或者根据需要等多种因素进行设定,比如该第二阈值可取值为40%。
通过上述方法,在第二阈值小于第一阈值的情况下,可将CPU的利用率控制在第二阈值到第一阈值之间,使得CPU的利用率既不过高也不过低,避免了CPU利用率的过多调整,也保证了尽可能多的处理控制数据包。
优选地,可按照控制数据包的优先级从高到低的顺序,确定需要降低流量抑制的控制数据包缓存队列。这样,可优先对高优先级的控制数据包的发送速率解除抑制,尽量保证高优先级的控制数据包被发送到CPU,以保证高优先级事务的处理。
扩张过程同样可分为两个处理阶段:第一处理阶段和第二处理阶段。第一处理阶段主要目的是按照优先级从高到低的顺序,并按照设定的步长解除对控制数据包的发送速率的抑制,在完成第一处理阶段的基础上,若CPI的利用率仍没有提高到预期的程度,比如第二阈值,则进入第二处理阶段;第二处理阶段的主要目的是按照优先级从高到低的顺序,在对一种类别的控制数据包逐渐解除抑制直到完全解除抑制发送速率的抑制,直到CPU的利用率高于第二阈值为止。
图4示例性地示出了一种控制数据包的扩张过程的第一处理阶段以及第二处理阶段的流程图。
为了描述方便,按照控制数据包发送缓存队列中所缓存的控制数据包优先级从低到高的顺序,将N个控制数据包缓存队列描述为第一缓存队列至第N缓存队列。
如图4所示,控制数据包扩张过程中的第一处理阶段可以包括以下步骤:
步骤301:将i设置为N;
步骤302:判断第i缓存队列中的控制数据包的发送速率是否低于该控制数据包的最低保证速率,若是,则转入步骤303,否则转入步骤305;
步骤303:按照设定步长降低向第i缓存队列发送抑制数据包的速率,转入步骤304;其中,该步长的取值可根据需要预先设置,如果取值较小,则调整粒度较小,反之则调整粒度较大。
步骤304:探测CPU的利用率,若CPU的利用率小于或等于第二阈值,则转入步骤305,否则,结束本次扩张过程的第一处理阶段的流程;
步骤305:将i递减1;
步骤306:若i≥1,则转入步骤302,否则,结束本次扩张过程的第一处理阶段的流程,进入扩张过程的第二处理阶段。
进一步地,上述扩张过程中,若探测CPU的利用率高于第二阈值且低于第一阈值,则可以继续保持当前抑制数据包的发送速率不变。
通过上述流程可以看出,按优先级从高到低的顺序,遍历控制数据包缓存队列,若当前遍历到的控制数据包缓存队列中的控制数据包的发送速率低于最低保证速率,则降低向该控制数据包缓存队列发送抑制数据包的速率,从而使该控制数据包缓存队列中的控制数据包的发送速率得以提升,并继续遍历下一个控制数据包缓存队列,直到CPU的利用率达到第二阈值为止停止遍历过程。
扩张过程的第一处理阶段完成后,若CPU的利用率仍低于第二阈值,则继续执行扩张过程的第二处理阶段。
如图4所示,控制数据包扩张过程的第二处理阶段可以包括以下步骤:
步骤307:将i设置为N;
步骤308:判断向第i缓存队列发送抑制数据包的发送速率是否大于零,若是,则转入步骤309,否则转入步骤311;
步骤309:按照设定步长降低向第i缓存队列发送抑制数据包的速率;
步骤310:探测CPU的利用率,若CPU的利用率小于或等于第二阈值,则转入步骤311,否则结束本次扩张过程的第二处理阶段,后续可继续对CPU的利用率进行探测,并根据探测到的CPU的利用率触发相应流程;
步骤311:将i递减1;
步骤312:若i≥1,则转入步骤308,否则结束本次扩张过程的第二处理阶段,后续可继续对CPU的利用率进行探测,并根据探测到的CPU的利用率触发相应流程。
通过以上扩张过程的第二处理阶段的流程可以看出,若经过扩张过程的第一处理阶段后,CPU的利用率还未提升到第二阈值,则按优先级从高到低的顺序,遍历控制数据包缓存队列,将向当前遍历到的控制数据包缓存队列中的抑制数据包的发送速率按照设定步长逐渐降低,直到CPU的利用率达到第二阈值,否则,遍历下一个控制数据包缓存队列,并按照同样方式进行处理,直到CPU的利用率达到第二阈值或遍历完所有控制数据包缓存队列位置。
通过上述扩张过程的两个处理阶段,首先按照优先级从高到低的顺序将控制数据包速率提升,而不是直接将一种控制数据包速率完全解除抑制,从而保障CPU对各类型事务的处理,并进一步在CPU的利用率仍处于较低水平时,可按照优先级从高到低的顺序,将一种控制数据包的发送速率完全解除抑制后,再对下一个优先级的控制数据包的发送速率解除抑制,从而尽可能保证高优先级事务的处理。这样,在保证CPU的利用率不过高的情况下,又可以充分利用CPU,以尽可能地保障CPU对事务的处理。
上述控制数据包的抑制阶段和控制数据包的扩张阶段,均需要确定控制数据包的发送速率,本发明实施例根据一个控制数据包的CIR以及向相应的缓存队列发送抑制数据包的速率,计算一个控制数据包缓存队列中控制数据包的发送速率。具体来说,根据前述描述,同一个控制数据包缓存队列中,抑制数据包对控制数据包进行挤占,若第i缓存队列的保证信息速率为CIRi,则抑制数据包的发送速率和控制数据包的发送速率存在以下关系:
Rfi=CIRi-Dfi……………………………………………(1)
其中,Rfi为第i缓存队列中的控制数据包的发送速率,CIRi为第i缓存队列中的保证信息速率,Dfi为第i缓存队列中的抑制数据包的发送速率。
在另一种优选的实施例中,为了更准确更方便地确定控制数据包的发送速率,可由协处理器向分组芯片发送测量数据包,同一个缓存队列中测量数据包的优先级低于控制数据包的优先级,且测量数据包的目的地址为协处理器的地址,协处理器可通过测量数据包的发送速率和接收速率得出控制数据包的速率。这样,通过测量数据包回流的方式测出控制数据包的发送速率,这种方式配置简单,测量简单,无需通过读取分组芯片的寄存器,通过外部芯片自发自收的方式,即可以完成对控制数据包发送速率的测量。
具体地,限定测量数据包发送速率为缓存队列的CIR,第i缓存队列中的保证信息速率为CIRi,则测量数据包的发送速率和控制数据包的发送速率存在以下关系:
Rfi=CIRi-Hfi……………………………………………(2)
其中,Rfi为第i缓存队列中的控制数据包的发送速率,CIRi为第i缓存队列中的保证信息速率,Hfi为第i缓存队列中的测量数据包的接收速率,即单位时间内协处理器接收到的测量数据包回流的数量。特殊的,当Rfi≥CIRi时,测量数据包回流到协处理器的速率为0,即第i缓存队列中完全被控制数据包占满。
当协处理器向分组芯片发送抑制数据包后,同一个缓存队列中将同时存在控制数据包、抑制数据包和测量数据包,由于抑制数据包的优先级高于控制数据包的优先级,控制数据包的优先级又高于测量数据包的优先级,则第i缓存队列中的控制数据包的发送速率为:
Rfi=CIRi-Dfi-Hfi……………………………………………(3)
其中,Rfi为第i缓存队列中的控制数据包的发送速率,CIRi为第i缓存队列中的保证信息速率,Dfi为第i缓存队列中的抑制数据包的发送速率,Hfi为第i缓存队列中的测量数据包的接收速率。
本发明的上述实施例中,对CPU的利用率进行探测的方式可以有多种,下面给出一种优选的实现方式。
较佳地,本发明实施例中CPU的利用率可以通过以下方法测得:向CPU发送探测数据包,并接收CPU返回的所述探测数据包;根据探测数据包的发送时间和接收时间之差,得出探测数据包在所述CPU中的驻留时间;根据探测数据包在CPU中的驻留时间查询预先设置的驻留时间与CPU利用率的对应关系,得到CPU的利用率。
具体来说,探测CPU利用率,分为初始阶段和正常探测阶段两个阶段,主要是协处理器和CPU协同完成,分组芯片只起到转发数据包的作用。初始阶段,CPU屏蔽除协处理器接入端口之外的其它端口的收发数据包的能力,使CPU的工作负荷在较低水平;正常探测阶段,CPU正常工作,处理各类型任务,此时,CPU中的探测任务在所有任务中的优先级最低,这是为了保证其他任务在CPU中被优先处理,使得探测数据包在CPU中的驻留时间将其他任务对CPU的占用计算在内,以此通过探测数据包的驻留时间观测所有其他任务的执行时间。
图5示例性的示出了本发明实施例探测CPU利用率初始阶段的原理图。协处理器负责向CPU发送探测数据包,如在1S内向CPU连续发送P个探测数据包,在每个探测数据包上打上各个数据包的发送时间戳。CPU中存在探测任务,接到探测数据包后,将当前的CPU利用率放入探测数据包中,P个探测数据包可以得到P个时间点的CPU利用率,然后将探测数据包进行转发,通过分组芯片发送回协处理器。协处理器接收到P个探测数据包后,在每个探测数据包上分别打上接收时间戳,解析探测数据包,每个探测数据包的接收时间戳减去相应的发送时间戳得到该探测数据包在CPU中的驻留时间,由此,再根据探测数据包中的CPU利用率,得到了CPU利用率和驻留时间的对应关系t,如图6所示。如,当CPU利用率为10%时,驻留时间为10μs,当CPU利用率为40%时,驻留时间为40μs,当CPU利用率为60%时,驻留时间为60μs,由此得到CPU利用率和驻留时间之间的经验关系:(4),其中,M为CPU利用率,T为探测数据包在CPU中的驻留时间。由此经验关系公式,当知道驻留时间T时,即可得出CPU利用率M,或者,如果希望CPU的利用率M不超过阈值x(比如x为70%),可以求出驻留时间T不能超过tx(即70μs)。
正常探测阶段,协处理器以固定周期(如1s)向CPU发送一个探测数据包,并在探测数据包上打上发送时间戳,CPU接到探测数据包后,按次序将探测数据包放入等待处理的队列中,其中探测任务的优先级最低。因为探测数据包的驻留时间需将其它任务对CPU的占用计算在内,若探测任务的优先级较高,那么探测数据包会被优先处理,就无法通过驻留时间观测到CPU的整体繁忙程度。此阶段,CPU不需将当前的CPU利用率打入探测数据包中,只需将探测数据包发回协处理器即可,防止探测数据包给CPU增加额外的工作,加重CPU的繁忙程度。协处理器接收到探测数据包后再打上接收时间戳,通过接收时间戳和发送时间戳的得到探测数据包的驻留时间,再根据初始阶段得到的驻留时间和CPU利用率的对应关系t,得出CPU利用率。例如,根据上个例子的对应关系t,如果驻留时间为50μs,那么CPU利用率为50%。另外,协处理器需预先设定一个最大驻留时间,如200μs。因为,若CPU利用率很高,探测数据包就很长时间回不到协处理器,或者无法回到协处理器,当超过这个最大驻留时间之后,协处理器就认为此次探测CPU利用率为100%,并开始启动下次探测。
在探测CPU利用率的过程中,探测数据包在CPU和协处理器之间的发送需经过分组芯片,探测数据包在分组芯片中的优先级为最高,这是为了防止探测数据包在分组芯片中因其它数据包的干扰逗留过多时间甚至被分组芯片丢弃,从而协处理器得不到准确的探测数据包在CPU中的驻留时间。而如果探测数据包被分组芯片丢弃,在协处理器看来,就是探测数据包在CPU中被无限驻留,误认为CPU的利用率达到100%。
本发明实施例提供的CPU利用率控制策略,当CPU利用率高于预期的上限时,向缓存队列中增加发送抑制数据包,使CPU的利用率下降,当CPU利用率低于预期的下限时,降低缓存队列中抑制数据包,使CPU的利用率升高,使保证事务的及时处理。这是通过以下方式实现的,分组芯片提供ACL(访问控制列表,AccessControlList),可以对接收到的控制数据包进行查找分类,将其放入对应的控制数据包缓存队列中,每个缓存队列都会对其中的数据包速率进行限制。从效果上,可以看做是分组芯片使每种类型的控制数据包流过一个限速桶,如图7所示。控制数据包进入分组芯片后,ACL使不同类型的控制数据包分别通过相应的限速小桶,通过第i个限速小桶的数据包的速率最大为CIRi,即每个限速小桶都有一个最大流量。限速桶中,高优先级的数据流会对低优先级的数据流进行挤占,这里的数据流即为一定时间内通过限速桶的数据包的总量。本发明实施例中的协处理器针对不同类型的控制数据包,向分组芯片发送不同速率的抑制数据包,其中抑制数据包的优先级高于控制数据包的优先级。分组芯片使抑制数据包流入相应的控制数据包所在的限速小桶,由于抑制数据流的优先级比较高,抑制数据流会对协议数据流进行挤占,从而达到抑制协议数据流的目的。
进一步地,在对每种类型的控制数据包设置限速小桶的基础上,还可对进入CPU的所有控制数据包设置一个限速大桶,即当所有类型的控制数据包分别从各自的小桶中出来后,使其全部流入限速大桶中,如图8所示。这是考虑到当CPU利用率超过第三阈值(第三阈值大于第一阈值)时,可优先使用限速大桶将进入CPU的控制数据包速率降下来。限速大桶的原理与小桶类似,都是高优先级的数据流对低优先级的数据流进行挤占,因此,设置流入限速大桶的抑制数据包的优先级高于所有控制数据包的优先级,测量数据包的优先级低于所有控制数据包的优先级。在限速大桶中,测量数据包和抑制数据包的速率之和CPU的利用率有关,不关心具体控制数据包的速率,限速小桶分别进行计算,限速小桶进行每种类型的控制数据包的速率的精细计算,限速大桶进行所有控制数据包进入CPU总速率的控制。限速大桶负责将CPU的利用率降低到第三阈值之下,限速小桶负责将CPU的利用率降低到第一阈值之下。
为了更清楚地理解本发明,下面以具体实例对上述流程进行详细描述。该具体实例所描述的流程可以分为初始化A、探测过程B1和B2、抑制过程C以及扩张过程D,如图9所示。
初始化A:对所有参数初始化。具体地,抑制过程和扩张过程都初始化为1,即代表是从抑制过程的第一阶段或扩张过程的第一阶段开始执行。find_i为抑制阶段的优先级查找变量,若有N个类型的控制数据包,每一种类型的控制数据包有一个优先级,如ARP(地址解析协议,AddressResolutionProtocol)和APS(自动保护倒换,AutomaticProtectionSwitched)之间优先级不同,ARP的优先级为1,APS的优先级为2,设定find_i初始化为1,表示从抑制阶段从优先级最低的一种类型的控制数据包开始查找测量,即优先级低的控制数据包在抑制阶段会被先抑制。add_i为扩张阶段的优先级查找变量,初始化为N,表示扩张阶段从优先级最高的控制数据包开始。将长期繁忙告警指示初始化为0,表示CPU当前没有处在长期繁忙状态。执行完初始化后,执行探测过程B1。
步骤B1:探测CPU利用率。具体地,根据之前的描述可以得知,可以由探测数据包在CPU中的驻留时间T以及经验公式得出CPU利用率M,故只需测出探测数据包的驻留时间T。
步骤B2:将T与tM1、tM2进行比较,若T>tM1,则执行流程C,即抑制过程;若T<tM2,则执行流程D,即扩张过程。
抑制过程具体可分为以下步骤,如图10所示,其中,步骤C3~C9为抑制过程第一阶段,步骤C10~C15为抑制过程第二阶段:
步骤C1:首先将扩张过程的变量初始化一遍,为转为执行扩张过程做好准备。具体地,扩张阶段=1,add_i=N,表示从抑制过程转为扩张过程时,首先执行扩张过程的第一阶段,且从优先级最高的控制数据包开始执行。
步骤C2:判断进行抑制过程的第一阶段还是第二阶段,若为第一阶段,则执行步骤C3;若为第二阶段,则执行步骤C10。
步骤C3:将长期繁忙告警指示标记为0。因为目前执行的是抑制过程第一阶段,还有方法将CPU的利用率降下来,因此没有必要进行长期繁忙告警。
步骤C4:测量第i优先级控制数据包的速率。由于在初始化过程中,find_i初始化为1,故在抑制过程中,从优先级最低的控制数据包开始测量。
步骤C5:判断第i优先级控制数据包的速率是否大于该控制数据包的最低保证带宽,若是,则执行步骤C6;若否,则执行步骤C7。
步骤C6:向第i优先级控制数据包发送抑制数据包,将该控制数据包的速率抑制到相应的最低保证带宽。
步骤C7:find_i加1,即转到下一优先级的控制数据包。
步骤C8:判断find_i是否大于N,若是,则执行步骤C9;若否,则执行步骤B1。
步骤C9:将抑制阶段设置为2,find_i设置为1,然后执行步骤B1。具体来说,上一步判断为“是”,表明已将所有优先级的控制数据包的速率均抑制到最低保证带宽,若此时CPU的利用率仍大于阈值,则需转到抑制过程的第二阶段,重新从最低优先级开始抑制。反过来,若上一步判断为“否”,表明仍有控制数据包的速率未被抑制到最低保证带宽,可以继续抑制下一优先级的控制数据包。
步骤C10:向第i优先级控制数据包发送抑制数据包,将该控制数据包的速率抑制为零。
步骤C11:find_i加1,即转到下一优先级的控制数据包。
步骤C12:判断find_i是否大于N,若是,则执行步骤C13;若否,则执行步骤B1。
步骤C13:将find_i设置为N,并将长期繁忙告警指示加1,然后执行步骤C14。具体来说,当将最高优先级控制数据包的速率抑制为零后,将长期繁忙告警指示进行加1操作,表明通过前面的抑制,没有很好的效果,CPU的利用率仍大于阈值M,此时已为抑制过程的第二阶段,且所有控制数据包的速率都已被抑制为0,仍处于抑制过程,说明CPU还是很繁忙,需要把长期繁忙告警指示进行增加。
步骤C14:判断长期繁忙告警指示是否大于阈值L,若是,则执行步骤C15,若否,则执行步骤B1,其中L为大于0的整数。
步骤C15:发送长期繁忙告警,并转到步骤B1。
由此,抑制过程已介绍完毕,下面介绍扩张过程,如图11所示,可分为以下步骤,其中,步骤D3~D8为扩张过程第一阶段,步骤D9~D13为扩张过程第二阶段。
步骤D1:首先将抑制过程的变量初始化一遍,为转为执行抑制过程做好准备。具体地,抑制阶段=1,find_i=1,表示从扩张过程转为抑制过程时,首先执行抑制过程的第一阶段,且从优先级最低的控制数据包开始执行。
步骤D2:判断进行扩张过程的第一阶段还是第二阶段,若为第一阶段,则执行步骤D3;若为第二阶段,则执行步骤D9。
步骤D3:测量第i优先级控制数据包的速率。由于在初始化过程中,add_i初始化为N,故在扩张过程中,从优先级最高的控制数据包开始测量。
步骤D4:判断第i优先级控制数据包的速率是否大于该控制数据包的最低保证带宽,若是,则执行步骤D5;若否,则执行步骤D6。
步骤D5:减少向第i优先级控制数据包发送一个抑制数据包,然后执行步骤B1。效果上,可以使第i优先级的控制数据包的速率缓慢上升到相应的最低保证带宽,然后换一个优先级的控制数据包执行后面的步骤。
步骤D6:add_i减一,即转到下一优先级较低的控制数据包。
步骤D7:判断add_i是否小于1,若是,则执行步骤D8;若否,则执行步骤B1。
步骤D8:将扩张阶段设置为2,add_i设置为N,然后执行步骤B1。具体来说,上一步判断为“是”,表明已使所有优先级的控制数据包的速率升到最低保证带宽,若此时CPU的利用率仍小于阈值,则需转到扩张过程的第二阶段,重新从最高优先级开始减少抑制。反过来,若上一步判断为“否”,表明仍有控制数据包的速率未升到最低保证带宽,可以继续减少抑制下一优先级的控制数据包。
步骤D9:减少向第i优先级控制数据包发送一个抑制数据包。
步骤D10:判断向第i优先级控制数据包发送的抑制数据包是否已降为零,若是,则执行步骤D11;若否,则执行步骤B1。
步骤D11:add_i减1,即转到下一优先级的控制数据包。具体来说,之前向第i优先级控制数据包发送的抑制数据包已降为零,即不对第i优先级控制数据包发送抑制数据包,若此时CPU的利用率仍小于阈值,表明CPU仍处于空闲状态,则降低向下一优先级较低的控制数据包发送抑制数据包。
步骤D12:判断add_i是否小于1,若是,则执行步骤D13;若否,则执行步骤B1。
步骤D13:将add_i设置为1,然后执行步骤B1。
本发明实施例的控制方法,提供了一种两步控制策略,且针对抑制过程和扩张过程采用不同的控制程度,能够快速降低过多数据包对CPU的冲击,缓慢增加CPU处理载荷的能力,对CPU提供了很好的保护。同时,能够兼顾不同协议的优先级,使高优先级的控制数据包被后抑制先恢复处理。
基于相同的技术构思,本发明实施例还提供一种CPU利用率控制装置,图12示出了控制CPU利用率的系统示意图,CPU利用率控制装置如图12中的Ⅰ所示,包括:探测模块1、判断模块2和抑制模块3;
所述探测模块1,用于探测中央处理器CPU的利用率;
所述判断模块2,用于判断所述CPU的利用率是否大于或等于第一阈值;
所述抑制模块3,用于当所述CPU的利用率大于或等于所述第一阈值时,根据控制数据包的优先级确定需要加大流量抑制的控制数据包缓存队列,并提高向所述需要加大流量抑制的控制数据包缓存队列发送抑制数据包的速率;其中,所述分组芯片中包括N个控制数据包缓存队列,N为大于1的整数,一个控制数据包缓存队列中的抑制数据包的优先级高于该缓存队列中的控制数据包的优先级,一个控制数据包缓存队列中的抑制数据包在从所在的控制数据包缓存队列出队后被丢弃,一个控制数据包缓存队列中的控制数据包被转发给所述CPU。
较佳地,所述抑制模块3用于:按照控制数据包的优先级从低到高的顺序,确定需要加大流量抑制的控制数据包缓存队列。
较佳地,按照所缓存的控制数据包优先级从低到高的顺序,所述N个控制数据包缓存队列包括第一缓存队列至第N缓存队列;
所述抑制模块3具体用于执行以下步骤:
步骤201:将i设置为1;
步骤202:判断第i缓存队列中的控制数据包的发送速率是否高于所述控制数据包的最低保证速率,若是,则转入步骤203,否则转入步骤205;
步骤203:向第i缓存队列发送抑制数据包,向第i缓存队列发送抑制数据包的速率等于第i缓存队列中的控制数据包的发送速率减去所述控制数据包的最低保证速率所得到的差值;
步骤204:探测所述CPU的利用率,若所述CPU的利用率大于或等于所述第一阈值,则转入步骤205;
步骤205:将i递增1;
步骤206:若i≤N,则转入步骤202。
较佳地,所述抑制模块3还用于执行以下步骤:
所述步骤205中,若i>N,则转入步骤207;
步骤207:将i设置为1;
步骤208:增加向第i缓存队列发送抑制数据包的速率,向第i缓存队列发送抑制数据包增加的速率等于第i缓存队列中的控制数据包的发送速率;
步骤209:探测所述CPU的利用率,若所述CPU的利用率大于或等于所述第一阈值,则转入步骤210;
步骤210:将i递增1;
步骤211:若i≤N,则转入步骤208。
较佳地,所述抑制模块3还用于:
所述步骤211中,若i>N,则发送用于指示CPU利用率高的告警指示。
较佳地,所述抑制模块3还用于:
若所述CPU的利用率小于第二阈值,则根据控制数据包的优先级确定需要降低流量抑制的控制数据包缓存队列,并降低向所述需要降低流量抑制的控制数据包缓存队列发送抑制数据包的速率;其中,所述第二阈值小于或等于所述第一阈值。
较佳地,所述抑制模块3还用于:按照控制数据包的优先级从高到低的顺序,确定需要降低流量抑制的控制数据包缓存队列。
较佳地,所述N个缓存队列的优先级彼此各不相同,按照优先级从低到高的顺序,所述N个缓存队列包括第一缓存队列至第N缓存队列;
所述抑制模块3具体用于执行以下步骤:
步骤301:将i设置为N;
步骤302:判断第i缓存队列中的控制数据包的发送速率是否低于所述控制数据包的最低保证速率,若是,则转入步骤303,否则转入步骤305;
步骤303:按照设定步长降低向第i缓存队列发送抑制数据包的速率,转入步骤304;
步骤304:探测所述CPU的利用率,若所述CPU的利用率小于或等于所述第二阈值,则转入步骤302;
步骤305:将i递减1;
步骤306:若i≥1,则转入步骤302。
较佳地,所述抑制模块还用于执行以下步骤:
所述步骤306中,若i<1,则转入步骤307;
步骤307:将i设置为N;
步骤308:判断第i缓存队列发送抑制数据包的速率是否大于零,若是,则转入步骤309,否则转入步骤311;
步骤309:按照设定步长降低向第i缓存队列发送抑制数据包;
步骤310:探测所述CPU的利用率,若所述CPU的利用率小于或等于所述第二阈值,则转入步骤311;
步骤311:将i递减1;
步骤312:若i≥1,则转入步骤308。
较佳地,装置还包括测量模块4,如图13中的Ⅱ所示,测量模块4用于测量所述控制数据包的发送速率,所述第i缓存队列中的控制数据包的发送速率为:
Rfi=CIRi-Dfi-Hfi
其中,Rfi为第i缓存队列中的控制数据包的发送速率,CIRi为第i缓存队列中的保证信息速率,Dfi为第i缓存队列中的抑制数据包的发送速率,Hfi为第i缓存队列中的测量数据包的接收速率;一个缓存队列中的测量数据包的优先级低于该缓存队列中的控制数据包的优先级。
较佳地,探测模块1具体用于:
向所述CPU发送探测数据包,并接收所述CPU返回的所述探测数据包;
根据所述探测数据包的发送时间和接收时间之差,得出所述探测数据包在所述CPU中的驻留时间;
根据所述探测数据包在所述CPU中的驻留时间查询预先设置的驻留时间与CPU利用率的对应关系,得到所述CPU的利用率。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (22)
1.一种CPU利用率控制方法,其特征在于,包括:
探测中央处理器CPU的利用率;
判断所述CPU的利用率是否大于或等于第一阈值;
若是,则根据控制数据包的优先级确定需要加大流量抑制的控制数据包缓存队列,并提高向所述需要加大流量抑制的控制数据包缓存队列发送抑制数据包的速率;其中,所述控制数据包中承载控制信息,通过分组芯片转发给CPU,所述分组芯片中包括N个控制数据包缓存队列,N为大于1的整数,一个控制数据包缓存队列中的抑制数据包的优先级高于该缓存队列中的控制数据包的优先级,一个控制数据包缓存队列中的抑制数据包在从所在的控制数据包缓存队列出队后被丢弃,一个控制数据包缓存队列中的控制数据包被转发给所述CPU。
2.如权利要求1所述的方法,其特征在于,所述根据分组芯片中的控制数据包缓存队列的优先级确定需要加大流量抑制的控制数据包缓存队列,包括:
按照控制数据包的优先级从低到高的顺序,确定需要加大流量抑制的控制数据包缓存队列。
3.如权利要求2所述的方法,其特征在于,按照所缓存的控制数据包优先级从低到高的顺序,所述N个控制数据包缓存队列包括第一缓存队列至第N缓存队列;
所述按照控制数据包的优先级从低到高的顺序确定需要加大流量抑制的控制数据包缓存队列,并提高向所述需要加大流量抑制的控制数据包缓存队列发送抑制数据包的速率,包括:
步骤201:将i设置为1;
步骤202:判断第i缓存队列中的控制数据包的发送速率是否高于所述控制数据包的最低保证速率,若是,则转入步骤203,否则转入步骤205;
步骤203:向第i缓存队列发送抑制数据包,向第i缓存队列发送抑制数据包的速率等于第i缓存队列中的控制数据包的发送速率减去所述控制数据包的最低保证速率所得到的差值;
步骤204:探测所述CPU的利用率,若所述CPU的利用率大于或等于所述第一阈值,则转入步骤205;
步骤205:将i递增1;
步骤206:若i≤N,则转入步骤202。
4.如权利要求3所述的方法,其特征在于,还包括:
所述步骤206中,若i>N,则转入步骤207;
步骤207:将i设置为1;
步骤208:增加向第i缓存队列发送抑制数据包的速率,向第i缓存队列发送抑制数据包增加的速率等于第i缓存队列中的控制数据包的发送速率;
步骤209:探测所述CPU的利用率,若所述CPU的利用率大于或等于所述第一阈值,则转入步骤210;
步骤210:将i递增1;
步骤211:若i≤N,则转入步骤208。
5.如权利要求4所述的方法,其特征在于,还包括:
所述步骤211中,若i>N,则发送用于指示CPU利用率高的告警指示。
6.如权利要求1所述的方法,其特征在于,还包括:
若所述CPU的利用率小于第二阈值,则根据控制数据包的优先级确定需要降低流量抑制的控制数据包缓存队列,并降低向所述需要降低流量抑制的控制数据包缓存队列发送抑制数据包的速率;其中,所述第二阈值小于或等于所述第一阈值。
7.如权利要求6所述的方法,其特征在于,所述根据控制数据包的优先级确定需要降低流量抑制的控制数据包缓存队列,包括:
按照控制数据包的优先级从高到低的顺序,确定需要降低流量抑制的控制数据包缓存队列。
8.如权利要求7所述的方法,其特征在于,所述N个缓存队列的优先级彼此各不相同,按照优先级从低到高的顺序,所述N个缓存队列包括第一缓存队列至第N缓存队列;
所述按照所述分组芯片中的缓存队列的优先级从高到低的顺序确定需要降低流量抑制的缓存队列,并降低向所述需要降低流量抑制的缓存队列发送抑制数据包的速率,包括:
步骤301:将i设置为N;
步骤302:判断第i缓存队列中的控制数据包的发送速率是否低于所述控制数据包的最低保证速率,若是,则转入步骤303,否则转入步骤305;
步骤303:按照设定步长降低向第i缓存队列发送抑制数据包的速率,转入步骤304;
步骤304:探测所述CPU的利用率,若所述CPU的利用率小于或等于所述第二阈值,则转入步骤302;
步骤305:将i递减1;
步骤306:若i≥1,则转入步骤302。
9.如权利要求8所述的方法,其特征在于,还包括:
所述步骤306中,若i<1,则转入步骤307;
步骤307:将i设置为N;
步骤308:判断第i缓存队列发送抑制数据包的速率是否大于零,若是,则转入步骤309,否则转入步骤311;
步骤309:按照设定步长降低向第i缓存队列发送抑制数据包;
步骤310:探测所述CPU的利用率,若所述CPU的利用率小于或等于所述第二阈值,则转入步骤311;
步骤311:将i递减1;
步骤312:若i≥1,则转入步骤308。
10.如权利要求3、4、5、8、9中任一项所述的方法,其特征在于,所述第i缓存队列中的控制数据包的发送速率为:
Rfi=CIRi-Dfi-Hfi
其中,Rfi为第i缓存队列中的控制数据包的发送速率,CIRi为第i缓存队列中的保证信息速率,Dfi为第i缓存队列中的抑制数据包的发送速率,Hfi为第i缓存队列中的测量数据包的接收速率;一个缓存队列中的测量数据包的优先级低于该缓存队列中的控制数据包的优先级。
11.如权利要求1至9中任一项所述的方法,其特征在于,所述探测CPU的利用率,包括:
向所述CPU发送探测数据包,并接收所述CPU返回的所述探测数据包;
根据所述探测数据包的发送时间和接收时间之差,得出所述探测数据包在所述CPU中的驻留时间;
根据所述探测数据包在所述CPU中的驻留时间查询预先设置的驻留时间与CPU利用率的对应关系,得到所述CPU的利用率。
12.一种CPU利用率控制装置,其特征在于,包括:探测模块、判断模块和抑制模块;
所述探测模块,用于探测中央处理器CPU的利用率;
所述判断模块,用于判断所述CPU的利用率是否大于或等于第一阈值;
所述抑制模块,用于当所述CPU的利用率大于或等于所述第一阈值时,根据控制数据包的优先级确定需要加大流量抑制的控制数据包缓存队列,并提高向所述需要加大流量抑制的控制数据包缓存队列发送抑制数据包的速率;其中,所述控制数据包中承载控制信息,通过分组芯片转发给CPU,所述分组芯片中包括N个控制数据包缓存队列,N为大于1的整数,一个控制数据包缓存队列中的抑制数据包的优先级高于该缓存队列中的控制数据包的优先级,一个控制数据包缓存队列中的抑制数据包在从所在的控制数据包缓存队列出队后被丢弃,一个控制数据包缓存队列中的控制数据包被转发给所述CPU。
13.如权利要求12所述的装置,其特征在于,所述抑制模块还用于:
按照控制数据包的优先级从低到高的顺序,确定需要加大流量抑制的控制数据包缓存队列。
14.如权利要求13所述的装置,其特征在于,按照所缓存的控制数据包优先级从低到高的顺序,所述N个控制数据包缓存队列包括第一缓存队列至第N缓存队列;
所述抑制模块具体用于执行以下步骤:
步骤201:将i设置为1;
步骤202:判断第i缓存队列中的控制数据包的发送速率是否高于所述控制数据包的最低保证速率,若是,则转入步骤203,否则转入步骤205;
步骤203:向第i缓存队列发送抑制数据包,向第i缓存队列发送抑制数据包的速率等于第i缓存队列中的控制数据包的发送速率减去所述控制数据包的最低保证速率所得到的差值;
步骤204:探测所述CPU的利用率,若所述CPU的利用率大于或等于所述第一阈值,则转入步骤205;
步骤205:将i递增1;
步骤206:若i≤N,则转入步骤202。
15.如权利要求14所述的装置,其特征在于,所述抑制模块还用于执行以下步骤:
所述步骤206中,若i>N,则转入步骤207;
步骤207:将i设置为1;
步骤208:增加向第i缓存队列发送抑制数据包的速率,向第i缓存队列发送抑制数据包增加的速率等于第i缓存队列中的控制数据包的发送速率;
步骤209:探测所述CPU的利用率,若所述CPU的利用率大于或等于所述第一阈值,则转入步骤210;
步骤210:将i递增1;
步骤211:若i≤N,则转入步骤208。
16.如权利要求15所述的装置,其特征在于,所述抑制模块还用于:
所述步骤211中,若i>N,则发送用于指示CPU利用率高的告警指示。
17.如权利要求12所述的装置,其特征在于,所述抑制模块还用于:
若所述CPU的利用率小于第二阈值,则根据控制数据包的优先级确定需要降低流量抑制的控制数据包缓存队列,并降低向所述需要降低流量抑制的控制数据包缓存队列发送抑制数据包的速率;其中,所述第二阈值小于或等于所述第一阈值。
18.如权利要求17所述的装置,其特征在于,所述抑制模块还用于:
按照控制数据包的优先级从高到低的顺序,确定需要降低流量抑制的控制数据包缓存队列。
19.如权利要求18所述的装置,其特征在于,所述N个缓存队列的优先级彼此各不相同,按照优先级从低到高的顺序,所述N个缓存队列包括第一缓存队列至第N缓存队列;
所述抑制模块具体用于执行以下步骤:
步骤301:将i设置为N;
步骤302:判断第i缓存队列中的控制数据包的发送速率是否低于所述控制数据包的最低保证速率,若是,则转入步骤303,否则转入步骤305;
步骤303:按照设定步长降低向第i缓存队列发送抑制数据包的速率,转入步骤304;
步骤304:探测所述CPU的利用率,若所述CPU的利用率小于或等于所述第二阈值,则转入步骤302;
步骤305:将i递减1;
步骤306:若i≥1,则转入步骤302。
20.如权利要求19所述的装置,其特征在于,所述抑制模块还用于执行以下步骤:
所述步骤306中,若i<1,则转入步骤307;
步骤307:将i设置为N;
步骤308:判断第i缓存队列发送抑制数据包的速率是否大于零,若是,则转入步骤309,否则转入步骤311;
步骤309:按照设定步长降低向第i缓存队列发送抑制数据包;
步骤310:探测所述CPU的利用率,若所述CPU的利用率小于或等于所述第二阈值,则转入步骤311;
步骤311:将i递减1;
步骤312:若i≥1,则转入步骤308。
21.如权利要求14、15、16、19、20中任一项所述的装置,其特征在于,还包括测量模块,用于测量所述控制数据包的发送速率,所述第i缓存队列中的控制数据包的发送速率为:
Rfi=CIRi-Dfi-Hfi
其中,Rfi为第i缓存队列中的控制数据包的发送速率,CIRi为第i缓存队列中的保证信息速率,Dfi为第i缓存队列中的抑制数据包的发送速率,Hfi为第i缓存队列中的测量数据包的接收速率;一个缓存队列中的测量数据包的优先级低于该缓存队列中的控制数据包的优先级。
22.如权利要求12至20中任一项所述的装置,其特征在于,所示探测模块具体用于:
向所述CPU发送探测数据包,并接收所述CPU返回的所述探测数据包;
根据所述探测数据包的发送时间和接收时间之差,得出所述探测数据包在所述CPU中的驻留时间;
根据所述探测数据包在所述CPU中的驻留时间查询预先设置的驻留时间与CPU利用率的对应关系,得到所述CPU的利用率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510476044.6A CN105159763B (zh) | 2015-08-05 | 2015-08-05 | 一种cpu利用率控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510476044.6A CN105159763B (zh) | 2015-08-05 | 2015-08-05 | 一种cpu利用率控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105159763A true CN105159763A (zh) | 2015-12-16 |
CN105159763B CN105159763B (zh) | 2018-08-07 |
Family
ID=54800626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510476044.6A Active CN105159763B (zh) | 2015-08-05 | 2015-08-05 | 一种cpu利用率控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105159763B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614305A (zh) * | 2018-12-11 | 2019-04-12 | 广东省新代通信与网络创新研究院 | 处理器的占用率获取方法、装置及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070230348A1 (en) * | 2006-04-04 | 2007-10-04 | Huawei Technologies Co., Ltd. | Method For Protecting Digital Subscriber Line Access Multiplexer, DSLAM And XDSL Single Service Board |
CN101141390A (zh) * | 2007-07-17 | 2008-03-12 | 武汉烽火网络有限责任公司 | 一种新型自定义以太网带外数据包过滤的方法及装置 |
CN101719928A (zh) * | 2009-11-24 | 2010-06-02 | 福建星网锐捷网络有限公司 | 一种队列调度调节方法、装置及交换机 |
CN102209028A (zh) * | 2011-05-06 | 2011-10-05 | 北京傲天动联技术有限公司 | 控制cpu流量的装置和方法 |
-
2015
- 2015-08-05 CN CN201510476044.6A patent/CN105159763B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070230348A1 (en) * | 2006-04-04 | 2007-10-04 | Huawei Technologies Co., Ltd. | Method For Protecting Digital Subscriber Line Access Multiplexer, DSLAM And XDSL Single Service Board |
CN101141390A (zh) * | 2007-07-17 | 2008-03-12 | 武汉烽火网络有限责任公司 | 一种新型自定义以太网带外数据包过滤的方法及装置 |
CN101719928A (zh) * | 2009-11-24 | 2010-06-02 | 福建星网锐捷网络有限公司 | 一种队列调度调节方法、装置及交换机 |
CN102209028A (zh) * | 2011-05-06 | 2011-10-05 | 北京傲天动联技术有限公司 | 控制cpu流量的装置和方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614305A (zh) * | 2018-12-11 | 2019-04-12 | 广东省新代通信与网络创新研究院 | 处理器的占用率获取方法、装置及计算机可读存储介质 |
WO2020119826A1 (zh) * | 2018-12-11 | 2020-06-18 | 广东省新一代通信与网络创新研究院 | 处理器的占用率获取方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105159763B (zh) | 2018-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105183431A (zh) | 一种cpu利用率控制方法及装置 | |
US11968116B2 (en) | Method and system for facilitating lossy dropping and ECN marking | |
US11316795B2 (en) | Network flow control method and network device | |
CN103346922B (zh) | 基于sdn的确定网络状态的控制器及其确定方法 | |
CN103825823B (zh) | 基于不同优先级的软件定义网络中数据转发方法 | |
CN107005485A (zh) | 一种确定路由的方法、对应装置及系统 | |
WO2019196630A1 (zh) | 负载均衡的方法、设备及系统 | |
US7769002B2 (en) | Constrained dynamic path selection among multiple communication interfaces | |
CN101984608A (zh) | 报文拥塞避免方法及系统 | |
CN108881056A (zh) | 一种拥塞控制方法、网络设备及其网络接口控制器 | |
CN108471629A (zh) | 传输网络中业务服务质量的控制方法、设备及系统 | |
EP2670085B1 (en) | System for performing Data Cut-Through | |
Yan et al. | A survey of low-latency transmission strategies in software defined networking | |
US11165716B2 (en) | Data flow processing method and device | |
CN101789949B (zh) | 一种实现负荷分担的方法和路由设备 | |
EP2728812A1 (en) | Method and device for leaky bucket speed-limitation | |
WO2022213817A1 (zh) | 路由方法和路由装置 | |
EP4149066A1 (en) | Communication method and apparatus | |
CN112600684A (zh) | 云业务的带宽管理及配置方法及相关装置 | |
CN104734905A (zh) | 检测数据流的方法及装置 | |
US20200044956A1 (en) | Data Transmission Method and Apparatus | |
CN111740922B (zh) | 数据传输方法、装置、电子设备及介质 | |
CN114172849A (zh) | 一种基于博弈论的确定性流量整形方法 | |
CN105159763A (zh) | 一种cpu利用率控制方法及装置 | |
US11870707B2 (en) | Bandwidth management and configuration method for cloud service, and related apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |