一种队列调度方法及装置.pdf

上传人:1*** 文档编号:526744 上传时间:2018-02-20 格式:PDF 页数:14 大小:1.67MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410411353.0

申请日:

2014.08.20

公开号:

CN104144134A

公开日:

2014.11.12

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||著录事项变更IPC(主分类):H04L 12/863变更事项:申请人变更前:杭州华三通信技术有限公司变更后:新华三技术有限公司变更事项:地址变更前:310052 浙江省杭州市滨江区长河路466号变更后:310052 浙江省杭州市滨江区长河路466号|||实质审查的生效IPC(主分类):H04L 12/863申请日:20140820|||公开

IPC分类号:

H04L12/863(2013.01)I

主分类号:

H04L12/863

申请人:

杭州华三通信技术有限公司

发明人:

董君

地址:

310052 浙江省杭州市滨江区长河路466号

优先权:

专利代理机构:

北京德琦知识产权代理有限公司 11018

代理人:

梁少微;王丽琴

PDF下载: PDF下载
内容摘要

本发明公开了一种队列调度方法,所述队列为加权轮询调度WRR队列,该方法包括:建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应;在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。本发明还公开了一种队列调度装置。采用本发明能够使队列调度更加公平。

权利要求书

1.  一种队列调度方法,所述队列为加权轮询调度WRR队列,其特征在于,该方法包括:
建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应;
在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。

2.
  如权利要求1所述的方法,其特征在于,在报文入队时,进行入队调度,该方法包括:
将报文缓冲到一个空队列,以使该空队列成为首次拥塞的队列;
将该首次拥塞的队列作为完全二叉树的一个节点,加入到以队列势能为关键值的完全二叉树的最后一个节点的后面;
基于队列势能值对该首次拥塞的队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。

3.
  如权利要求1所述的方法,其特征在于,在报文出队时,进行出队调度,该方法包括:
将根节点队列缓冲的首报文出队,以使该根节点队列成为首报文出队队列;
根据报文长度和首报文出队队列的权重值,更新首报文出队队列的势能值;
判断首报文出队后,该首报文出队队列是否为空,当不为空时,
基于队列势能值对该首报文出队队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。

4.
  如权利要求3所述的方法,其特征在于,该方法进一步包括:
当首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树不为空时:
将该首报文出队队列对应的节点移出,将完全二叉树上最后一个节点移到根节点的位置;
基于队列势能值对该被移到根节点位置节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。

5.
  如权利要求3所述的方法,其特征在于,该方法进一步包括:
当首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树也为空时:
将该首报文出队队列对应的节点移出,将该首报文出队队列移除之前对应的更新势能值作为完全二叉树的初始势能。

6.
  如权利要求3或5所述的方法,其特征在于,所述根据报文长度和首报文出队队列的权重值,更新首报文出队队列的势能值的方法包括:
根据P更新=P+W*L,其中,W表示首报文出队队列的权重值,L表示报文的长度,P更新表示以该首报文出队队列更新前的势能值进行W和L之积的累加,以P更新对首报文出队队列的势能值进行更新。

7.
  一种队列调度装置,所述队列为加权轮询调度WRR队列,其特征在于,该装置包括:
树建立模块,用于建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应;
队列调度模块,用于在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。

8.
  如权利要求7所述的装置,其特征在于,在报文入队时,进行入队调度,所述队列调度模块进一步包括:
缓冲单元,用于将报文缓冲到一个空队列,以使该空队列成为首次拥塞的队列;
入堆调度单元,用于将该首次拥塞的队列作为完全二叉树的一个节点,加入到以队列势能为关键值的完全二叉树的最后一个节点的后面;基于队列势能值对该首次拥塞的队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。

9.
  如权利要求7所述的装置,其特征在于,在报文出队时,进行出队调度,所述队列调度模块进一步包括:
首报文出队单元,用于将根节点队列缓冲的首报文出队,以使该根节点队列成为首报文出队队列;
队列势能更新单元,用于根据报文长度和首报文出队队列的权重值,更新首报文出队队列的势能值;
确认单元,用于判断首报文出队后,该首报文出队队列是否为空;
出队调度单元,用于在确认单元判断首报文出队后,该首报文出队队列不为空时,基于队列势能值对该首报文出队队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。

10.
  如权利要求9所述的装置,其特征在于,
所述出队调度单元,还用于在确认单元判断首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树不为空时,将该首报文出队队列对应的节点移出,将完全二叉树上最后一个节点移到根节点的位置;基于队列势能值对该被移到根节点位置节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。

11.
  如权利要求9所述的装置,其特征在于,
所述出队调度单元,还用于在确认单元判断首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树也为空时, 将该首报文出队队列对应的节点移出,将该首报文出队队列移除之前对应的更新势能值作为完全二叉树的初始势能。

12.
  如权利要求9或11所述的装置,其特征在于,所述队列势能更新单元具体用于:
根据P更新=P+W*L,其中,W表示首报文出队队列的权重值,L表示报文的长度,P更新表示以该首报文出队队列更新前的势能值进行W和L之积的累加,以P更新对首报文出队队列的势能值进行更新。

说明书

