一种多应用收包细粒度优先级控制系统和方法

文档序号:7988870阅读:124来源:国知局
专利名称:一种多应用收包细粒度优先级控制系统和方法
技术领域
本发明属于网络数据处理领域,具体讲涉及一种多应用收包细粒度优先级控制系统和方法。
背景技术
在网络数据采集系统中,经常有多个应用从报文缓冲区队列收包,不同应用有不同的优先级,正常情况下,每个应用从缓冲区队列中依次读取每个缓冲区的报文,当系统负载较重时,低优先级的应用需要主动跳过一部分报文的处理,把系统资源让给高优先级的应用。现有的技术方案中,低优先级的应用跳过的缓冲区个数是固定的,可能是一个缓冲区,或者整个缓冲区队列的所有缓冲区,或两者之间的一个固定的步长。在网络流量变化剧烈的应用环境中,随着当前流量的大小变化,系统资源占用情况也会不断变化,而现有技术方案中跳过固定个数的缓冲区的方法,无法根据当前系统资源占用情况调整跳过缓冲区的个数,导致应用优先级控制的粒度太粗问题;而且当系统负载较大时,跳过缓冲区的个数相对于系统负载可能偏小,当系统负载较小时,跳过缓冲区的个数相对于系统负载可能偏大,会导致系统资源占用情况的剧烈波动的问题。

发明内容
为克服上述缺陷,本发明提供了一种收包细粒度优先级控制系统和方法,使用动态调整应用跳过缓冲区个数的方法,实现细粒度的优先级控制。为实现上述目的,本发明提供一种多应用收包细粒度优先级控制系统,所述控制系统包括配置模块和需要读取报文数据的缓冲区,其改进之处在于,从所述缓冲区中读取报文数据的数据读取模块、阈值比较模块和缓冲区跳过计算模块;所述数据读取模块、所述阈值比较模块和所述缓冲区跳过计算模块依次连接;所述配置模块中存储有表示所述数据读取模块优先级的负载阈值ThresholdLoad ;所述缓冲区的缓冲区总数为TotalNum、可用缓冲区个数为AvailableNum。本发明提供的优选技术方案中,所述数据读取模块,从所述配置模块中读取与其对应的负载阈值ThresholdLoad,并将负载阈值ThresholdLoad发送到所述阈值比较模块。本发明提供的第二优选技术方案中,所述负载阈值ThresholdLoad是所述数据读取模块占用系统资源的百分比。本发明提供的第三优选技术方案中,在每次读取缓冲区之前,所述阈值比较模块将系统的当前负载CurrentLoad和负载阈值ThresholdLoad比较,并判断是依次读取缓冲区还是将当前负载CurrentLoad和负载阈值ThresholdLoad传输到所述缓冲区跳过计算模块。本发明提供的第四优选技术方案中,所述缓冲区跳过计算模块,需要根据缓冲区总数TotalNum,计算需要跳过的缓冲区的个数SkipNum ;计算方法为SkipNum =TotalNumX (1 -Thresho 1 dLoad/CurrentLoad);并将需要跳过的缓冲区的个数 SkipNum 传递给所述数据读取模块。本发明提供的第五优选技术方案中,在所述缓冲区跳过计算模块中,比较SkipNum 和可用缓冲区个数AvailableNum,如果SkipNum大于AvailableNum,则令SkipNum = AvailableNum0本发明提供的第六优选技术方案中,提供一种多应用收包细粒度优先级控制方法,其改进之处在于,所述方法包括如下步骤(1).利用所述数据读取模块从所述配置模块中读取与其对应的负载阈值 ThresholdLoad,并将负载阈值ThresholdLoad发送到所述阈值比较模块;(2).利用所述阈值比较模块从所述缓冲区中读取报文,在每次读取缓冲区之前, 把系统的当前负载CurrentLoad和负载阈值IliresholdLoad比较,如果CurrentLoad小于等于I^hresho 1 dLoad,则依次读取缓冲区,否则,将当前负载CurrentLoad和负载阈值 ThresholdLoad传输到所述缓冲区跳过计算模块;(3).所述缓冲区跳过计算模块,计算需要跳过的缓冲区的个数SkipNum ;并将需要跳过的缓冲区的个数SkipNum传递给所述数据读取模块;(4).所述数据读取模块跳过SkipNum个缓冲区后,从新的位置开始读取数据。本发明提供的第七优选技术方案中,在所述步骤3中所述SkipNum = TotalNumX (1 -Thr e sho 1 dLoad/Curr entLoad);比较 SkipNum 和可用缓冲区个数 AvailableNum,如果 SkipNum 大于 AvailableNum,贝Ij令 SkipNum = AvailableNum。与现有技术比,本发明提供的一种多应用收包细粒度优先级控制系统和方法,使用动态调整应用跳过缓冲区个数的方法,实现细粒度的优先级控制;避免了跳过固定个数的缓冲区的方法,无法根据当前系统资源占用情况调整跳过缓冲区的个数所导致的应用优先级控制的粒度太粗的问题;再者,无论当系统负载较大时还是当系统负载较小时,跳过的缓冲区个数相对于系统负载都是适度的缓冲区大小,解决了系统资源的占用情况会剧烈波动的问题。


