一种队列调度方法和装置制造方法

文档序号:7987253阅读:234来源:国知局
一种队列调度方法和装置制造方法
【专利摘要】本发明实施例提供了一种队列调度方法和装置,在一次队列调度轮询中,针对当前调度的活动队列的当前待发送分组,当该活动队列的当前待发送分组的长度不大于当前所有活动队列的当前待发送分组的平均长度时,发送该当前待发送分组;并使用该活动队列的当前最大允许发送量减去刚刚已发送的分组的长度的差值,更新该活动队列对应的当前最大允许发送量;然后进入其他待发送分组的调度处理;而当该活动队列的当前待发送分组的长度大于当前所有活动队列的当前待发送分组的平均长度时,进入下一个活动队列的当前待发送分组的调度处理;当不存在活动队列时,更新各队列各自对应的最大允许发送量,进入下一次轮询的调度处理。本发明涉及网络通信领域。
【专利说明】一种队列调度方法和装置
【技术领域】
[0001]本发明涉及网络通信领域,尤其涉及一种队列调度方法和装置。
【背景技术】
[0002]传统的动态权值循环轮转(DWRR, Dynamic Weighted Round Robin)队列调度方法,是一种基于队列权值的轮询队列调度方法。这种队列调度方法为每个队列都设置一个赤字计量器(DC, Deficit Counter)和权值(Weight), DC值表示每次可以从队列调度的最大允许发送量,而Weight表示单次轮询中分配给队列的发送量。调度初始时,每个队列的DC值大于等于Weight。
[0003]在每次队列调度轮询中,调度每一个非空队列时,首先判断当前被调度队列的当前待发送分组长度(即待发送分组的数据量)是否大于DC值,若是,则表示该队列当前最大允许发送的数据量不够发送该分组,该分组不被发送,并且DC值不变,保留至下一次轮询,访问下一个队列;若否,则表示该队列当前最大允许发送的数据量足够发送该分组,则发送该分组,并用当前DC值减去所发送分组的长度来更新DC值,然后继续判断该队列中新的待发送分组的长度与更新后的DC值的大小关系,以确定是否发送该新的待发送分组,直到所有队列中的待发送分组的长度均大于其所在队列的DC值。在一次轮询结束后,更新所有队列的DC值为上次轮询结束时剩余的DC值加上其各自对应队列的Weight值。
[0004]从上述现有技术中的队列调度方法上可以看出,这种方法能够处理非等长分组,并且实现不同队列间基于权值的调度。但是,传统的DWRR队列调度方法在分组调度的过程中存在比较大的问题。由于分组长度不定,在一次轮询中,若按照各队列待发送分组的长度由小到大的顺序进行发送,则可以获得最小的发送时延,而若先发送长度较长的待发送分组则会导致后续长度较小的待发送分组的总体等待时间(即时延)增加。
[0005]由此可以看出,传统的DWRR队列调度方法在时延性能上的表现并不好,存在一定缺陷。

【发明内容】