一种队列调度方法及装置
技术领域
本发明涉及网络通信技术领域,特别涉及一种队列调度方法及装置。 
背景技术
加权轮询调度(WRR,Weighted Round Robin)队列是数通设备支持的一种队列形式。其有如下几个特征:1、每组有若干个队列,如1.2…N;2、每个队列可以指定份额,通常以字节(Byte)为单位,也可以指定权重;3、一组队列可以应用到接口上。 
现有WRR队列调度采用份额轮询的方式调度,当前队列的份额消耗完后,增加对应的份额,转而进行下一队列的调度,以到达按配置份额调度的目的。当多个队列配置较大份额时,每次轮询份额需要消耗完再进行下一轮队列调度,队列可能独自占用较大的时间片,同一队列再次发送的间隔也较大。从较短的时间片来评估队列,公平性较差。 
发明内容
为实现上述发明目的,本发明提供了一种队列调度方法,所述队列为加权轮询调度WRR队列,该方法包括: 
建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应; 
在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。 
为实现上述发明目的,本发明还提供了一种队列调度装置,所述队列为加权轮询调度WRR队列,该装置包括: 
树建立模块,用于建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应; 
队列调度模块,用于在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。 
综上所述,本发明实施例中,采用完全二叉树加权重的方式实现WRR队列调度。通过本发明的队列调度方式,使得队列独自占用的时间片很短,同一队列再次发送的间隔也很短,从较短的时间片来评估队列,队列调度更加公平。 
附图说明
图1为本发明提出一种队列调度方法的流程示意图。 
图2为本发明提出一种入队调度方法的流程示意图。 
图3为本发明提出一种出队调度方法的流程示意图。 
图4为本发明实施例队列调度装置的结构示意图。 
具体实施方式
以下参照附图,对本发明实施例作进一步地详细说明。 
为更好地说明本发明,下面简单介绍一下有关WRR队列的概念。 
WRR有多个队列Q,各个队列定义为Q[1],Q[2],Q[3],…,Q[N]; 
每个队列有一个轮询值V,V[1],V[2],V[3],…,V[N]; 
每个队列有一个权重值W,W[1],W[2],W[3],…W[N],WRR队列公用一个常数C。W由计算所得,W[1]=C/V[1],W[2]=C/V[2],W[3]=C/V[3],…,W[N]=C/V[N]。(说明:C的取值决定了C/W的精度,建议C的取值是各队列W最大值的100倍或以上)。 
每个队列有一个势能P,P[1],P[2],P[3],…,P[N],P是W和L之积的累加值。L表示一个报文的长度。因此,本发明中队列的势能P由W和L 决定,用于作为完全二叉树的关键值,在报文入队和出队时,根据势能值进行完全二叉树的重构。 
现有技术中,WRR队列调度采用份额轮询的方式调度,比如,每个报文长度为1000个字节,两队列分别配置份额100000及200000,则,队列1=份额100000/1000字节=100个报文;队列2=200000/1000字节=200个报文。也就是说,需要队列1发完100个报文之后,队列2再发200个报文,必须等待队列2发完200个报文后,才能重新进行队列1的调度。这样,在长时间来看,两个队列发报文的比例虽然是1:2,但是在较短的时间内来看,总是在发同一个队列的报文,因此队列的短期公平性难以体现。 
本发明为体现短期公平性,采用完全二叉树加权重的方式实现WRR队列调度。WRR一组拥塞队列以P为关键(Key)值建立一棵完全二叉树,也可将此完全二叉树称之为堆。本发明中将报文缓冲到一个空队列,该队列就成为拥塞队列,每个拥塞队列作为堆的一个节点,队列的示意如下; 

其中,Q[1]是根节点,Q[M]是Q[2M]和Q[2M+1]两个子节点的父节点。节点间Key值P满足关系:父节点P值<=两个子节点P值(条件1),兄弟节点间Key值无大小限制。如满足条件P[1]<=P[2]且P[1]<=P[3];P[M]<=P[2M]且P[M]<=P[2M+1]。 
基于上述说明,本发明提出一种队列调度方法的流程示意图如图1所示,所述队列为加权轮询调度WRR队列,该方法包括: 
步骤11、建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应; 
步骤12、在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。 
具体地,在报文入队时,本发明提出一种入队调度方法的流程示意图如图2所示,该方法包括: 
步骤21、将报文缓冲到一个空队列,以使该空队列成为首次拥塞的队列; 
步骤22、将该首次拥塞的队列作为完全二叉树的一个节点,加入到以队列势能为关键值的完全二叉树的最后一个节点的后面; 
本发明中,以队列势能为关键值的完全二叉树建立之后,会按照从上到下,从左到右的顺序,对树上的每一个节点依次进行编号,编号最大的节点即为完全二叉树上的最后一个节点。 
本发明中报文入队势能值保持不变,也就是说,对于一个队列来说,该队列无论有多少报文入队,势能值始终是首报文入队时所对应的势能值。 
步骤23、基于队列势能值对该首次拥塞的队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。 
为清楚说明本发明,下面列举具体场景进行说明。 
实施例一 
当前堆中有7个队列节点,假设队列Q[1]到Q[7]分别对应的P值为P[1]到P[7],此时有一个空队列Q[8]因为报文入队而加入堆,该队列P值P[8]为150,其加入堆的过程如下: 
1、初始队列如下,P[8]为待加入队列Q[8]的P值: 

其中,将Q[8]加入到以队列势能为关键值的完全二叉树的最后一个节点7的后 面。 
2、比较P[8]及其父节点P[4],不满足条件1,交换Q[8]和Q[4] 

3、继续比较P[4]及其父节点P[2],不满足条件1,交换Q[8]和Q[2] 

