[发明专利]队列调度的方法及装置无效
申请号: | 200910164068.2 | 申请日: | 2009-08-07 |
公开(公告)号: | CN101621478A | 公开(公告)日: | 2010-01-06 |
发明(设计)人: | 杨宜;黄炜;孙明施 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | H04L12/56 | 分类号: | H04L12/56 |
代理公司: | 北京康信知识产权代理有限责任公司 | 代理人: | 余 刚;吴孟秋 |
地址: | 518057广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 队列 调度 方法 装置 | ||
技术领域
本发明涉及通信领域,具体而言,涉及一种队列调度的方法及装置。
背景技术
传统的带权重的排队调度算法是WRR(Weighted RoundRobin),图2是根据相关技术的WRR调度的示意图。如图2所示,入队时,报文首先被按照优先级送入对应的优先级队列,调度时不同的优先级队列按照轮询的方式选择队列,每一个轮次(Cycle)内,送出的报文数量与队列的权重成正比。
WRR调度将每个端口分为多个输出队列,队列之间轮流调度,保证每个队列都得到一定的服务时间。同时为每个队列配置一个权重值,权重值表示获取资源的比重。如一个100Mbps的端口,配置它的WRR队列调度算法的权重值为50、30、10、10,这样可以保证最低优先级队列至少获得10Mbps带宽,避免了采用严格优先级调度(Strict Priority)时低优先级队列中的报文可能长时间得不到服务的缺点。
显然纯WRR算法难以支持长度变化的流,特别是突发流,因此出现了DWRR(Deficit Weighted Round Robin)算法。
图3是根据相关技术的DWRR调度的示意图,如图3所示,为每个队列设置一个权重值W和一个权重中间值DC,该权重中间值DC小于或等于权重值。调度器访问每个非空队列,如果队列头部的包长度大于DC,则调度器移动到下一个队列;如果队列头部的包小于或等于DC,则变量DC减少包长字节数,并传送包到输出端口;调度器继续输出包和减少DC值,直到队列头部的包长度大于变量DC值,剩余的DC值将作为信用值累加到下次轮询时使用。如果队列为空,则设置DC为零,此时调度器将服务下一个非空队列。
DWRR能够支持变长报文调度,在工程中有很好的应用前景,但如何硬件实现,特别是支持队列数目的轻易扩容、又不改变硬件实现逻辑核心的方法一直是热门的研究方向。常规的二叉树实现方式很难支持较多的队列,当队列数目扩容时不得不修改核心逻辑,增加了开发难度。
针对相关技术中在不改变硬件实现逻辑核心的前提下难以支持队列数目的扩容、又难以用较小的资源消耗来实现DWRR调度单元的问题,目前尚未提出有效的解决方案。
发明内容
针对在不改变硬件实现逻辑核心的前提下难以支持队列数目的扩容、又难以用较小的资源消耗来实现DWRR调度单元的问题而提出本发明,为此,本发明的主要目的在于提供一种队列调度方法及装置,以解决上述问题。
为了实现上述目的,根据本发明的一个方面,提供了一种队列调度的方法。
根据本发明的队列调度的方法包括:用第一循环链表对一个或多个队列进行索引;通过第一循环链表的首指针分别访问一个或多个队列,并将各个队列的权重中间值减去队列中队首的待调度单位的值;当第一循环链表中的一个队列的权重中间值小于队列中队首的待调度单位时,将队列从第一循环链表中删除并将权重中间值更新为设定的权重值与剩余权重中间值之和;将第一循环链表中删除的队列用第二循环链表进行挂接。
优选地,该方法还包括:当第一循环链表中存在权重中间值不小于队列中队首的待调度单位的队列时,继续沿着第一循环链表访问一个或多个队列。
优选地,用第一循环链表对一个或多个队列进行索引包括:对一个或多个队列进行权重设置;初始化一个或多个队列的权重中间值为权重值、设定的值为零、队列状态为空、入链标记为未入链。
优选地,通过第一循环链表的首指针分别访问一个或多个队列,并将各个队列的权重中间值减去队列中队首的待调度单位的值包括:读出第一循环链表的首指针,通过首指针确定当前调度的队列编号,以第一循环链表的首指针值为地址访问第一循环链表;若队列状态不为空且权重中间值大于等于队列中队首的待调度单位的值,将权重值中间值减去队列中队首的待调度单位的值。
优选地,该方法还包括:读出第一循环链表的尾指针,以第一循环链表的尾指针值为地址访问队列,在下一跳指针位置写入第一循环链表的首指针值;以第一循环链表的首指针值更新第一循环链表的尾指针;以第一循环链表的首指针值为地址访问队列,得到下一跳指针,以此更新第一循环链表的首指针。
优选地,当链表中的一个队列的权重中间值小于队列中队首的待调度单位时,将队列从第一循环链表中删除还包括:当队列状态为空时,将队列从第一循环链表中删除且不将队列加入到第二循环链表中。
优选地,该方法还包括:若队列状态不为空且权重中间值小于队列中队首的待调度单位的值时,从第一循环链表中将队列删除,然后将队列加入到第二循环链表尾部。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910164068.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:互联网无线控制系统
- 下一篇:mesh网络中终端接入和代理更新的方法、装置