[0006]本发明实施例提供了一种队列调度方法和装置,用以解决现有技术中调度不同队列的不等长待发送分组时,若先发送长度较长的待发送分组则后续长度较小的待发送分组的总体时延增加的问题。
[0007]基于上述问题,本发明实施例提供的一种队列调度方法,包括:
[0008]在一次队列调度轮询中,针对当前调度的活动队列的当前待发送分组,采用如下步骤进行调度处理:
[0009]当该活动队列的当前待发送分组的长度不大于当前所有活动队列的当前待发送分组的平均长度时,发送该活动队列的当前待发送分组;
[0010]使用该活动队列对应的当前最大允许发送量减去该活动队列的当前待发送分组的长度的差值,更新该活动队列对应的当前最大允许发送量;[0011]进入其他待发送分组的调度处理;
[0012]当该活动队列的当前待发送分组的长度大于当前所有活动队列的当前待发送分组的平均长度时,进入下一个活动队列的当前待发送分组的调度处理;
[0013]当不存在活动队列时,更新各队列各自对应的最大允许发送量,并进入下一次轮询的调度处理;
[0014]其中,活动队列为当前待发送分组的长度不大于其对应的最大允许发送量且非空的队列。
[0015]本发明实施例提供的一种队列调度装置,包括:
[0016]发送模块,用于当当前调度的活动队列的当前待发送分组的长度不大于当前所有活动队列的当前待发送分组的平均长度时,发送该活动队列的当前待发送分组;所述活动队列为当前待发送分组的长度不大于其对应的最大允许发送量且非空的队列;
[0017]更新模块,用于当所述发送模块发送了当前调度的活动队列的当前待发送分组后,使用该活动队列对应的当前最大允许发送量减去该活动队列的当前待发送分组的长度的差值,更新该活动队列对应的当前最大允许发送量;以及当不存在活动队列时,更新各队列各自对应的最大允许发送量,并进入下一次轮询的调度处理;
[0018]调度模块,用于当发送了当前调度的活动队列的当前待发送分组后,进入其他待发送分组的调度处理;以及,当当前调度的活动队列的当前待发送分组的长度大于当前所有活动队列的当前待发送分组的平均长度时,进入下一个活动队列的当前待发送分组的调度处理。
[0019]本发明实施例的有益效果包括:
[0020]本发明实施例提供的一种队列调度方法,在一次队列调度轮询中,针对当前调度的活动队列的当前待发送分组,当该活动队列的当前待发送分组的长度不大于当前所有活动队列的当前待发送分组的平均长度时,发送该活动队列的当前待发送分组;并使用该活动队列对应的当前最大允许发送量减去该活动队列的当前待发送分组的长度的差值,更新该活动队列对应的当前最大允许发送量;然后进入其他待发送分组的调度处理;而当该活动队列的当前待发送分组的长度大于当前所有活动队列的当前待发送分组的平均长度时,进入下一个活动队列的当前待发送分组的调度处理;当不存在活动队列时,更新各队列各自对应的最大允许发送量,并进入下一次轮询的调度处理。现有队列调度方法中,在调度当前队列时,会直接将长度不大于最大允许发送量的当前待发送分组发送;而本发明实施例提供的队列调度方法中,在调度当前活动队列的当前待发送分组时,都使用当前所有活动队列待发送分组的平均长度与当前被调度活动队列待发送分组长度作比较,长度不大于平均长度的分组才被发送,因此,本发明实施例提供的队列调度方法通过活动队列待发送分组的长度与上述平均长度比较,使得不大于平均长度的待发送分组先发送,减小了长度小的待发送分组的发送时延;解决了现有技术中调度不同队列的不等长待发送分组时,若先发送长度较长的待发送分组则后续长度较小的待发送分组的总体时延增加的问题。
【专利附图】