4、继续比较P[2]及其父节点P[1],满足条件1,Q[8]加入堆过程结束,也就是说,入队调度过程结束。此时,Q[8]对应的势能值是P[2]Q[8]:150,说明Q[8]在完全二叉树第2节点的位置。 
具体地,在报文出队时,本发明还提出一种出队调度方法的流程示意图如图3所示,该方法包括: 
步骤31、将根节点队列缓冲的首报文出队,以使该根节点队列成为首报文出队队列; 
步骤32、根据报文长度和首报文出队队列的权重值,更新首报文出队队列的势能值; 
步骤33、判断首报文出队后,该首报文出队队列是否为空,当不为空时,则,执行步骤34;当首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树不为空时,则执行步骤35;当首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树也为空时,则执行步骤36; 
步骤34、基于队列势能值对该首报文出队队列对应的节点在所述完全二 叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。 
步骤35、将该首报文出队队列对应的节点移出,将完全二叉树上最后一个节点移到根节点的位置; 
基于队列势能值对该被移到根节点位置节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。 
步骤36、将该首报文出队队列对应的节点移出,将该首报文出队队列移除之前对应的更新势能值作为完全二叉树的初始势能。 
其中,首报文出队,该队列势能值要发生变化,所以更新首报文出队队列的势能值的方法包括: 
根据P更新=P+W*L,其中,W表示首报文出队队列的权重值,L表示报文的长度,P更新表示以该首报文出队队列更新前的势能值进行W和L之积的累加,以P更新对首报文出队队列的势能值进行更新。 
为清楚说明本发明,下面列举具体场景进行说明。 
实施例二 
根节点队列缓冲的首报文出队,以使该根节点队列成为首报文出队队列,首报文出队后,该首报文出队队列不为空: 
当前堆中有7个队列节点,假设队列Q[1]到Q[7]分别对应的P值为P[1]到P[7],此时队列Q[1]报文出队后队列不为空,则,重构堆过程如下: 
1、初始队列如下,P[1]为首报文出队后重新计算的P值: 

2、比较P[1]及其子节点P[2]、P[3],不满足条件1,将Q[1]和P值较小的子节点Q[2]交换, 

3、继续比较P[2]及其子节点P[4]、P[5],不满足条件1,将Q[1]和P值较小的子节点Q[5]交换 

4、P[5]不再有子节点,重构过程结束,也就是说出队调度过程结束,此时队列Q[1]对应的势能值是P[5]Q[1]:800,说明原来作为根节点的队列Q[1],在首报文出队后,势能值发生变化,P值变为800,然后基于Q[1]更新之后的势能值800,调整Q[1]在完全二叉树中的位置,最终Q[1]在完全二叉树第5节点的位置。 
实施例三 
根节点队列缓冲的首报文出队,以使该根节点队列成为首报文出队队列,首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时完全二叉树不为空: 
当前堆中有7个队列节点,假设队列Q[1]到Q[7]分别对应的P值为P[1]到P[7],此时队列Q[1]报文出队后队列为空,则,重构堆过程如下: 
1、初始队列如下,NULL为出空根队列: 

2、将最后一个节点P[7]移动到根节点作为P[1], 


3、此时,情形转化为实施例二中出队报文后,根节点队列不为空的情况,参照实施例二的方法,最终结果为: 

