基于动态加权循环法的队列调度方法及装置的制造方法_2

文档序号:8546138阅读:来源:国知局
录的非空队列号从填充模块中获取相对应队列的调度权值。本实施方式中,各队列的调度权值与调度门限值的大小关系分为调度权值大于或等于调度门限值的优先队列及调度权值小于调度门限值的队列。可以理解的是,各队列的调度权值与调度门限值的大小关系还可分为调度权值大于调度门限值的优先队列及调度权值小于或等于调度门限值的队列。
[0031]本实施方式中,在比较各队列调度权值与配置门限值时,使用一个4比特的权值指示信号表示队列调度权值是否大于配置门限值,如在队列的调度权值大于配置门限值时,指示信号对应比特置为1,否则置为O。
[0032]所述数据包读取模块150用于根据分组比较模块140的比较结果来选择相应的队列读取队列的一个数据包,即在分组比较模块140判断出优先队列后,数据包读取模块150先从优先队列中选择一个队列读取数据包,本实施方式中,在分组比较模块140判断出存在调度权值大于或等于调度门限值的优先队列时,即判断出指示权值信号为I的队列时,数据包读取模块150先从调度权值大于或等于调度门限值的优先队列中选择一个队列读取数据包,在分组比较模块140比较不存在调度权值大于或等于调度门限值的优先队列时,即各非空队列的调度权值小于调度门限值,数据包读取模块150从指示权值为O的各非空队列中选择一个队列读取数据包。
[0033]可以理解的是,若分组比较模块140判断出存在调度权值大于调度门限值的优先队列时,则数据包读取模块150先从调度权值大于调度门限值的优先队列中选择一个队列读取数据包,若分组比较模块140比较不存在调度权值大于调度门限值的优先队列时,即各非空队列的调度权值小于或等于调度门限值,则数据包读取模块150从小于或等于调度门限值的队列中选择一个队列读取数据包。
[0034]所述更新计算模块160用于将所选队列的调度权值减去对应读取的数据包的长度后计算得到所选队列更新后的调度权值,也即用队列的调度权值减去选择的数据包的实际长度后更新作为当前比较的值。例如,所选队列的调度权值为2K,所选队列读取的数据包的包长为1536B,则所选队列的调度权值将更新为2KB-1536B = 2 X 1024B-1536B = 512B,调度权值以字节(Byte)为单位。
[0035]在更新计算模块160将所选队列的调度权值进行计算更新后,判断模块130将判断所有队列是否均为空队列或各队列调度权值是否均小于或等于O并根据判断结果来确定是否重新填充各队列的调度权值以进行调度,即若所有队列均为空队列或者各队列的调度权值小于或等于0( < O)时,本轮调度结束,填充模块120为各队列根据配置比例填充调度权值后进行下一轮调度,若所有队列不为空队列或者各队列的调度权值大于O时,判断模块130将再次判断各队列中是否存在非空队列及端口的发送速率是否正常后以继续本轮调度。
[0036]请参阅图2,其为本发明实施方式提供的一种基于动态加权循环法的队列调度方法的流程图,其用于在调度装置端口进行队列的调度,所述基于动态加权循环法的队列调度方法包括以下步骤:
[0037]SllO:设置各队列的调度比例及一个调度门限值并存储;
[0038]S120:根据配置的调度比例依需要为各个队列填充对应的调度权值;
[0039]S130:判断端口发送速率是否正常且判断是否存在非空队列,若是,则进入步骤S140,若否,则等待直到端口发送速率正常且存在非空队列后进入步骤S140 ;
[0040]S140:比较是否存在调度权值大于或等于调度门限值的优先队列,若是,则进入步骤S150,若否,则进入步骤S160。
[0041]S150:从调度权值大于或等于调度门限值的优先队列中选择一个队列进行调度;
[0042]S160:从调度权值小于调度门限值的队列中选择一个队列进行调度;
[0043]S170:根据所选择的队列读取数据包;
[0044]S180:根据所选队列的调度权值与对应读取的数据包的长度计算以更新所选队列的调度权值;
[0045]S190:判断所有队列是否均为空或各队列调度权值是否均小于或等于0,若是,则返回步骤S120,若否,则返回步骤S130。
[0046]在步骤SllO中,利用配置模块110设置各队列的调度比例及一个调度门限值并存储,本实施方式中,配置四个队列a、b、c、d的调度比例为1:10:20:50,调度门限值设定为120KB。
[0047]在步骤S120中包括以下步骤:
[0048]S121:依需要确定一个填充基数值;
[0049]S122:依照各队列配置的调度比例分别乘以所确定的填充基数值以得到各个队列的调度权值。
[0050]在步骤S121中,利用基数设置单元122依需要确定一个填充基数值,本实施方式中,确定的填充基数值为一个大于最大包长的最小整数值,如以太网的最大包长为1518B,则确定填充基数值为2K。
[0051]在步骤S122中,利用填充计算单元124依照配置模块110对各队列配置的调度比例分别乘以所确定的填充基数值以得到各个队列的调度权值。本实施方式中,如队列a、b、
c、d的剩余调度权值分别为-1K、0、10K、40K,四个队列a、b、c、d的调度比例为I:10:20:50,填充基数值为2K,则队列a、b、c、d的调度权值重新填充后分别为1K、20K、50K、140K。
[0052]在步骤S130中,利用判断模块130判断各队列中是否存在非空队列及端口的发送速率是否正常,若队列中不存在非空队列且端口的发送速率不正常即端口发送速率不在正常限速范围内时,调度装置100会处于等待状态直到端口发送速率满足端口的限速范围且存在非空队列。
[0053]在步骤S140中,利用分组比较模块140比较是否存在调度权值大于或等于调度门限值的优先队列,当出现各队列的调度权值中存在大于或小于调度门限值的队列时,分组比较模块140将所有队列分为了两组,其中一组优先队列的调度权值大于或等于调度门限值,另一组队列的调度权值小于调度门限值。本实施方式中,队列a、b、c的调度权值分别为1K、20K、50K,均小于调度门限值120Κ,d队列的调度权值为140K,大于调度门限值120K,即四个队列分为两组,一组为队列a、b、c,权值指示信号为0,另一组为队列d,权值指示信号为I。
[0054]可以理解的是,分组比较模块140还可以将两组队列分为一组优先队列的调度权值大于调度门限值,另一组队列的调度权值小于或等于调度门限值,即可依据实际需要确定调度权值与调度门限值相等的队列是否优先调度。
[0055]在步骤S150中,在分组比较模块140判断出存在调度权值大于或等于调度门限值的优先队列时从优先队列中选择一个队列进行调度,本实施方式中,队列d的调度权值大于调度门限值,则可依据队列d的权值指示信号I来选择优先调度队列d。可以理解的是,下次调度时轮流从优先队列中选择一个队列进行调度,即若优先队列中包括两个队列,则本次调度一个队列,下次调度时轮流调度另一个队列。
[0056]在步骤S160中,在分组比较模块140比较不存在调度权值大于或等于调度门限值的优先队列时随机从调度权值小于调度门限值的队列中选择一个队列进行调度。可以理解的是,下次调度时轮流从调度权值小于调度门限值的队列中选择一个队列进行调度,即若非空队列中包括两个队列,则本次调度一个队列,下次调度时轮流调度另一个队列。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1