图1为收包细粒度优先级控制方法的流程图。
具体实施例方式本发明为从同一个缓冲区队列收包的每个应用软件,设置一个表示优先级的负载阈值,在O 100之间,表示系统资源占用的百分比,当系统当前负载不超过应用的负载阈值时,应用依次读取每个缓冲区,当系统当前负载超过应用的负载阈值时,应用跳过一定数量的缓冲区。每次跳过缓冲区的数量是动态计算的,计算公式为跳过缓冲区个数=缓冲区总数X (1-应用负载阈值/系统当前负载)。如果需要跳过的缓冲区个数大于当前可用的缓冲区个数,则设置跳过缓冲区个数为当前可用缓冲区个数。如图1所述,本发明的方法和过程如下(1)应用软件开始运行时,从配置模块中读取表示自己优先级的负载阈值 ThresholdLoado
(2)应用软件循环从缓冲区队列中读取报文,每次读取缓冲区之前,把系统的当前负载CurrentLoad和自己的负载阈值ThresholdLoad比较,如果CurrentLoad < = ThresholdLoad,则不需要跳过缓冲区,依次读取每个缓冲区。(3)如果 CurrentLoad > ThresholdLoad,则需要根据缓冲区总数 TotalNum, 计算需要跳过的缓冲区的个数 SkipNum, SkipNum = TotalNumX (I-ThresholdLoad/ CurrentLoad)。(4)比较 SkipNum 和可用缓冲区个数 AvailableNum,如果 SkipNum > AvailableNum,贝Ij令 SkipNum = AvailableNum。(5)应用软件跳过SkipNum个缓冲区后,从新的位置开始读取数据。—种收包细粒度优先级控制系统,所述控制系统包括配置模块和缓冲区;所述缓冲区中排列着需要读取的报文,在所述缓冲区中缓冲区总数为TotalNum、可用缓冲区个数为AvailableNum;其特征在于,从所述缓冲区中读取报文数据的数据读取模块、阈值比较模块、缓冲区跳过计算模块;所述数据读取模块、所述阈值比较模块和所述缓冲区跳过计算模块依次连接;所述配置模块中存储有表示所述数据读取模块优先级的负载阈值 ThresholdLoad0所述负载阈值ThresholdLoad,是所述数据读取模块占用系统资源的百分比。所述数据读取模块,从所述配置模块中读取与其对应的负载阈值ThresholdLoad, 并将负载阈值ThresholdLoad发送到所述阈值比较模块。所述阈值比较模块,在每次读取缓冲区之前,把系统的当前负载CurrentLoad和负载阈值I^hresho 1 dLoad比较,如果 CurrentLoad小于等于ThresholdLoad,则依次读取缓冲区,否则,将当前负载CurrentLoad 和负载阈值ThresholdLoad传输到所述缓冲区跳过计算模块。所述缓冲区跳过计算模块, 需要根据缓冲区总数TotalNum,计算需要跳过的缓冲区的个数SkipNum ;所述SkipNum = TotalNumX (1 -Thresho 1 dLoad/CurrentLoad);并将需要跳过的缓冲区的个数 SkipNum 传递给所述数据读取模块。其中,在所述缓冲区跳过计算模块中,比较SkipNum和可用缓冲区个数 AvailableNum,如果 SkipNum 大于 AvailableNum,贝Ij令 SkipNum = AvailableNum。收包细粒度优先级控制方法,具体包括如下步骤(1).利用所述数据读取模块从所述配置模块中读取与其对应的负载阈值 ThresholdLoad,并将负载阈值ThresholdLoad发送到所述阈值比较模块;(2).利用所述阈值比较模块从所述缓冲区中读取报文,在每次读取缓冲区之前, 把系统的当前负载CurrentLoad和负载阈值IliresholdLoad比较,如果CurrentLoad小于等于HiresholdLoad,则依次读取缓冲区,否则,将当前负载CurrentLoad和负载阈值 ThresholdLoad传输到所述缓冲区跳过计算模块;(3).利用所述缓冲区跳过计算模块,计算需要跳过的缓冲区的个数SkipNum ;并将需要跳过的缓冲区的个数SkipNum传递给所述数据读取模块;(4).所述数据读取模块跳过SkipNum个缓冲区后,从新的位置开始读取数据。其中,在所述步骤3 中所述 SkipNum = TotalNumX (I-ThresholdLoad/ CurrentLoad);比较SkipNum和可用缓冲区个数AvailableNum,如果SkipNum大于 AvailableNum,贝Ij令 SkipNum = AvailableNum。
需要声明的是,本发明内容及具体实施方式
意在证明本发明所提供技术方案的实际应用,不应解释为对本发明保护范围的限定。本领域技术人员在本发明的精神和原理启发下,可作各种修改、等同替换、或改进。但这些变更或修改均在申请待批的保护范围内。
权利要求
1.一种多应用收包细粒度优先级控制系统,所述控制系统包括配置模块和需要读取报文数据的缓冲区,其特征在于,从所述缓冲区中读取报文数据的数据读取模块、阈值比较模块和缓冲区跳过计算模块;所述数据读取模块、所述阈值比较模块和所述缓冲区跳过计算模块依次连接;所述配置模块中存储有表示所述数据读取模块优先级的负载阈值 ThresholdLoad ;所述缓冲区的缓冲区总数为TotalNum、可用缓冲区个数为AvailableNum。
2.根据权利要求1所述的控制系统,其特征在于,所述数据读取模块,从所述配置模块中读取与其对应的负载阈值ThresholdLoad,并将负载阈值ThresholdLoad发送到所述阈值比较模块。
3.根据权利要求1所述的控制系统,其特征在于,所述负载阈值ThresholdLoad是所述数据读取模块占用系统资源的百分比。
4.根据权利要求1所述的控制系统,其特征在于,在每次读取缓冲区之前,所述阈值比较模块将系统的当前负载CurrentLoad和负载阈值HiresholdLoad比较,并判断是依次读取缓冲区还是将当前负载CurrentLoad和负载阈值ThresholdLoad传输到所述缓冲区跳过计算模块。
5.根据权利要求1所述的控制系统,其特征在于,所述缓冲区跳过计算模块,需要根据缓冲区总数TotalNum,计算需要跳过的缓冲区的个数SkipNum ;计算方法为=SkipNum = TotalNumX (1 -Thresho 1 dLoad/CurrentLoad);并将需要跳过的缓冲区的个数 SkipNum 传递给所述数据读取模块。
6.根据权利要求5所述的控制系统,其特征在于,在所述缓冲区跳过计算模块中,比较 SkipNum 和可用缓冲区个数 AvailableNum,如果 SkipNum 大于 AvailableNum,则令 SkipNum =AvailableNum。
7.根据1-6项权利要求任一项所述的收包细粒度优先级控制系统的收包细粒度优先级控制方法,其特征在于,所述方法包括如下步骤(1).利用所述数据读取模块从所述配置模块中读取与其对应的负载阈值 ThresholdLoad,并将负载阈值ThresholdLoad发送到所述阈值比较模块;(2).利用所述阈值比较模块从所述缓冲区中读取报文,在每次读取缓冲区之前,把系统的当前负载CurrentLoad和负载阈值ThresholdLoad比较,如果CurrentLoad小于等于IlireshoIdLoad,则依次读取缓冲区,否则,将当前负载CurrentLoad和负载阈值 ThresholdLoad传输到所述缓冲区跳过计算模块;(3).所述缓冲区跳过计算模块,计算需要跳过的缓冲区的个数SkipNum;并将需要跳过的缓冲区的个数SkipNum传递给所述数据读取模块;(4).所述数据读取模块跳过SkipNum个缓冲区后,从新的位置开始读取数据。
8.根据权利要求7所述的控制系统,其特征在于,在所述步骤3中所述SkipNum =TotalNumX (1 -Thr e sho 1 dLoad/Curr entLoad);比较 SkipNum 和可用缓冲区个数 AvailableNum,如果 SkipNum 大于 AvailableNum,贝Ij令 SkipNum = AvailableNum。
全文摘要
本发明提供了一种多应用收包细粒度优先级控制系统和方法,从同一个缓冲区队列收包的每个应用软件,设置一个表示优先级的负载阈值,表示系统资源占用的百分比,当系统当前负载不超过应用的负载阈值时,应用依次读取每个缓冲区,当系统当前负载超过应用的负载阈值时,应用跳过一定数量的缓冲区。每次跳过缓冲区的数量是动态计算的,计算公式为跳过缓冲区个数=缓冲区总数x(1-应用负载阈值/系统当前负载)。如果需要跳过的缓冲区个数大于当前可用的缓冲区个数,则设置跳过缓冲区个数为当前可用缓冲区个数。本发明提供的多应用收包细粒度优先级控制系统和方法,使用动态调整应用跳过缓冲区个数的方法,实现细粒度的优先级控制。
文档编号H04L12/56GK102404223SQ20111038369
公开日2012年4月4日 申请日期2011年11月28日 优先权日2011年11月28日
发明者刘朝辉, 刘灿, 姬乃军, 窦晓光 申请人:曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1