主权项 |
一种基于定时器和MDRR的队列调度方法,其特征在于该方法的步骤为:步骤1)Time定时器是为类1等时延敏感型业务而设置的,主要保障该队列的时延;类2至类n为常规队列,实时测量队列长度并实时测量队列长度并根据业务量来修改队列权值,确保业务量大的队列MDRR调度权值稍微加大; 步骤2)调度开始时,初始化Time定时器时间,此时开始服务该队列;步骤3)初始化常规队列预设权值数组W2,W3……,Wn,所述业务权值在【1,10】范围类,当Time时间到后,根据加权轮询调度算法对其余队列轮询;步骤4)经过一定时间Dt,测试类2至类n队列的实时长度length_q[i],并对length_q[i]/Wi在【‑0.5,0.5】之间进行归一化处理后得结果DWi,Wi= Wi+DWi更新权值数组,其中i=2、3、…n;步骤5) 根据步骤4)得到的常规队列i的权值Wi,设置每个队列每次权数为MTU + weight*512;步骤6) 每个队列都有一个赤字计数器,用于每次调度时该队列所能发送的数据包总和的最大值,初始化为1/2*MTU*weight;步骤7) 当调度到该队列i时,权数加到赤字计数器上,如果队列首部的数据包小于该赤字计数器,就发送该数据包,赤字计数器同时减去数据包大小,如果赤字计数器小于0,那么轮询到下一个队列;步骤8) 如果有高优先级业务达到,则服务完当前队列后轮询到高优先级队列;步骤9) 为高优先队列设置一个速率测量器,实时测试高优先队列速率rate,time表示该队列实时应该得到服务的时间,动态定时器为time=k*log2rate,K为一固定常数; 步骤10)服务高优先级队列时,启动一个计时器,当为0发送完该数据包后,跳转到常规队列的下一个非空队列。 |