对多队列的缓存空间进行分配控制的方法及装置制造方法

文档序号:8005367阅读:206来源:国知局
对多队列的缓存空间进行分配控制的方法及装置制造方法
【专利摘要】本发明公开了一种对多队列的缓存空间进行分配控制的方法及装置,本发明通过确定的需要分配待共享的缓存空间的队列个数为每个需要分配待共享的缓存空间的队列分配共享缓存空间,并随着需要分配待共享的缓存空间的队列个数的变化为每个需要分配待共享的缓存空间的队列分配共享缓存空间,实现了根据网络流量进行缓存空间自动调整分配,节约了硬件资源,有利于硬件实践,同时提高了缓存空间的利用率。
【专利说明】对多队列的缓存空间进行分配控制的方法及装置

【技术领域】
[0001]本发明涉及到缓存领域,特别涉及到一种对多队列的缓存空间进行分配控制的方法及装置。

【背景技术】
[0002]随着网络的普及,信息交流与信息共享成为人们日常生活中必不可少的一部分。而随着网络中交互信息(数据包)的不断增长,必然引起网络拥塞。因此,如何避免拥塞显得尤为重要,现在Internet (互联网)上使用得比较广泛的拥塞避免机制是RED (RandomEarly Discard,随机早期丢弃)机制。而RED机制的关键在于如何有效的使用有限的缓存资源,执行合理的丢弃,从而实现拥塞避免,保障网络的顺畅。
[0003]在现有的采用RED机制的RED装置的多队列缓存中,通常的分配缓存方式包括--方式一、使用的都是按照端口、队列的数量及队列的优先级来分配缓存的方式;方式二、采用指数移动加权平均算法并配合其他函数实现多队列共享缓存的方式。
[0004]然而,上述方式存在不可回避的缺陷:
[0005]缺陷一、采用上述方式一划分缓存比较简单,但由于各队列的缓存是预先分配,且分配完毕即是固定的,不能根据各队列实时网络流量进行自动调整,缓存利用率偏低,缺乏自适应性,并且也无法真正达到共享缓存的效果,因为分配好之后,每个队列能使用缓存的最大额度就是分配给自己的那一部分;
[0006]缺陷二、采用上述方式二进行共享缓存,在激活队列较少时,缓存利用率偏低,并且算法相对复杂,不利于硬件实现。


【发明内容】

[0007]本发明的主要目的为提供一种对多队列的缓存空间进行分配控制的方法及装置,旨在实现根据网络流量进行缓存自动调整分配,进而提高缓存空间的利用率。
[0008]本发明提出一种对多队列的缓存空间进行分配控制的方法,该方法包括:
[0009]分析各个队列中是否存在需要分配待共享的缓存空间的队列;
[0010]在存在需要分配待共享的缓存空间的队列时,确定需要分配待共享的缓存空间的队列的个数;
[0011]根据确定的需要分配待共享的缓存空间的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0012]优选地,所述根据确定的需要分配待共享的缓存空间的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列的步骤包括:
[0013]将所述待共享的缓存空间中预留出预设值的缓存空间,并将预留后剩余的缓存空间作为待分配的缓存空间;
[0014]根据确定的需要分配待共享的缓存空间的队列个数,将所述待分配的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0015]优选地,在所述分析各个队列中是否存在需要分配待共享的缓存空间的队列的步骤之前,该方法还包括:
[0016]将待独享的缓存空间分配给各个队列。
[0017]优选地,所述将待独享的缓存空间分配给各个队列的步骤之后,该方法还包括:
[0018]分析为各个队列分配的待独享的缓存空间是否满足各个队列的执行需要;
[0019]若有队列被分配的待独享的缓存空间不满足执行需要,则确定该队列为需要分配待共享的缓存空间的队列。
[0020]优选地,在所述将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列的步骤之后,该方法还包括:
[0021]分析为各个需要分配待共享的缓存空间的队列分配的共享缓存空间是否被占用;
[0022]当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一,并根据减一后的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0023]一种对多队列的缓存空间进行分配控制的装置,该装置包括:
[0024]分析模块,用于分析各个队列中是否存在需要分配待共享的缓存空间的队列;
[0025]处理模块,用于在存在需要分配待共享的缓存空间的队列时,确定需要分配待共享的缓存空间的队列的个数;
[0026]分配模块,用于根据确定的需要分配待共享的缓存空间的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0027]优选地,所述处理模块,还用于将所述待共享的缓存空间中预留出预设值的缓存空间,并将预留后剩余的缓存空间作为待分配的缓存空间;
[0028]所述分配模块,还用于根据确定的需要分配待共享的缓存空间的队列个数,将所述待分配的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0029]优选地,所述分配模块,还用于将待独享的缓存空间分配给各个队列。
[0030]优选地,所述分析模块,还用于分析为各个队列分配的待独享的缓存空间是否满足各个队列的执行需要;
[0031]所述处理模块,还用于若有队列被分配的待独享的缓存空间不满足执行需要,则确定该队列为需要分配待共享的缓存空间的队列。
[0032]优选地,所述分析模块,还用于分析为各个需要分配待共享的缓存空间的队列分配的共享缓存空间是否被占用;
[0033]所述处理模块,还用于当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一;
[0034]所述分配模块,还用于根据减一后的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0035]相对现有技术,通过确定的需要分配待共享的缓存空间的队列个数为每个需要分配待共享的缓存空间的队列分配共享缓存空间,并随着需要分配待共享的缓存空间的队列个数的变化为每个需要分配待共享的缓存空间的队列分配共享缓存空间,实现了根据网络流量进行缓存空间自动调整分配,节约了硬件资源,有利于硬件实践,同时提高了缓存空间的利用率。