【附图说明】
[0021]图1为本发明实施例提供的一种队列调度方法的流程图;
[0022]图2为本发明实施例提供的待调度队列L1、L2和L3未被调度时的初始状态示意图;
[0023]图3a-图3g为本发明实施例一提供的队列调度方法对队列L1、L2和L3调度过程示意图;
[0024]图4a_图4f为本发明实施例二提供的队列调度方法对队列L1、L2和L3调度过程示意图;
[0025]图5a_5c为本发明实施例一、实施例二提供的队列调度方法与现有技术的队列调度方法对队列L1、L2和L3调度时各分组时延抖动性能对比示意图;
[0026]图6为本发明实施例提供的一种队列调度装置的结构图。
【具体实施方式】
[0027]下面结合说明书附图,对本发明实施例提供的一种队列调度方法和装置的【具体实施方式】进行说明。
[0028]本发明实施例提供的一种队列调度方法,在一次队列调度轮询中,针对当前调度的活动队列的当前待发送分组,如图1所示,具体包括以下步骤:
[0029]S101、判断当前调度的活动队列的当前待发送分组的长度是否大于当前所有活动队列的当前待发送分组的平均长度,若否,则执行步骤S102,若是,则执行步骤S105;其中,活动队列为当前待发送分组的长度不大于其对应的最大允许发送量且非空的队列;
[0030]S102、发送该活动队列的当前待发送分组;
[0031]S103、使用该活动队列对应的当前最大允许发送量减去该活动队列的当前待发送分组的长度的差值,更新该活动队列对应的当前最大允许发送量;
[0032]S104、进入其他待发送分组的调度处理;执行步骤S106 ;
[0033]S105、进入下一个活动队列的当前待发送分组的调度处理;
[0034]S106、判断是否存在活动队列,若存在,则执行步骤S101,若不存在,则执行步骤S107 ;
[0035]S107、更新各队列各自对应的最大允许发送量,并进入下一次轮询的调度处理;
[0036]进一步地,上述步骤S104中,进入其他待发送分组的调度处理,可以为两种方式,第一种方式为进入该活动队列的更新后的当前待发送分组的调度处理;第二种方式为进入下一个活动队列的当前待发送分组的调度处理。
[0037]对于第一种方式,进入该活动队列更新后的当前待发送分组的调度处理,即若刚刚发送了当前待发送分组的队列仍是活动队列,则继续调度该活动队列的下一个待发送分组,重复上述步骤,直到该活动队列变成非活动队列,则进入下一个活动队列的当前待发送分组的调度处理。
[0038]对于第二种方式,进入下一个活动队列的当前待发送分组的调度处理,即尽管刚刚发送了当前待发送分组的队列仍是活动队列,调度该活动队列的下一个活动队列的当前待发送分组,重复上述步骤,直到所有活动队列变成非活动队列,则进入下一次调度轮询。
[0039]进一步地,本发明实施例提供的上述两种方式中,第二种方式更优。对第一种方式来说,在一次调度轮询中,若上一个队列不发送完所有最大允许发送量许可范围内的分组,下一个队列就不能进行分组发送,即后一个队列中的所有分组的时延都要加上前一个队列中所有分组的发送时间。因此,在每个轮询周期内,先获得调度的队列中的分组总是能获得比较小的时延,而后获得调度的队列中的分组的时延总是比较大。并且对于同一个队列来说,在两个轮询周期内,每一个轮询周期中能够连续发送分组,使得周期内的分组之间时间间隔很小,而前一个轮询周期内发送的最后一个分组和后一个轮询周期内发送的第一个分组之间的时间间隔又很大,导致两个轮询周期中发送分组之间的时间间隔不均匀,即局部时延抖动较大;而本发明实施例提供的上述第二种方式,使得在一个轮询周期内,各个活动队列的当前待发送分组轮流获得发送,而不是等某个队列发送完所有其最大允许发送量允许范围内的分组,这样,先获得调度的队列和后获得调度的队列中的分组的时延差距减小,并且任意一个队列在前后两个轮询周期时延抖动也减小。
[0040]进一步地,上述步骤S107中,更新各非空队列各自对应的最大允许发送量,可以将最大允许发送量更新为各非空队列各自当前最大允许发送量与其各自对应的权值的和,或者将最大允许发送量更新为各非空队列各自对应的权值,或者其他更新方式,这里不
列举。
[0041]进一步地,当队列为空时,可以将该空队列对应的最大允许发送量置为零。
[0042]为了进一步说明本发明实施例提供的一种队列调度方法,下面以两个具体的实施例将本发明实施例提供的队列调度方法与现有技术中的队列调度方法进行对比说明。
[0043]图2为三个待调度队列L1、L2和L3未被调度时的初始状态,LI的权值为50,L2的权值为20,L3的权值为10 ;L1中包含10个分组,按照队头到队尾的顺序各分组长度依次为:5、10、2、5、2、10、5、2、5、5 ;L2中包含5个分组,按照队头到队尾的顺序各分组长度依次为:2、5、5、10、2 ;L3中包含3个分组,按照队头到队尾的顺序各分组长度依次为:5、2、5 ;假设初始时,各队列的最大允许发送量等于其各自的权值,即LI的最大允许发送量为50,L2的最大允许发送量为20,L3的最大允许发送量为10。
[0044]首先,在现有队列调度方法中,对L1、L2和L3三个队列中分组调度方法如下:
[0045]对LI,判断当前待发送分组长度为5小于当前最大允许发送量50,发送该分组,当前最大允许发送量更新为45 (50-5);新的当前待发送分组长度为10,判断当前待发送分组长度10小于当前最大允许发送量45,发送该分组,当前最大允许发送量更新为35(45-10);新的当前待发送分组长度为2,重复上述步骤,直到新的当前待发送分组长度为5 (最后一个分组),而对应的当前最大允许发送量为4,由于当前最大允许发送量4小于新的当前待发送分组长度5,即当前最大允许发送量不足以发送当前待发送分组,则结束对LI的调度处理,开始处理L2 ;
[0046]对L2,判断当前待发送分组长度为2小于当前最大允许发送量20,发送该分组,当前最大允许发送量更新为18(20-2);新的当前待发送分组长度为5,判断当前待发送分组长度5小于当前最大允许发送量18,发送该分组,当前最大允许发送量更新为13 (18-5);新的当前待发送分组长度为5,重复上述步骤,直到新的当前待发送分组长度为10 (第四个分组),而对应的当前最大允许发送量为8,由于当前最大允许发送量8小于新的当前待发送分组长度10,即当前最大允许发送量不足以发送当前待发送分组,结束对L2的调度处理,开始处理L3 ;
[0047]对L3,判断当前待发送分组长度为5小于当前最大允许发送量10,发送该分组,当前最大允许发送量更新为5 (10-5);新的当前待发送分组长度为2,判断当前待发送分组长度2小于当前最大允许发送量5,发送该分组,当前最大允许发送量更新为3 (5-2);新的当前待发送分组长度为5,由于当前最大允许发送量3小于新的当前待发送分组长度5,即当前最大允许发送量不足以发送当前待发送分组,结束对L3的调度处理,一次队列调度轮询结束。
[0048]上述现有技术的队列调度方法对3个队列中的分组进行调度的过程中,各队列的各分组发送顺序如表1所示,各分组在各自所在队列中的排队时延如表2所示。其中,表1和表2中对应各队列的DC表示对应队列调度结束后剩余的最大允许发送量,表1中&至t13对应的值为一次轮询中每个时刻发送的分组及其分组长度,例如,在h时刻发送的分组是LI的第一个分组,其分组长度为5,在t9时刻发送的分组是L2的第一个分组,其分组长度为2 ;表2中&至t13对应的值为一次轮询中在对应时刻发送的分组的时延,例如,在h时刻发送的分组是LI的第一个分组,因为在本次轮询中该分组是第一个被发送的,因此时延为0,在A时刻发送的分组是LI的第二个分组,在该分组之前发送的是LI的长度为5的第一个分组,假设单位时间发送分组的单位长度,则在h时刻发送第二个分组时,该分组的时延是长度为5的第一个分组的发送时间5,以此类推。
[0049]表1
[0050]
【权利要求】
1.一种队列调度方法,其特征在于,包括: 在一次队列调度轮询中,针对当前调度的活动队列的当前待发送分组,采用如下步骤进行调度处理: 当该活动队列的当前待发送分组的长度不大于当前所有活动队列的当前待发送分组的平均长度时,发送该活动队列的当前待发送分组; 使用该活动队列对应的当前最大允许发送量减去该活动队列的当前待发送分组的长度的差值,更新该活动队列对应的当前最大允许发送量; 进入其他待发送分组的调度处理; 当该活动队列的当前待发送分组的长度大于当前所有活动队列的当前待发送分组的平均长度时,进入下一个活动队列的当前待发送分组的调度处理; 当不存在活动队列时,更新各队列各自对应的最大允许发送量,并进入下一次轮询的调度处理; 其中,活动队列为当前待发送分组的长度不大于其对应的最大允许发送量且非空的队列。
2.如权利要求1所述的方法,其特征在于,进入其他待发送分组的调度处理,具体为: 进入该活动队列的更新后的当前待发送分组的调度处理。
3.如权利要求1所述的方法,其特征在于,进入其他待发送分组的调度处理,具体为: 进入下一个活动队列的当前待发送分组的调度处理。
4.如权利要求1-3任一项所述的方法,其特征在于,更新各队列各自对应的最大允许发送量,具体包括: 更新各非空队列各自对应的最大允许发送量为其各自当前最大允许发送量与其各自对应的权值的和;或者 更新各非空队列各自对应的最大允许发送量为其各自对应的权值。
5.如权利要求4所述的方法,其特征在于,还包括: 当队列为空时,更新该空队列对应的最大允许发送量为零。
6.一种队列调度装置,其特征在于,包括: 发送模块,用于当当前调度的活动队列的当前待发送分组的长度不大于当前所有活动队列的当前待发送分组的平均长度时,发送该活动队列的当前待发送分组;所述活动队列为当前待发送分组的长度不大于其对应的最大允许发送量且非空的队列; 更新模块,用于当所述发送模块发送了当前调度的活动队列的当前待发送分组后,使用该活动队列对应的当前最大允许发送量减去该活动队列的当前待发送分组的长度的差值,更新该活动队列对应的当前最大允许发送量;以及当不存在活动队列时,更新各队列各自对应的最大允许发送量,并进入下一次轮询的调度处理; 调度模块,用于当发送了当前调度的活动队列的当前待发送分组后,进入其他待发送分组的调度处理;以及,当当前调度的活动队列的当前待发送分组的长度大于当前所有活动队列的当前待发送分组的平均长度时,进入下一个活动队列的当前待发送分组的调度处理。
7.如权利要求6所述的装置,其特征在于, 所述调度模块,具体用于当发送了当前调度的活动队列的当前待发送分组后,进入该活动队列的更新后的当前待发送分组的调度处理。
8.如权利要求6所述的装置,其特征在于, 所述调度模块,具体用于当发送了当前调度的活动队列的当前待发送分组后,进入下一个活动队列的当前待发送分组的调度处理。
9.如权利要求6-8任一项所述的装置,其特征在于, 所述更新模块,具体用于当不存在活动队列时,更新各非空队列各自对应的最大允许发送量为其各自当前最大允许发送量与其各自对应的权值的和;或者更新各非空队列各自对应的最大允许发送量为其各自对应的权值,并进入下一次轮询的调度处理。
10.如权利要求9所述的装置,其特征在于, 所述更新模块,还用于当队列为空时,更`新该空队列对应的最大允许发送量为零。
【文档编号】H04L12/863GK103873383SQ201210537638
【公开日】2014年6月18日 申请日期:2012年12月12日 优先权日:2012年12月12日
【发明者】顾蔚 申请人:中国移动通信集团上海有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1