上述实施例三中,根节点队列首报文出队后,根节点队列为空,但是将该空的根节点队列移出后,完全二叉树不为空,完全二叉树上还有其他节点。 
如果,首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树也为空时,则将该首报文出队队列对应的节点移出,将该首报文出队队列移除之前对应的更新势能值作为完全二叉树的初始势能。 
这里,根节点队列首报文出队,该根节点队列势能值要发生变化,完全二叉树的初始势能就是根据P更新=P+W*L,得到的根节点队列首报文出队之后的更新势能值。本发明中,只要根节点队列首报文出队后,该队列为空,则需要将该队列从完全二叉树上移出,如果这是完全二叉树上最后一个节点队列,那么将该队列从完全二叉树上移出之后,完全二叉树已经为空,没有任何队列存在。当再有队列加入该完全二叉树时,要加入树的队列具有一个势能值,该势能值如果大于完全二叉树的初始势能,则仍然以该势能值作为该队列加入二叉树时的势能值;该势能值如果小于完全二叉树的初始势能,则以完全二叉树的初始势能作为该队列加入二叉树时的势能值。因此,将完全二叉树的初始势能作为后续队列加入完全二叉树的一个基准判断值,以防止要加入树的队列势能值很小,W*L的累加值也很小,则总会从该队列出报文,失去调度的公平性。 
根据上述入队调度和出队调度方法,本发明具体列举实施例四说明本发明与现有技术相比的有益效果。 
实施例四 
每个报文长度为L=1000个字节,两队列Q[1]和Q[2]分别配置份额(轮询值),V1=100000及V2=200000,假设WRR队列公用常数C为10000000,则,Q[1]对应的W1=C/V1=10000000/100000=100;Q[2]对应的W2=C/V2=10000000/200000=50。 
报文入队列Q[1],加入堆,初始势能P[1]:0 
报文入队列Q[2],加入堆,初始势能P[2]:0 
报文入堆队列如下:P[1]Q[1]:0 
P[2]Q[2]:0 
Δ第一次根节点首报文出队,首报文从Q[1]出队,更新根节点队列的势能值:P[1]Q[1]=0+W1*L=0+100*1000=10万;P[2]Q[2]仍然为0;则,不满足条件1,将P[1]和P[2]交换, 
P[1]Q[2]:0 
P[2]Q[1]:10万 
需要注意的是,此时交换后,Q[2]作为根节点了,对应的势能值为0。 
Δ第二次根节点首报文出队,首报文从Q[2]出队,更新根节点队列的势能值:P[1]=0+W2*L=0+50*1000=5万;P[2]仍然为10万;则,满足条件1; 
P[1]Q[2]:5万 
P[2]Q[1]:10万 
Δ第三次根节点首报文出队,首报文从Q[2]出队,更新根节点队列的势能值:P[1]=5万+W2*L=5万+50*1000=10万;P[2]仍然为10万;则,满足条件1; 
P[1]Q[2]:10万 
P[2]Q[1]:10万 
Δ第四次根节点首报文出队,首报文从Q[2]出队,更新根节点队列的势能值:P[1]=10万+W2*L=10万+50*1000=15万;P[2]仍然为10万;则,不满足条件1,将P[1]和P[2]交换, 
P[1]Q[1]:10万 
P[2]Q[2]:15万 
需要注意的是,此时交换后,Q[1]作为根节点了,对应的势能值为10万。 
Δ第五次根节点首报文出队,首报文从Q[1]出队,更新根节点队列的势能值:P[1]=10万+W1*L=10万+100*1000=20万;P[2]仍然为15万;则,不满足条件1,将P[1]和P[2]交换, 
P[1]Q[2]:15万 
P[2]Q[1]:20万 
需要注意的是,此时交换后,Q[2]作为根节点了,对应的势能值为15万。 
Δ第六次根节点首报文出队,首报文从Q[2]出队,更新根节点队列的势能值:P[1]=15万+W2*L=15万+50*1000=20万;P[2]仍然为20万;则,满足条件1; 
P[1]Q[2]:20万 
P[2]Q[1]:20万 
Δ第七次根节点首报文出队,首报文从Q[2]出队,更新根节点队列的势能值:P[1]=20万+W2*L=20万+50*1000=25万;P[2]仍然为20万;则,不满足条件1,将P[1]和P[2]交换, 
P[1]Q[1]:20万 
P[2]Q[2]:25万 
需要注意的是,此时交换后,Q[1]作为根节点了,对应的势能值为20万。以此类推,可以看出,出报文的顺序为Q[1]Q[2]Q[2]Q[2],Q[1]Q[2]Q[2],Q[1]Q[2]Q[2],…,Q[1]Q[2]Q[2]。也就是说,除一开始队列Q[1]出一个报文,队列Q[2]出3个报文外,后续都是队列Q[1]出一个报文,队列Q[2]出2个报文。与现有技术,队列1要出100个报文后,队列2再出200个报文,相比,队列独自占用的时间片很短,同一队列再次发送的间隔也很短,从较短的时间片来评估队列,本发明队列调度更加公平。 
其次,现有技术调度时,每个节点队列都要遍历一遍,复杂度为O(N),复杂度随拥塞队列数线性上升,性能成线性下降。本发明调度方法,采用完全二叉树,复杂度为O(logN)。其中,N为队列节点的个数。 
最后,现有技术调度时,由于单次轮询以所有队列轮询完成为标准,在多核系统下,如果队列轮询始终在自旋锁中处理,则锁内开销较大;如果队列轮询可以部分并发,则队列轮询完成状态的同步开销较大(说明:在多核可以并发轮询不同队列时,必须保证本轮所有队列份额消耗完前,已消耗完份额的队列不能提前增加份额)。也就是说,在多核系统下,需要队列1发完100个报文之后,队列2再发200个报文,如果哪个队列没有发完,需要CPU等待处理,增加了CPU的同步开销。而本发明的方法,队列Q[1]出一个报文,队列Q[2]出2个报文,在多核系统下,相当于多个CPU同时工作,不需要等待处理,因此,本发明在多核系统下同步开销更小。 
综上,本发明采用完全二叉树加权重的方式实现WRR队列调度。完全二叉树满足条件:父节点P值<=两个子节点P值(条件1),所以哪个队列P值最小哪个队列中的首报文最先出队。而且,由于P更新=P+W*L,哪个队列的权重小,哪个队列的P值累加的就慢,进而该队列的P值就相对较小,该队列出报文的几率就高。从上述实施例四就可以看出,W2=50,W1=100,所以,Q[2]相比于Q[1]的权重小,因此Q[2]比Q[1]出报文的几率高,队列Q[1]出一个报文,队列Q[2]出2个报文。从而实现更加公平的调度。 
基于同样的发明构思,本发明一实施例还提出一种队列调度装置,参见图4,图4为本发明实施例队列调度装置的结构示意图,该装置包括: 
树建立模块401,用于建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应; 
队列调度模块402,用于在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。 
在报文入队时,进行入队调度,所述队列调度模块402进一步包括: 
缓冲单元4021,用于将报文缓冲到一个空队列,以使该空队列成为首次拥塞的队列; 
入堆调度单元4022,用于将该首次拥塞的队列作为完全二叉树的一个节点,加入到以队列势能为关键值的完全二叉树的最后一个节点的后面;基于队列势能值对该首次拥塞的队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。 
在报文出队时,进行出队调度,所述队列调度模块402进一步包括: 
首报文出队单元4023,用于将根节点队列缓冲的首报文出队,以使该根节点队列成为首报文出队队列; 
队列势能更新单元4024,用于根据报文长度和首报文出队队列的权重值,更新首报文出队队列的势能值; 
确认单元4025,用于判断首报文出队后,该首报文出队队列是否为空; 
出队调度单元4026,用于在确认单元判断首报文出队后,该首报文出队队列不为空时,基于队列势能值对该首报文出队队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。 
所述出队调度单元4026,还用于在确认单元判断首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树不为空时,将该首报文出队队列对应的节点移出,将完全二叉树上最后一个节点移到根节点的位置;基于队列势能值对该被移到根节点位置节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。 
所述出队调度单元4026,还用于在确认单元判断首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树也为空时,将该首报文出队队列对应的节点移出,将该首报文出队队列移除之前对应的更新势能值作为完全二叉树的初始势能。 
所述队列势能更新单元4024具体用于: 
根据P更新=P+W*L,其中,W表示首报文出队队列的权重值,L表示报文的长度,P更新表示以该首报文出队队列更新前的势能值进行W和L之积的累加,以P更新对首报文出队队列的势能值进行更新。 
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。 