【专利附图】

【附图说明】
[0036]图1为本发明对多队列的缓存空间进行分配控制的方法的第一实施例的具体流程图;
[0037]图2为本发明对多队列的缓存空间进行分配控制的方法的第二实施例的具体流程图;
[0038]图3为本发明对多队列的缓存空间进行分配控制的方法的第三实施例的具体流程图;
[0039]图4为本发明对多队列的缓存空间进行分配控制的方法的第四实施例的具体流程图;
[0040]图5为本发明对多队列的缓存空间进行分配控制的方法的第五实施例的具体流程图;
[0041]图6为本发明对多队列的缓存空间进行分配控制的装置的较佳实施例的具体架构图。
[0042]本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

【具体实施方式】
[0043]应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0044]如图1所示,为本发明对多队列的缓存空间进行分配控制的方法的第一实施例的具体流程图。
[0045]需要强调的是:图1所示流程图仅为一个较佳实施例,本领域的技术人员当知,任何围绕本发明思想构建的实施例都不应脱离于如下技术方案涵盖的范围:
[0046]分析各个队列中是否存在需要分配待共享的缓存空间的队列;在存在需要分配待共享的缓存空间的队列时,确定需要分配待共享的缓存空间的队列的个数;根据确定的需要分配待共享的缓存空间的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0047]以下是本实施例逐步实现对多队列的缓存进行控制的具体步骤:
[0048]步骤S11,分析各个队列中是否存在需要分配待共享的缓存空间的队列。
[0049]具体的,实时或定时分析各个队列是否需要分配待共享的缓存空间的队列。
[0050]步骤S12,在存在需要分配待共享的缓存空间的队列时,确定需要分配待共享的缓存空间的队列个数。
[0051]具体的,当存在需要分配待共享的缓存空间的队列时,确定需要分配待共享的缓存空间的队列个数;例如,当找出有3个需要分配待共享的缓存空间的队列时,即需要分配待共享的缓存空间的队列个数为3。
[0052]步骤S13,根据确定的需要分配待共享的缓存空间的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0053]具体的,获取待共享的缓存空间的大小,即为总的多队列待共享的缓存空间的大小,例如,可以是100M,也还可以是其他任意预先设置的共享缓存空间;将所述获取的多队列的共享缓存空间的大小根据所述确定的需要分配待共享的缓存空间的队列个数平均分配给各个需要分配待共享的缓存空间的队列。例如,获取的多队列的共享缓存空间的大小是100M,确定的需要分配待共享的缓存空间的队列个数是4个,则将100M共享缓存空间平均分配给4个需要分配待共享的缓存空间的队列,每个需要分配待共享的缓存空间的队列得到的共享缓存空间的大小为25M ;需要分配待共享的缓存空间的队列得到共享缓存空间大小的计算公式为:Q共队列=Q共/N,其中,Q共为总的多队列的共享缓存大小,N为需要分配待共享的缓存空间的队列个数,Q共队列为每个需要分配待共享的缓存空间的队列分配的共享缓存空间的独享。在本发明其他实施例中,分配待共享的缓存空间的大小给需要分配待共享的缓存空间的队列的方式,还可以是按照各个队列的优先级高低顺序及各个优先级对应的预设的参数将获取的多队列的共享缓存空间的大小分配给各个需要分配待共孚的缓存空间的队列。
[0054]通过确定的需要分配待共享的缓存空间的队列个数为每个需要分配待共享的缓存空间的队列分配共享缓存空间,并随着需要分配待共享的缓存空间的队列个数的变化为每个需要分配待共享的缓存空间的队列分配共享缓存空间,实现了根据网络流量进行缓存空间自动调整分配,节约了硬件资源,有利于硬件实践,同时提高了缓存空间的利用率。
[0055]如图2所示,为本发明对多队列的缓存空间进行分配控制的方法的第二实施例的具体流程图。
[0056]基于上述第一实施例,步骤S13包括:
[0057]步骤S14,将所述待共享的缓存空间中预留出预设值的缓存空间,并将预留后剩余的缓存空间作为待分配的缓存空间;
[0058]步骤S15,根据确定的需要分配待共享的缓存空间的队列个数,将所述待分配的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0059]具体的,获取待共享的缓存空间的大小,即为多队列分配的共享缓存空间的大小,例如,可以是100M,也还可以是其他任意预先设置的共享缓存空间;预留预设值的共享缓存空间,所述预设值可以是10M,或15M或30M等任意提前设置的共享缓存空间,并将预留后剩余的缓存空间作为待分配的缓存空间;根据确定的需要分配待共享的缓存空间的队列个数,将所述待分配的缓存空间分配给各个需要分配待共享的缓存空间的队列。例如,获取的多队列的共享缓存空间的大小是100M,预留出预设值的缓存空间的预设值为15M,获取的需要分配待共享的缓存空间的队列个数是5个,则将100M减去15M之后的共享缓存空间85M作为待分配的缓存空间,将所述待分配的缓存空间85M平均分配给5个需要分配待共享的缓存空间的队列,每个需要分配待共享的缓存空间的队列得到的共享缓存空间的大小为17M ;需要分配待共享的缓存空间的队列得到共享缓存空间的大小的计算公式为:Q共队列=(Q共-Q预留)/N,其中,Q共为总的多队列的共享缓存空间,N为需要分配待共享的缓存空间的队列个数,Q预留为按照预设值预留的多队列的共享缓存空间,Q共队列为每个需要分配待共享的缓存空间的队列分配的共享缓存空间。
[0060]通过预留预设值的共享缓存空间,以便在总的共享缓存空间在被一个或多个需要分配待共享的缓存空间的队列全部占用时,其他队列有共享缓存空间可用,能更加灵活的分配多队列的共享缓存空间,提高用户体验。
[0061]如图3所示,为本发明对多队列的缓存空间进行分配控制的方法的第三实施例的具体流程图。
[0062]基于上述第一实施例,在步骤Sll之前,还包括:
[0063]步骤S16,将待独享的缓存空间分配给各个队列。
[0064]具体的,获取多队列中总的队列个数,待独享的缓存空间、各个队列在多队列中的优先级以及各个优先级对应的分配系数;例如,队列的个数为4个,分别是队列A、队列B、队列C和队列D,多队列的总的独享缓存空间的大小为200M,各个队列的优先级顺序为:队列A、队列B、队列C及队列D,各个队列的对应的分配系数。根据获取的队列的优先级的高低顺序、总的队列个数以及各个优先级对应的分配系数,将所述待独享缓存空间对应的分配给各个队列,根据各个队列的优先级的高低顺序,高优先级的队列和低优先级的队列分配的独享缓存可以不同,也可以将待独享的缓存空间平均分配给各个队列。当将待独享的缓存空间平均分配给各个队列时,其公式可以是Q独队列=Q独/n,其中Q独队列为队列分配的独享缓存空间,Q独为多队列总的独享缓存空间,η为多队列中的队列个数;当高优先级的队列和低优先级的队列分配的独享缓存空间可以不同时,其公式可以是Q独队列=(Q独/n)*c,c为优先级对应的分配常数,也还可以是其他任意适用的计算方式得到每个队列分配的独享缓存空间,所述优先级根据每个队列的流量的大小来动态设置,即每个队列在每个不同的时刻优先级是不一致的。例如,按照Q独队列=Q独/n,分配待独享的缓存空间,待独享的缓存空间Q独=200M,多队列中的队列个数n=4,Q独对列=Q独/n=200M/4=50M ;按照Q独队列=(Q独/n ) *c分配待独享的缓存空间,若队列A的优先级对应的分配常数为1.5,队列B优先级对应的分配常数为1.2,队列C优先级对应的分配常数为0.8,队列D优先级对应的分配常数为0.5,则对应的队列A分配的独享缓存空间为Q独对列A= (200M/4) *1.5=50Μ*1.5=75Μ,队列B分配的独享缓存空间为Q独对列B= (200Μ/4) * I.2=50Μ* I.2=60Μ,队列C分配的独享缓存空间为Q独对列C= (200Μ/4) *0.8=50Μ*0.8=40Μ,队列D分配的独享缓空间存为Q独对列D=(200M/4)*0.5=50M*0.5=25M。本实施例中,优选地以根据获取的队列的优先级的高低顺序,将所述待独享的缓存空间对应的分配给各个队列,根据各个队列的优先级的高低顺序,高优先级的队列和低优先级的队列分配的独享缓存空间可以不同的方式分配多队列的独享缓存空间,即按照公式Q独队列=(Q独/n) *c分配待独享的缓存空间。
[0065]通过按照预设优先级对应的分配常数给各个队列合理的分配待独享的缓存空间,使得独享缓存空间的分配按照各个队列的流量的大小合理分配,提高独享缓存空间分配的灵活性,使得独享缓存空间能得到更好更合理的利用,进而提高独享缓存空间的利用率。
[0066]如图4所示,为本发明对多队列的缓存进行分配控制的方法的第四实施例的具体流程图。
[0067]基于上述第一实施例,在步骤S13之后,还包括:
[0068]步骤S17,分析为各个需要分配待共享的缓存空间的队列分配的共享缓存空间是否被占用。
[0069]具体的,在获取待共享的缓存空间,将所述待共享的缓存空间根据确定的需要分配待共享的缓存空间的队列个数分配给各个需要分配待共享的缓存空间的队列之后,分析为各个需要分配待共享的缓存空间的队列分配的共享缓存空间是否被占用,即分析存入该队列的共享缓存空间内的数据包是否被调度出队。
[0070]步骤S18,当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一。
[0071]具体的,当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一。例如,选取平均分配待共享的缓存空间的方式,获取待共享的缓存空间的大小是100M,确定的需要分配待共享的缓存空间的队列个数是4个,则将100M待共享的缓存空间平均分配给4个需要分配待共享的缓存空间的队列,每个需要分配待共享的缓存空间的队列得到的共享缓存空间为25M ;需要分配待共享的缓存空间的队列得到的共享缓存空间的计算公式为:Q共队列=Q共/N,其中,Q共为待共享的缓存空间,N为需要分配待共享的缓存空间的队列个数,Q共队列为每个需要分配待共享的缓存空间的队列分配的共享缓存空间;当存入某个队列的共享缓存空间内的数据包被调度出队时,即为队列分配的共享缓存空间不被占用,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一,即需要分配待共享的缓存空间的队列个数变为3个。
[0072]步骤S19,根据减一后的队列个数,将待共享的缓存空间分配给各个需要分配待共孚的缓存空间的队列。
[0073]具体的,例如,确定的需要分配待共享的缓存空间的队列个数为4个,当存入某个队列的共享缓存空间内的数据包被调度出队时,即为队列分配的共享缓存空间不被占用,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一,即需要分配待共享的缓存空间的队列个数变为3个,则将100M待共享的缓存空间平均分配给3个需要分配待共享的缓存空间的队列,Q共队列=Q共/N=100M/3=33.33M。
[0074]通过当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,将确定的需要分配待共享的缓存空间的队列个数减一,并根据减一后的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列,通过动态监控需要分配待共享的缓存空间的队列个数并及时对待共享的缓存空间重新分配,提高待共享的缓存空间分配的灵活性,使得缓存能得到更好更合理的利用,进而提高缓存空间的利用率。
[0075]如图5所示,为本发明对多队列的缓存进行分配控制的方法的第五实施例的具体流程图。
[0076]基于上述第二实施例,在步骤S15之后,包括:
[0077]步骤S20,分析为各个需要分配待共享的缓存空间的队列分配的共享缓存空间是否被占用。
[0078]具体的,将所述待共享的缓存空间中预留出预设值的缓存空间,并将预留后剩余的缓存空间作为待分配的缓存空间;根据确定的需要分配待共享的缓存空间的队列个数,将所述待分配的缓存空间分配给各个需要分配待共享的缓存空间的队列之后,分析为各个需要分配待共享的缓存空间的队列分配的共享缓存空间是否被占用,即分析存入该队列的共享缓存空间内的数据包是否被调度出队。
[0079]步骤S21,当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一。
[0080]具体的,当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一。例如,选取平均分配待共享的缓存空间的方式,获取待共享的缓存空间的大小是100M,确定的需要分配待共享的缓存空间的队列个数是5个,预留出预设值的缓存空间的预设值为15M,则将100M减去15M之后的共享缓存空间85M作为待分配的缓存空间,将待分配的缓存空间平均分配给5个需要分配待共享的缓存空间的队列,每个需要分配待共享的缓存空间的队列得到的共享缓存空间为17M ;需要分配待共享的缓存空间的队列得到的共享缓存空间的计算公式为:Q共队列=(Q共-Q预留)/N,其中,Q共为总的多队列的共享缓存空间,N为需要分配待共享的缓存空间的队列个数,Q预留为按照预设值预留的多队列的共享缓存空间,Q共队列为每个需要分配待共享的缓存空间的队列分配的共享缓存空间;当存入某个队列的共享缓存空间内的数据包被调度出队时,即为队列分配的共享缓存空间不被占用,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一,即需要分配待共享的缓存空间的队列个数变为4个。
[0081]步骤S22,根据减一后的队列个数,将待分配的缓存空间分配给各个需要分配待共孚的缓存空间的队列。
[0082]具体的,例如,确定的需要分配待共享的缓存空间的队列个数为5个,当存入某个队列的共享缓存空间内的数据包被调度出队时,即为队列分配的共享缓存空间不被占用,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一,即需要分配待共享的缓存空间的队列个数变为4个,则将85M待分配的缓存空间平均分配给4个需要分配待共享的缓存空间的队列,Q共队列=Q共队列=(Q共-Q预留)/N= (100M-85M) /4=22.5M。
[0083]通过当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,将确定的需要分配待分配的缓存空间的队列个数减一,并根据减一后的队列个数,将待分配的缓存空间分配给各个需要分配待分配的缓存空间的队列,通过动态监控需要分配待分配的缓存空间的队列个数并及时对待分配的缓存空间重新分配,提高待共享的缓存空间分配的灵活性,使得缓存能得到更好更合理的利用,进而提高缓存空间的利用率。
[0084]如图6所示,为本发明对多队列的缓存空间进行分配控制的装置的较佳实施例的具体架构图。该装置包括:分析模块10,处理模块20及分配模块30,
[0085]所述分析模块10,用于分析各个队列中是否存在需要分配待共享的缓存空间的队列。
[0086]具体的,分析模块10实时或定时分析各个队列是否需要分配待共享的缓存空间的队列。
[0087]所述处理模块20,用于在存在需要分配待共享的缓存空间的队列时,确定需要分配待共享的缓存空间的队列的个数。
[0088]具体的,当存在需要分配待共享的缓存空间的队列时,处理模块20确定需要分配待共享的缓存空间的队列个数;例如,当找出有3个需要分配待共享的缓存空间的队列时,即需要分配待共享的缓存空间的队列个数为3。
[0089]所述分配模块30,用于根据确定的需要分配待共享的缓存空间的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0090]具体的,分配模块30获取待共享的缓存空间的大小,即为总的多队列待共享的缓存空间的大小,例如,可以是100M,也还可以是其他任意预先设置的共享缓存空间;分配模块30将所述获取的多队列的共享缓存空间的大小根据所述确定的需要分配待共享的缓存空间的队列个数平均分配给各个需要分配待共享的缓存空间的队列。例如,分配模块30获取的多队列的共享缓存空间的大小是100M,处理模块20确定的需要分配待共享的缓存空间的队列个数是4个,则分配模块30将100M共享缓存空间平均分配给4个需要分配待共享的缓存空间的队列,每个需要分配待共享的缓存空间的队列得到的共享缓存空间的大小为25M ;需要分配待共享的缓存空间的队列得到共享缓存空间大小的计算公式为:Q共队列=Q共/N,其中,Q共为总的多队列的共享缓存大小,N为需要分配待共享的缓存空间的队列个数,Q共队列为每个需要分配待共享的缓存空间的队列分配的共享缓存空间的独享。在本发明其他实施例中,分配模块30分配待共享的缓存空间的大小给需要分配待共享的缓存空间的队列的方式,还可以是按照各个队列的优先级高低顺序及各个优先级对应的预设的参数将获取的多队列的共享缓存空间的大小分配给各个需要分配待共享的缓存空间的队列。
[0091]通过分配模块30根据处理模块20确定的需要分配待共享的缓存空间的队列个数为每个需要分配待共享的缓存空间的队列分配共享缓存空间,并随着需要分配待共享的缓存空间的队列个数的变化为每个需要分配待共享的缓存空间的队列分配共享缓存空间,实现了根据网络流量进行缓存空间自动调整分配,节约了硬件资源,有利于硬件实践,同时提高了缓存空间的利用率。
[0092]进一步地,所述处理模块20,还用于将所述待共享的缓存空间中预留出预设值的缓存空间,并将预留后剩余的缓存空间作为待分配的缓存空间;
[0093]所述分配模块30,还用于根据确定的需要分配待共享的缓存空间的队列个数,将所述待分配的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0094]具体的,分配模块30获取待共享的缓存空间的大小,即为多队列分配的共享缓存空间的大小,例如,可以是100M,也还可以是其他任意预先设置的共享缓存空间;处理模块20预留预设值的共享缓存空间,所述预设值可以是10M,或15M或30M等任意提前设置的共享缓存空间,并将预留后剩余的缓存空间作为待分配的缓存空间;分配模块30根据确定的需要分配待共享的缓存空间的队列个数,将所述待分配的缓存空间分配给各个需要分配待共享的缓存空间的队列。例如,分配模块30获取的多队列的共享缓存空间的大小是100M,处理模块20预留出预设值的缓存空间的预设值为15M,获取的需要分配待共享的缓存空间的队列个数是5个,则将100M减去15M之后的共享缓存空间85M作为待分配的缓存空间,分配模块30将所述待分配的缓存空间85M平均分配给5个需要分配待共享的缓存空间的队列,每个需要分配待共享的缓存空间的队列得到的共享缓存空间的大小为17M;需要分配待共享的缓存空间的队列得到共享缓存空间的大小的计算公式为:Q共队列=(Q共-Q预留)/N,其中,Q共为总的多队列的共享缓存空间,N为需要分配待共享的缓存空间的队列个数,Q预留为按照预设值预留的多队列的共享缓存空间,Q共队列为每个需要分配待共享的缓存空间的队列分配的共享缓存空间。
[0095]通过处理模块20预留预设值的共享缓存空间,以便在总的共享缓存空间在被一个或多个需要分配待共享的缓存空间的队列全部占用时,其他队列有共享缓存空间可用,能更加灵活的分配多队列的共享缓存空间,提高用户体验。
[0096]进一步地,所述分配模块30,还用于将待独享的缓存空间分配给各个队列。
[0097]具体的,处理模块20获取多队列中总的队列个数,待独享的缓存空间、各个队列在多队列中的优先级以及各个优先级对应的分配系数;例如,队列的个数为4个,分别是队列A、队列B、队列C和队列D,多队列的总的独享缓存空间的大小为200M,各个队列的优先级顺序为:队列A、队列B、队列C及队列D,各个队列的对应的分配系数。分配模块30根据获取的队列的优先级的高低顺序、总的队列个数以及各个优先级对应的分配系数,将所述待独享缓存空间对应的分配给各个队列。分配模块30根据各个队列的优先级的高低顺序,高优先级的队列和低优先级的队列分配的独享缓存可以不同,也可以将待独享的缓存空间平均分配给各个队列。当分配模块30将待独享的缓存空间平均分配给各个队列时,其公式可以是Q独队列=Q独/n,其中Q独队列为队列分配的独享缓存空间,Q独为多队列总的独享缓存空间,η为多队列中的队列个数;分配模块30当高优先级的队列和低优先级的队列分配的独享缓存空间可以不同时,其公式可以是Q独队列=(Q独/n)*c,c为优先级对应的分配常数,也还可以是其他任意适用的计算方式得到每个队列分配的独享缓存空间,所述优先级根据每个队列的流量的大小来动态设置,即每个队列在每个不同的时刻优先级是不一致的。例如,分配模块30按照Q独队列=Q独/n,分配待独享的缓存空间,待独享的缓存空间Q独=200M,多队列中的队列个数n=4,Q独对列=Q独/n=200M/4=50M ;按照Q独队列=(Q独/n)*c分配待独享的缓存空间,若队列A的优先级对应的分配常数为1.5,队列B优先级对应的分配常数为1.2,队列C优先级对应的分配常数为0.8,队列D优先级对应的分配常数为0.5,则对应的队列A分配的独享缓存空间为Q独对列A=(200M/4)*1.5=50M*1.5=75M,队列B分配的独享缓存空间为Q独对列B=(200M/4)*1.2=50M*1.2=60M,队列C分配的独享缓存空间为Q独对列C=(200M/4)*0.8=50M*0.8=40M,队列D分配的独享缓空间存为Q独对列D=(200M/4)*0.5=50M*0.5=25M。本实施例中,优选地以根据获取的队列的优先级的高低顺序,分配模块30将所述待独享的缓存空间对应的分配给各个队列,根据各个队列的优先级的高低顺序,高优先级的队列和低优先级的队列分配的独享缓存空间可以不同的方式分配多队列的独享缓存空间,即按照公式Q独队列=(Q独/n) *c分配待独享的缓存空间。
[0098]通过分配模块30按照预设优先级对应的分配常数给各个队列合理的分配待独享的缓存空间,使得独享缓存空间的分配按照各个队列的流量的大小合理分配,提高独享缓存空间分配的灵活性,使得独享缓存空间能得到更好更合理的利用,进而提高独享缓存空间的利用率。
[0099]进一步地,所述分析模块10,还用于分析为各个需要分配待共享的缓存空间的队列分配的共享缓存空间是否被占用。
[0100]具体的,在获取待共享的缓存空间,将所述待共享的缓存空间根据确定的需要分配待共享的缓存空间的队列个数分配给各个需要分配待共享的缓存空间的队列之后,分析模块10分析为各个需要分配待共享的缓存空间的队列分配的共享缓存空间是否被占用,即分析存入该队列的共享缓存空间内的数据包是否被调度出队。
[0101]所述处理模块20,还用于当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一。
[0102]具体的,当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,则分析模块10确定该队列为不需要分配待共享的缓存空间的队列,处理模块20将确定的需要分配待共享的缓存空间的队列个数减一。例如,选取平均分配待共享的缓存空间的方式,分配模块30获取待共享的缓存空间的大小是100M,处理模块20确定的需要分配待共享的缓存空间的队列个数是4个,则分配模块30将100M待共享的缓存空间平均分配给4个需要分配待共享的缓存空间的队列,每个需要分配待共享的缓存空间的队列得到的共享缓存空间为25M ;需要分配待共享的缓存空间的队列得到的共享缓存空间的计算公式为:Q共队列=Q共/N,其中,Q共为待共享的缓存空间,N为需要分配待共享的缓存空间的队列个数,Q共队列为每个需要分配待共享的缓存空间的队列分配的共享缓存空间;当存入某个队列的共享缓存空间内的数据包被调度出队时,即为队列分配的共享缓存空间不被占用,则处理模块20确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一,即需要分配待共享的缓存空间的队列个数变为3个。
[0103]所述分配模块30,还用于根据减一后的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
[0104]具体的,例如,处理模块20确定的需要分配待共享的缓存空间的队列个数为4个,当存入某个队列的共享缓存空间内的数据包被调度出队时,即为队列分配的共享缓存空间不被占用,则处理模块20确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一,即需要分配待共享的缓存空间的队列个数变为3个,则分配模块30将100M待共享的缓存空间平均分配给3个需要分配待共享的缓存空间的队列,Q共队列=Q共/N=100M/3=33.33M。
[0105]通过当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,将处理模块20确定的需要分配待共享的缓存空间的队列个数减一,并根据减一后的队列个数,分配模块30将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列,通过动态监控需要分配待共享的缓存空间的队列个数并及时对待共享的缓存空间重新分配,提高待共享的缓存空间分配的灵活性,使得缓存能得到更好更合理的利用,进而提高缓存空间的利用率。
[0106]以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的【技术领域】,均同理包括在本发明的专利保护范围内。
【权利要求】
1.一种对多队列的缓存空间进行分配控制的方法,其特征在于,该方法包括: 分析各个队列中是否存在需要分配待共享的缓存空间的队列; 在存在需要分配待共享的缓存空间的队列时,确定需要分配待共享的缓存空间的队列的个数; 根据确定的需要分配待共享的缓存空间的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
2.根据权利要求1所述的对多队列的缓存空间进行分配控制的方法,其特征在于,所述根据确定的需要分配待共享的缓存空间的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列的步骤包括: 将所述待共享的缓存空间中预留出预设值的缓存空间,并将预留后剩余的缓存空间作为待分配的缓存空间; 根据确定的需要分配待共享的缓存空间的队列个数,将所述待分配的缓存空间分配给各个需要分配待共享的缓存空间的队列。
3.根据权利要求1或2所述的对多队列的缓存空间进行分配控制的方法,其特征在于,在所述分析各个队列中是否存在需要分配待共享的缓存空间的队列的步骤之前,该方法还包括: 将待独享的缓存空间分配给各个队列。
4.根据权利要求3所述的对多队列的缓存空间进行分配控制的方法,其特征在于,所述将待独享的缓存空间分配给各个队列的步骤之后,该方法还包括: 分析为各个队列分配的待独享的缓存空间是否满足各个队列的执行需要; 若有队列被分配的待独享的缓存空间不满足执行需要,则确定该队列为需要分配待共孚的缓存空间的队列。
5.根据权利要求1或2所述的对多队列的缓存空间进行分配控制的方法,其特征在于,在所述将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列的步骤之后,该方法还包括: 分析为各个需要分配待共享的缓存空间的队列分配的共享缓存空间是否被占用; 当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一,并根据减一后的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
6.一种对多队列的缓存空间进行分配控制的装置,其特征在于,该装置包括: 分析模块,用于分析各个队列中是否存在需要分配待共享的缓存空间的队列; 处理模块,用于在存在需要分配待共享的缓存空间的队列时,确定需要分配待共享的缓存空间的队列的个数; 分配模块,用于根据确定的需要分配待共享的缓存空间的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
7.根据权利要求6所述的对多队列的缓存空间进行分配控制的装置,其特征在于, 所述处理模块,还用于将所述待共享的缓存空间中预留出预设值的缓存空间,并将预留后剩余的缓存空间作为待分配的缓存空间; 所述分配模块,还用于根据确定的需要分配待共享的缓存空间的队列个数,将所述待分配的缓存空间分配给各个需要分配待共享的缓存空间的队列。
8.根据权利要求6或7所述的对多队列的缓存空间进行分配控制的装置,其特征在于, 所述分配模块,还用于将待独享的缓存空间分配给各个队列。
9.根据权利要求8所述的对多队列的缓存空间进行分配控制的装置,其特征在于, 所述分析模块,还用于分析为各个队列分配的待独享的缓存空间是否满足各个队列的执行需要; 所述处理模块,还用于若有队列被分配的待独享的缓存空间不满足执行需要,则确定该队列为需要分配待共享的缓存空间的队列。
10.根据权利要求6或7所述的对多队列的缓存空间进行分配控制的装置,其特征在于, 所述分析模块,还用于分析为各个需要分配待共享的缓存空间的队列分配的共享缓存空间是否被占用; 当为队列分配的共享缓存不被占用时,判定该队列恢复未激活状态, 所述处理模块,还用于当有需要分配待共享的缓存空间的队列被分配的共享缓存空间未被占用时,则确定该队列为不需要分配待共享的缓存空间的队列,将确定的需要分配待共享的缓存空间的队列个数减一; 所述分配模块,还用于根据减一后的队列个数,将待共享的缓存空间分配给各个需要分配待共享的缓存空间的队列。
【文档编号】H04L12/801GK104426790SQ201310377185
【公开日】2015年3月18日 申请日期:2013年8月26日 优先权日:2013年8月26日
【发明者】陈杭洲 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1