一种队列调度方法及装置.pdf_第1页
第1页 / 共14页
一种队列调度方法及装置.pdf_第2页
第2页 / 共14页
一种队列调度方法及装置.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《一种队列调度方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种队列调度方法及装置.pdf(14页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104144134A43申请公布日20141112CN104144134A21申请号201410411353022申请日20140820H04L12/86320130171申请人杭州华三通信技术有限公司地址310052浙江省杭州市滨江区长河路466号72发明人董君74专利代理机构北京德琦知识产权代理有限公司11018代理人梁少微王丽琴54发明名称一种队列调度方法及装置57摘要本发明公开了一种队列调度方法,所述队列为加权轮询调度WRR队列,该方法包括建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应;在报文入队或者出队时,基于队列势能值对所述队列对应的节。

2、点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。本发明还公开了一种队列调度装置。采用本发明能够使队列调度更加公平。51INTCL权利要求书2页说明书9页附图2页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书9页附图2页10申请公布号CN104144134ACN104144134A1/2页21一种队列调度方法,所述队列为加权轮询调度WRR队列,其特征在于,该方法包括建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应;在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整。

3、,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。2如权利要求1所述的方法,其特征在于,在报文入队时,进行入队调度,该方法包括将报文缓冲到一个空队列,以使该空队列成为首次拥塞的队列;将该首次拥塞的队列作为完全二叉树的一个节点,加入到以队列势能为关键值的完全二叉树的最后一个节点的后面;基于队列势能值对该首次拥塞的队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。3如权利要求1所述的方法,其特征在于,在报文出队时,进行出队调度,该方法包括将根节点队列缓冲的首报文出队,以使该根节点队列成为首报文出队队列;根据报文长度和首报文出队队。

4、列的权重值,更新首报文出队队列的势能值;判断首报文出队后,该首报文出队队列是否为空,当不为空时,基于队列势能值对该首报文出队队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。4如权利要求3所述的方法,其特征在于,该方法进一步包括当首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树不为空时将该首报文出队队列对应的节点移出,将完全二叉树上最后一个节点移到根节点的位置;基于队列势能值对该被移到根节点位置节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。5如权利要求。

5、3所述的方法,其特征在于,该方法进一步包括当首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树也为空时将该首报文出队队列对应的节点移出,将该首报文出队队列移除之前对应的更新势能值作为完全二叉树的初始势能。6如权利要求3或5所述的方法,其特征在于,所述根据报文长度和首报文出队队列的权重值,更新首报文出队队列的势能值的方法包括根据P更新PWL,其中,W表示首报文出队队列的权重值,L表示报文的长度,P更新表示以该首报文出队队列更新前的势能值进行W和L之积的累加,以P更新对首报文出队队列的势能值进行更新。7一种队列调度装置,所述队列为加权轮询调度WRR队列,其特征在于,。

6、该装置包括树建立模块,用于建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应;队列调度模块,用于在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于权利要求书CN104144134A2/2页3子节点的势能值。8如权利要求7所述的装置,其特征在于,在报文入队时,进行入队调度,所述队列调度模块进一步包括缓冲单元,用于将报文缓冲到一个空队列,以使该空队列成为首次拥塞的队列;入堆调度单元,用于将该首次拥塞的队列作为完全二叉树的一个节点,加入到以队列势能为关键值的完全二叉树的最后一个节点的后面;基于。

7、队列势能值对该首次拥塞的队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。9如权利要求7所述的装置,其特征在于,在报文出队时,进行出队调度,所述队列调度模块进一步包括首报文出队单元,用于将根节点队列缓冲的首报文出队,以使该根节点队列成为首报文出队队列;队列势能更新单元,用于根据报文长度和首报文出队队列的权重值,更新首报文出队队列的势能值;确认单元,用于判断首报文出队后,该首报文出队队列是否为空;出队调度单元,用于在确认单元判断首报文出队后,该首报文出队队列不为空时,基于队列势能值对该首报文出队队列对应的节点在所述完全二叉树中的位置进行调。

8、整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。10如权利要求9所述的装置,其特征在于,所述出队调度单元,还用于在确认单元判断首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树不为空时,将该首报文出队队列对应的节点移出,将完全二叉树上最后一个节点移到根节点的位置;基于队列势能值对该被移到根节点位置节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。11如权利要求9所述的装置,其特征在于,所述出队调度单元,还用于在确认单元判断首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二。

9、叉树也为空时,将该首报文出队队列对应的节点移出,将该首报文出队队列移除之前对应的更新势能值作为完全二叉树的初始势能。12如权利要求9或11所述的装置,其特征在于,所述队列势能更新单元具体用于根据P更新PWL,其中,W表示首报文出队队列的权重值,L表示报文的长度,P更新表示以该首报文出队队列更新前的势能值进行W和L之积的累加,以P更新对首报文出队队列的势能值进行更新。权利要求书CN104144134A1/9页4一种队列调度方法及装置技术领域0001本发明涉及网络通信技术领域,特别涉及一种队列调度方法及装置。背景技术0002加权轮询调度WRR,WEIGHTEDROUNDROBIN队列是数通设备支持。

10、的一种队列形式。其有如下几个特征1、每组有若干个队列,如12N;2、每个队列可以指定份额,通常以字节BYTE为单位,也可以指定权重;3、一组队列可以应用到接口上。0003现有WRR队列调度采用份额轮询的方式调度,当前队列的份额消耗完后,增加对应的份额,转而进行下一队列的调度,以到达按配置份额调度的目的。当多个队列配置较大份额时,每次轮询份额需要消耗完再进行下一轮队列调度,队列可能独自占用较大的时间片,同一队列再次发送的间隔也较大。从较短的时间片来评估队列,公平性较差。发明内容0004为实现上述发明目的,本发明提供了一种队列调度方法,所述队列为加权轮询调度WRR队列,该方法包括0005建立以队列。

11、势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应;0006在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。0007为实现上述发明目的,本发明还提供了一种队列调度装置,所述队列为加权轮询调度WRR队列,该装置包括0008树建立模块,用于建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应;0009队列调度模块,用于在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能。

12、值。0010综上所述,本发明实施例中,采用完全二叉树加权重的方式实现WRR队列调度。通过本发明的队列调度方式,使得队列独自占用的时间片很短,同一队列再次发送的间隔也很短,从较短的时间片来评估队列,队列调度更加公平。附图说明0011图1为本发明提出一种队列调度方法的流程示意图。0012图2为本发明提出一种入队调度方法的流程示意图。0013图3为本发明提出一种出队调度方法的流程示意图。0014图4为本发明实施例队列调度装置的结构示意图。说明书CN104144134A2/9页5具体实施方式0015以下参照附图,对本发明实施例作进一步地详细说明。0016为更好地说明本发明,下面简单介绍一下有关WRR队。

13、列的概念。0017WRR有多个队列Q,各个队列定义为Q1,Q2,Q3,QN;0018每个队列有一个轮询值V,V1,V2,V3,VN;0019每个队列有一个权重值W,W1,W2,W3,WN,WRR队列公用一个常数C。W由计算所得,W1C/V1,W2C/V2,W3C/V3,WNC/VN。说明C的取值决定了C/W的精度,建议C的取值是各队列W最大值的100倍或以上。0020每个队列有一个势能P,P1,P2,P3,PN,P是W和L之积的累加值。L表示一个报文的长度。因此,本发明中队列的势能P由W和L决定,用于作为完全二叉树的关键值,在报文入队和出队时,根据势能值进行完全二叉树的重构。0021现有技术中。

14、,WRR队列调度采用份额轮询的方式调度,比如,每个报文长度为1000个字节,两队列分别配置份额100000及200000,则,队列1份额100000/1000字节100个报文;队列2200000/1000字节200个报文。也就是说,需要队列1发完100个报文之后,队列2再发200个报文,必须等待队列2发完200个报文后,才能重新进行队列1的调度。这样,在长时间来看,两个队列发报文的比例虽然是12,但是在较短的时间内来看,总是在发同一个队列的报文,因此队列的短期公平性难以体现。0022本发明为体现短期公平性,采用完全二叉树加权重的方式实现WRR队列调度。WRR一组拥塞队列以P为关键KEY值建立一。

15、棵完全二叉树,也可将此完全二叉树称之为堆。本发明中将报文缓冲到一个空队列,该队列就成为拥塞队列,每个拥塞队列作为堆的一个节点,队列的示意如下;00230024其中,Q1是根节点,QM是Q2M和Q2M1两个子节点的父节点。节点间KEY值P满足关系父节点P值两个子节点P值条件1,兄弟节点间KEY值无大小限制。如满足条件P1P2且P1P3;PMP2M且PMP2M1。0025基于上述说明,本发明提出一种队列调度方法的流程示意图如图1所示,所述队列为加权轮询调度WRR队列,该方法包括0026步骤11、建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应;0027步骤12、在报文入队。

16、或者出队时,基于队列势能值对所述队列对应的节点在所述说明书CN104144134A3/9页6完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。0028具体地,在报文入队时,本发明提出一种入队调度方法的流程示意图如图2所示,该方法包括0029步骤21、将报文缓冲到一个空队列,以使该空队列成为首次拥塞的队列;0030步骤22、将该首次拥塞的队列作为完全二叉树的一个节点,加入到以队列势能为关键值的完全二叉树的最后一个节点的后面;0031本发明中,以队列势能为关键值的完全二叉树建立之后,会按照从上到下,从左到右的顺序,对树上的每一个节点依次进行编号,编号最大的节点。

17、即为完全二叉树上的最后一个节点。0032本发明中报文入队势能值保持不变,也就是说,对于一个队列来说,该队列无论有多少报文入队,势能值始终是首报文入队时所对应的势能值。0033步骤23、基于队列势能值对该首次拥塞的队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。0034为清楚说明本发明,下面列举具体场景进行说明。0035实施例一0036当前堆中有7个队列节点,假设队列Q1到Q7分别对应的P值为P1到P7,此时有一个空队列Q8因为报文入队而加入堆,该队列P值P8为150,其加入堆的过程如下00371、初始队列如下,P8为待加入队列Q8的P。

18、值00380039其中,将Q8加入到以队列势能为关键值的完全二叉树的最后一个节点7的后面。00402、比较P8及其父节点P4,不满足条件1,交换Q8和Q4004100423、继续比较P4及其父节点P2,不满足条件1,交换Q8和Q20043说明书CN104144134A4/9页700444、继续比较P2及其父节点P1,满足条件1,Q8加入堆过程结束,也就是说,入队调度过程结束。此时,Q8对应的势能值是P2Q8150,说明Q8在完全二叉树第2节点的位置。0045具体地,在报文出队时,本发明还提出一种出队调度方法的流程示意图如图3所示,该方法包括0046步骤31、将根节点队列缓冲的首报文出队,以使该。

19、根节点队列成为首报文出队队列;0047步骤32、根据报文长度和首报文出队队列的权重值,更新首报文出队队列的势能值;0048步骤33、判断首报文出队后,该首报文出队队列是否为空,当不为空时,则,执行步骤34;当首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树不为空时,则执行步骤35;当首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树也为空时,则执行步骤36;0049步骤34、基于队列势能值对该首报文出队队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。0050步骤35、将。

20、该首报文出队队列对应的节点移出,将完全二叉树上最后一个节点移到根节点的位置;0051基于队列势能值对该被移到根节点位置节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。0052步骤36、将该首报文出队队列对应的节点移出,将该首报文出队队列移除之前对应的更新势能值作为完全二叉树的初始势能。0053其中,首报文出队,该队列势能值要发生变化,所以更新首报文出队队列的势能值的方法包括0054根据P更新PWL,其中,W表示首报文出队队列的权重值,L表示报文的长度,P更新表示以该首报文出队队列更新前的势能值进行W和L之积的累加,以P更新对首报文出队队列的势能。

21、值进行更新。0055为清楚说明本发明,下面列举具体场景进行说明。0056实施例二0057根节点队列缓冲的首报文出队,以使该根节点队列成为首报文出队队列,首报文出队后,该首报文出队队列不为空0058当前堆中有7个队列节点,假设队列Q1到Q7分别对应的P值为P1到P7,此时队列Q1报文出队后队列不为空,则,重构堆过程如下00591、初始队列如下,P1为首报文出队后重新计算的P值0060说明书CN104144134A5/9页800612、比较P1及其子节点P2、P3,不满足条件1,将Q1和P值较小的子节点Q2交换,006200633、继续比较P2及其子节点P4、P5,不满足条件1,将Q1和P值较小的。

22、子节点Q5交换006400654、P5不再有子节点,重构过程结束,也就是说出队调度过程结束,此时队列Q1对应的势能值是P5Q1800,说明原来作为根节点的队列Q1,在首报文出队后,势能值发生变化,P值变为800,然后基于Q1更新之后的势能值800,调整Q1在完全二叉树中的位置,最终Q1在完全二叉树第5节点的位置。0066实施例三0067根节点队列缓冲的首报文出队,以使该根节点队列成为首报文出队队列,首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时完全二叉树不为空0068当前堆中有7个队列节点,假设队列Q1到Q7分别对应的P值为P1到P7,此时队列Q1报文出队后队列为空,则,。

23、重构堆过程如下00691、初始队列如下,NULL为出空根队列007000712、将最后一个节点P7移动到根节点作为P1,0072说明书CN104144134A6/9页9007300743、此时,情形转化为实施例二中出队报文后,根节点队列不为空的情况,参照实施例二的方法,最终结果为00750076上述实施例三中,根节点队列首报文出队后,根节点队列为空,但是将该空的根节点队列移出后,完全二叉树不为空,完全二叉树上还有其他节点。0077如果,首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树也为空时,则将该首报文出队队列对应的节点移出,将该首报文出队队列移除之前对应的。

24、更新势能值作为完全二叉树的初始势能。0078这里,根节点队列首报文出队,该根节点队列势能值要发生变化,完全二叉树的初始势能就是根据P更新PWL,得到的根节点队列首报文出队之后的更新势能值。本发明中,只要根节点队列首报文出队后,该队列为空,则需要将该队列从完全二叉树上移出,如果这是完全二叉树上最后一个节点队列,那么将该队列从完全二叉树上移出之后,完全二叉树已经为空,没有任何队列存在。当再有队列加入该完全二叉树时,要加入树的队列具有一个势能值,该势能值如果大于完全二叉树的初始势能,则仍然以该势能值作为该队列加入二叉树时的势能值;该势能值如果小于完全二叉树的初始势能,则以完全二叉树的初始势能作为该队。

25、列加入二叉树时的势能值。因此,将完全二叉树的初始势能作为后续队列加入完全二叉树的一个基准判断值,以防止要加入树的队列势能值很小,WL的累加值也很小,则总会从该队列出报文,失去调度的公平性。0079根据上述入队调度和出队调度方法,本发明具体列举实施例四说明本发明与现有技术相比的有益效果。0080实施例四0081每个报文长度为L1000个字节,两队列Q1和Q2分别配置份额轮询值,V1100000及V2200000,假设WRR队列公用常数C为10000000,则,Q1对应的W1C/V110000000/100000100;Q2对应的W2C/V210000000/20000050。0082报文入队列Q。

26、1,加入堆,初始势能P100083报文入队列Q2,加入堆,初始势能P200084报文入堆队列如下P1Q100085P2Q200086第一次根节点首报文出队,首报文从Q1出队,更新根节点队列的势能值P1Q10W1L0100100010万;P2Q2仍然为0;则,不满足条件1,将P1和P2交换,0087P1Q200088P2Q110万说明书CN104144134A7/9页100089需要注意的是,此时交换后,Q2作为根节点了,对应的势能值为0。0090第二次根节点首报文出队,首报文从Q2出队,更新根节点队列的势能值P10W2L05010005万;P2仍然为10万;则,满足条件1;0091P1Q25万。

27、0092P2Q110万0093第三次根节点首报文出队,首报文从Q2出队,更新根节点队列的势能值P15万W2L5万50100010万;P2仍然为10万;则,满足条件1;0094P1Q210万0095P2Q110万0096第四次根节点首报文出队,首报文从Q2出队,更新根节点队列的势能值P110万W2L10万50100015万;P2仍然为10万;则,不满足条件1,将P1和P2交换,0097P1Q110万0098P2Q215万0099需要注意的是,此时交换后,Q1作为根节点了,对应的势能值为10万。0100第五次根节点首报文出队,首报文从Q1出队,更新根节点队列的势能值P110万W1L10万10010。

28、0020万;P2仍然为15万;则,不满足条件1,将P1和P2交换,0101P1Q215万0102P2Q120万0103需要注意的是,此时交换后,Q2作为根节点了,对应的势能值为15万。0104第六次根节点首报文出队,首报文从Q2出队,更新根节点队列的势能值P115万W2L15万50100020万;P2仍然为20万;则,满足条件1;0105P1Q220万0106P2Q120万0107第七次根节点首报文出队,首报文从Q2出队,更新根节点队列的势能值P120万W2L20万50100025万;P2仍然为20万;则,不满足条件1,将P1和P2交换,0108P1Q120万0109P2Q225万0110需要。

29、注意的是,此时交换后,Q1作为根节点了,对应的势能值为20万。以此类推,可以看出,出报文的顺序为Q1Q2Q2Q2,Q1Q2Q2,Q1Q2Q2,Q1Q2Q2。也就是说,除一开始队列Q1出一个报文,队列Q2出3个报文外,后续都是队列Q1出一个报文,队列Q2出2个报文。与现有技术,队列1要出100个报文后,队列2再出200个报文,相比,队列独自占用的时间片很短,同一队列再次发送的间隔也很短,从较短的时间片来评估队列,本发明队列调度更加公平。0111其次,现有技术调度时,每个节点队列都要遍历一遍,复杂度为ON,复杂度随拥塞队列数线性上升,性能成线性下降。本发明调度方法,采用完全二叉树,复杂度为OLOG。

30、N。其中,N为队列节点的个数。说明书CN104144134A108/9页110112最后,现有技术调度时,由于单次轮询以所有队列轮询完成为标准,在多核系统下,如果队列轮询始终在自旋锁中处理,则锁内开销较大;如果队列轮询可以部分并发,则队列轮询完成状态的同步开销较大说明在多核可以并发轮询不同队列时,必须保证本轮所有队列份额消耗完前,已消耗完份额的队列不能提前增加份额。也就是说,在多核系统下,需要队列1发完100个报文之后,队列2再发200个报文,如果哪个队列没有发完,需要CPU等待处理,增加了CPU的同步开销。而本发明的方法,队列Q1出一个报文,队列Q2出2个报文,在多核系统下,相当于多个CPU。

31、同时工作,不需要等待处理,因此,本发明在多核系统下同步开销更小。0113综上,本发明采用完全二叉树加权重的方式实现WRR队列调度。完全二叉树满足条件父节点P值两个子节点P值条件1,所以哪个队列P值最小哪个队列中的首报文最先出队。而且,由于P更新PWL,哪个队列的权重小,哪个队列的P值累加的就慢,进而该队列的P值就相对较小,该队列出报文的几率就高。从上述实施例四就可以看出,W250,W1100,所以,Q2相比于Q1的权重小,因此Q2比Q1出报文的几率高,队列Q1出一个报文,队列Q2出2个报文。从而实现更加公平的调度。0114基于同样的发明构思,本发明一实施例还提出一种队列调度装置,参见图4,图4。

32、为本发明实施例队列调度装置的结构示意图,该装置包括0115树建立模块401,用于建立以队列势能为关键值的完全二叉树,所述完全二叉树的节点与拥塞队列一一对应;0116队列调度模块402,用于在报文入队或者出队时,基于队列势能值对所述队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。0117在报文入队时,进行入队调度,所述队列调度模块402进一步包括0118缓冲单元4021,用于将报文缓冲到一个空队列,以使该空队列成为首次拥塞的队列;0119入堆调度单元4022,用于将该首次拥塞的队列作为完全二叉树的一个节点,加入到以队列势能为关键值的完全。

33、二叉树的最后一个节点的后面;基于队列势能值对该首次拥塞的队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。0120在报文出队时,进行出队调度,所述队列调度模块402进一步包括0121首报文出队单元4023,用于将根节点队列缓冲的首报文出队,以使该根节点队列成为首报文出队队列;0122队列势能更新单元4024,用于根据报文长度和首报文出队队列的权重值,更新首报文出队队列的势能值;0123确认单元4025,用于判断首报文出队后,该首报文出队队列是否为空;0124出队调度单元4026,用于在确认单元判断首报文出队后,该首报文出队队列不为空时,。

34、基于队列势能值对该首报文出队队列对应的节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。0125所述出队调度单元4026,还用于在确认单元判断首报文出队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树不为空时,将该首报文出队说明书CN104144134A119/9页12队列对应的节点移出,将完全二叉树上最后一个节点移到根节点的位置;基于队列势能值对该被移到根节点位置节点在所述完全二叉树中的位置进行调整,使得完全二叉树上所有父节点的势能值均小于等于子节点的势能值。0126所述出队调度单元4026,还用于在确认单元判断首报文出。

35、队后,该首报文出队队列为空,且在将该空的首报文出队队列移出时所述完全二叉树也为空时,将该首报文出队队列对应的节点移出,将该首报文出队队列移除之前对应的更新势能值作为完全二叉树的初始势能。0127所述队列势能更新单元4024具体用于0128根据P更新PWL,其中,W表示首报文出队队列的权重值,L表示报文的长度,P更新表示以该首报文出队队列更新前的势能值进行W和L之积的累加,以P更新对首报文出队队列的势能值进行更新。0129以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN104144134A121/2页13图1图2说明书附图CN104144134A132/2页14图3图4说明书附图CN104144134A14。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1