队列调度方法及装置、通信设备、存储介质与流程

文档序号:17938222发布日期:2019-06-18 22:48阅读:128来源:国知局
队列调度方法及装置、通信设备、存储介质与流程

本发明涉及数据传输技术领域,尤其涉及一种队列调度方法及装置、通信设备、存储介质。



背景技术:

服务质量(qualityofservice,qos)是反映网络状态的指标,其可以反映网络延迟和阻塞等网络状态,并且,队列调度技术是保证qos的关键技术。其中,在队列调度技术中,路由器或交换机等负责队列调度的通信设备需要按照一定的规则调度数据包,使得缓存有数据包的每个队列都能得到公平的调度机会,以便每个队列中的数据包能够被发送出去。

相关技术中,通信设备中设置有队列管理器(queuemanager,qm)和队列调度器(queuescheduler,qsc),对于队列管理器所管理的每个队列,队列管理器可根据该队列可用于数据传输的数据量额度(即队列信用值(queuecredit))与该队列的队列长度(queuelength)的差值,向队列调度器发送调度请求,以便于队列调度器为该队列分配用于数据传输的数据量,以实现该队列中数据包的传输。

但是,由于采用该方法进行队列调度时,当队列管理器所管理的任一队列对应的差值发生变化时,队列管理器就会向队列调度器发送调度请求,这样,当队列管理器管理较多队列时,队列管理器发送调度请求的频率较高,出现队列调度器负载较大,无法及时处理调度请求的问题,导致对队列的调度出现调度时延较大。



技术实现要素:

本申请提供了一种队列调度方法、装置、系统及计算机可读存储介质,可以解决当队列管理器管理较多队列时,队列管理器发送调度请求的频率较高,出现队列调度器负载较大,无法及时处理调度请求的问题,导致对队列的调度出现调度时延较大的问题,本申请提供的技术方案如下:

第一方面,本申请示例性实施例提供了一种队列调度方法,所述方法应用于队列管理器,所述方法包括:

当第一队列的长度差值发生变化时,基于所述第一队列的长度差值和所述第一队列的队列长度确定目标概率;

基于所述目标概率,进行调度请求的随机生成,使得所述调度请求生成的可能性与未生成的可能性的比例为所述目标概率,所述调度请求用于指示对所述第一队列进行调度的调度状态;

当生成了所述调度请求,将所述调度请求发送至队列调度器;

其中,所述第一队列为所述队列管理器所管理的至少一个队列中的任一队列,所述长度差值为所述第一队列的当前队列信用值与所述第一队列的队列长度的差值,所述当前队列信用值为所述第一队列当前可用于数据传输的数据量额度。

需要说明的是,通过在第一队列的长度差值发生变化时确定目标概率,基于目标概率,进行调度请求的随机生成,使得调度请求生成的可能性与未生成的可能性的比例为目标概率,且当生成了调度请求时,将调度请求发送至队列调度器,相对于相关技术,能够有效地减小队列管理器向队列调度器发送调度请求的频率,进而减小队列调度器的调度负载,降低队列调度器对队列的调度出现调度时延较大的概率。

当由第一队列的队列长度导致第一队列的长度差值发生变化时,所述基于所述第一队列的长度差值和所述第一队列的队列长度确定目标概率,可以包括:

当所述第一队列的队列长度发生变化时,获取所述长度差值变化后的第一差值,和变化前的第二差值;

基于所述第一差值和所述第二差值中的至少一个,以及所述第一队列的队列长度确定所述目标概率。

作为一种可实现方式,所述基于所述第一差值和所述第二差值中的至少一个,以及所述第一队列的队列长度确定所述目标概率,包括:

将所述第一差值分别与参考信用阈值以及调度粒度比较,所述参考信用阈值小于所述调度粒度,所述调度粒度为所述队列调度器对所述第一队列进行调度时,为所述第一队列分配的用于数据传输的额定数据量;

当所述第一差值大于所述参考信用阈值且小于所述调度粒度时,基于所述第一差值和所述调度粒度确定所述目标概率。

当第一差值大于参考信用阈值且小于调度粒度时,可以确定第一队列还剩余有一定的队列信用,但该剩余的队列信用还不足以用于第一队列中的数据包出队,此时,为了保证第一队列中的数据包的有效出队,第一队列可以请求队列调度器对其进行调度,但是,为了避免队列管理器所管理多个队列均向队列调度器发送调度请求,此时,可以确定生成调度请求的目标概率,以便于根据该目标概率随机地生成调度请求,以减小队列管理器向队列调度器发送调度请求的频率,减小队列调度器的调度负载,进而保证数据包的有效出队。

可选地,所述基于所述第一差值和所述调度粒度确定所述目标概率,包括:

将目标差值大于第一随机数的概率确定为所述目标概率,所述目标差值为所述调度粒度与所述第一差值的差值,所述第一随机数为随机产生且不大于所述调度粒度的正数。

作为另一种可实现方式,所述基于所述第一差值和所述第二差值中的至少一个,以及所述第一队列的队列长度确定所述目标概率,包括:

将所述第二差值分别与参考信用阈值以及调度粒度比较,所述参考信用阈值小于所述调度粒度,所述调度粒度为所述队列调度器对所述第一队列进行调度时,为所述第一队列分配的用于数据传输的额定数据量;

当所述第二差值大于所述参考信用阈值且小于所述调度粒度时,基于所述第二差值和目标包长确定所述目标概率,所述目标包长为使所述第一队列的队列长度发生变化的数据包的长度。

当第二差值大于参考信用阈值且小于调度粒度时,可以确定第一队列还剩余有一定的队列信用,但该剩余的队列信用还不足以用于第一队列中的数据包出队,此时,为了保证第一队列中的数据包的有效出队,以及为了避免队列管理器所管理多个队列均向队列调度器发送调度请求,此时,可以确定生成调度请求的目标概率,以便于根据该目标概率随机地生成调度请求,进而保证数据包的有效出队。

可选地,所述基于所述第二差值和目标包长确定所述目标概率,包括:

将所述目标包长大于第二随机数的概率确定为所述目标概率,所述第二随机数为随机产生且不大于所述第二差值的正数。

在该情况下,基于第二差值和目标包长确定目标概率时,确定的目标概率呈现出更均匀的变化,能够进一步地减小队列管理器向队列调度器发送调度请求的频率,进而减小队列调度器的调度负载,能够进一步地降低队列调度器对队列的调度出现调度时延较大的概率。

作为又一种可实现方式,所述基于所述第一差值和所述第二差值中的至少一个,以及所述第一队列的队列长度确定所述目标概率,包括:

将所述第一差值与参考信用阈值以及调度粒度分别比较,所述参考信用阈值小于所述调度粒度,所述调度粒度为所述队列调度器对所述第一队列进行调度时,为所述第一队列分配的用于数据传输的额定数据量;

将所述第二差值分别与所述参考信用阈值以及所述调度粒度比较;

当所述第一差值与所述第二差值均满足:大于所述参考信用阈值且小于所述调度粒度时,基于所述第二差值和目标包长确定所述目标概率,所述目标包长为使所述第一队列的队列长度发生变化的数据包的长度。

需要说明的是,在该情况下,基于第二差值和目标包长确定目标概率,相对于基于第一差值和调度粒度确定目标概率的处理方法,能够进一步地减小队列管理器向队列调度器发送调度请求的频率,进而减小队列调度器的调度负载,能够进一步地降低队列调度器对队列的调度出现调度时延较大的概率。

可选地,所述基于所述第二差值和目标包长确定所述目标概率,包括:

将所述目标包长与所述第二差值的比值确定为所述目标概率。

作为再一种可实现方式,所述基于所述第一差值和所述第二差值中的至少一个,以及所述第一队列的队列长度确定所述目标概率,包括:

将所述第一差值分别与参考信用阈值以及预设的第一信用阈值进行比较,所述第一信用阈值小于所述参考信用阈值;

当所述第一差值大于所述第一信用阈值且小于所述参考信用阈值时,确定所述目标概率为1。

当第一差值大于第一信用阈值且小于参考信用阈值时,队列信用虽然出现赤字,但且出现赤字的情况不严重,此时,可以确定第一队列确实需要队列调度器对其进行调度,且为了保证第一队列中数据包的正常出队,该第一队列需要队列调度器以相对较小的速率对其进行调度。因此,当第一差值大于第一信用阈值且小于参考信用阈值时,可以确定目标概率为1。

作为还一种可实现方式,所述基于所述第一差值和所述第二差值中的至少一个,以及所述第一队列的队列长度确定所述目标概率,包括:

将所述第一差值与预设的第一信用阈值进行比较;

当所述第一差值小于所述第一信用阈值时,确定所述目标概率为1。

当第一差值小于第一信用阈值时,第一队列的队列信用出现严重赤字,第一队列急需队列调度器对其进行调度,例如:第一队列需要队列调度器以相对较大的速率对其进行调度,以保证第一队列中数据包的正常出队。

当由第一队列的当前队列信用值导致第一队列的长度差值发生变化时,所述基于所述第一队列的长度差值和所述第一队列的队列长度确定目标概率,包括:

当所述第一队列的当前队列信用值发生变化时,根据所述长度差值确定所述目标概率。

作为一种可实现方式,所述根据所述长度差值确定所述目标概率,包括:

将所述长度差值分别与参考信用阈值以及调度粒度比较,所述参考信用阈值小于所述调度粒度,所述调度粒度为所述队列调度器对所述第一队列进行调度时,为所述第一队列分配的用于数据传输的额定数据量;

当所述长度差值大于所述参考信用阈值且小于所述调度粒度时,基于所述长度差值和所述调度粒度确定所述目标概率。

在该第一种情况下,当长度差值大于参考信用阈值且小于调度粒度时,可以确定第一队列还剩余有一定的队列信用,但该剩余的队列信用还不足以用于第一队列中的数据包出队,此时,可以确定生成调度请求的目标概率,以随机地生成调度请求,减小队列管理器向队列调度器发送调度请求的频率,减小队列调度器的调度负载,进而保证数据包的有效出队。

可选地,所述基于所述长度差值和所述调度粒度确定所述目标概率,包括:

将所述长度差值小于第一随机数的概率确定为所述目标概率,所述第一随机数为随机产生且不大于所述调度粒度的正数。

作为另一种可实现方式,所述根据所述长度差值确定所述目标概率,包括:

将所述长度差值分别与参考信用阈值以及预设的第一信用阈值进行比较,所述第一信用阈值小于所述参考信用阈值;

当所述长度差值大于所述第一信用阈值且小于所述参考信用阈值时,确定所述目标概率为1。

当长度差值大于第一信用阈值且小于参考信用阈值时,队列信用虽然出现赤字,但且出现赤字的情况不严重,此时,可以确定第一队列确实需要队列调度器对其进行调度,且为了保证第一队列中数据包的正常出队,该第一队列需要队列调度器以相对较小的速率对其进行调度。因此,当长度差值大于第一信用阈值且小于参考信用阈值时,可以确定目标概率为1。

作为又一种可实现方式,所述根据所述长度差值确定所述目标概率,包括:

将所述长度差值与预设的第一信用阈值进行比较;

当所述长度差值小于所述第一信用阈值时,确定所述目标概率为1。

当长度差值小于第一信用阈值时,第一队列的队列信用出现严重赤字,第一队列急需队列调度器对其进行调度。

相应的,所述基于所述目标概率,进行所述调度请求的随机生成,包括:

当基于所述目标概率,选择生成所述调度请求时,基于选择结果生成所述调度请求,所述调度请求包括第一状态标识,所述第一状态标识指示所述队列调度器进行队列调度时的第一速率,所述第一速率小于预设的调度速率阈值。

或者,所述基于所述目标概率,进行所述调度请求的随机生成,包括:

当基于所述目标概率,选择生成所述调度请求时,基于选择结果生成所述调度请求,所述调度请求包括第二状态标识,所述第二状态标识指示所述队列调度器进行队列调度时的第二速率,所述第二速率大于预设的调度速率阈值。

需要说明的是,当基于目标概率进行调度请求的随机生成时,由于调度请求生成的可能性与未生成的可能性的比例为目标概率,降低了队列管理器基于其所管理的多个队列生成调度请求的数量,使得队列管理器所管理的多个队列生成调度请求的数量尽量呈现出均匀分布的状态,相应的减小了队列管理器向队列调度器发送调度请求的频率,能够减小队列调度器的调度负载,使得调度状态的更新速率不超过队列调度器的调度能力,进而降低队列调度器对队列的调度出现调度时延较大的概率。并且,由于队列管理器所管理的多个队列生成调度请求的数量能够尽量呈现出均匀分布的状态,使得所有队列的当前队列信用均均匀分布在调度粒度对应的预设范围内,所有队列的队列信用的总和趋近于队列调度器能够调度的总调度带宽,使其实际的总调度带宽更准确,能够解决发送调度请求的频率较高时所引起的调度带宽过多和队列间调度带宽比例不准确等问题。

进一步地,在将所述调度请求发送至队列调度器之后,所述方法还包括:

接收所述队列调度器发送的调度响应,所述调度响应包括调度粒度,所述调度粒度为所述队列调度器为所述第一队列分配的用于数据传输的额定数据量;

基于所述调度响应更新所述第一队列的当前队列信用值。

队列调度器接收队列管理器发送的调度请求后,可以根据调度请求所指示的调度状态运行调度算法,为第一队列分配用于数据传输的额定数据量,并向队列管理器发送携带有该额定数据量的调度响应,以便于队列管理器根据其进行队列信用更新,进而对第一队列中的数据包执行出队操作。

可选地,在所述基于所述调度响应更新所述第一队列的当前队列信用值之后,所述方法还包括:

基于更新后的当前队列信用值,对所述第一队列中相应长度的数据包执行出队操作。

在更新当前队列信用值后,若当前队列信用值满足第一队列中数据包的出队数据量,即可对第一队列中相应长度的数据包执行出队操作,以实现数据的传输。

进一步地,所述将所述调度请求发送至队列调度器,包括:

判断所述调度请求所指示的调度状态与所述第一队列对应的当前调度状态是否相同;

当所述调度请求所指示的调度状态与所述第一队列对应的当前调度状态不同时,将所述调度请求发送至所述队列调度器。

当生成了调度请求后,队列管理器可以将第一队列对应的当前调度状态与调度请求所指示的调度状态进行比较,当调度请求所指示的调度状态与第一队列对应的当前调度状态相同时,队列调度器可以继续按照当前调度状态对第一队列进行调度,此时,无需向队列调度器发送调度请求,这样可以节约系统资源;当调度请求所指示的调度状态与第一队列对应的当前调度状态不同时,将调度请求发送至队列调度器,以更新队列调度器对第一队列的调度状态。

可选地,在所述当第一队列的长度差值发生变化时,基于所述第一队列的长度差值和所述第一队列的队列长度确定目标概率之前,所述方法还包括:

当所述第一队列的队列长度发生变化时,确定所述第一队列的长度差值发生变化;

和/或,当所述第一队列的当前队列信用值发生变化时,确定所述第一队列的长度差值发生变化。

第二方面,本申请示例性实施例还提供了一种队列调度装置,所述装置包括:

第一确定模块,用于当第一队列的长度差值发生变化时,基于所述第一队列的长度差值和所述第一队列的队列长度确定目标概率;

生成模块,用于基于所述目标概率,进行调度请求的随机生成,使得所述调度请求生成的可能性与未生成的可能性的比例为所述目标概率,所述调度请求用于指示对所述第一队列进行调度的调度状态;

发送模块,用于当生成了所述调度请求,将所述调度请求发送至队列调度器;

其中,所述第一队列为所述队列管理器所管理的至少一个队列中的任一队列,所述长度差值为所述第一队列的当前队列信用值与所述第一队列的队列长度的差值,所述当前队列信用值为所述第一队列当前可用于数据传输的数据量额度。

可选地,所述第一确定模块,包括:

获取子模块,用于当所述第一队列的队列长度发生变化时,获取所述长度差值变化后的第一差值,和变化前的第二差值;

第一确定子模块,用于基于所述第一差值和所述第二差值中的至少一个,以及所述第一队列的队列长度确定所述目标概率。

作为一种可实现方式,所述第一确定子模块,包括:

第一比较单元,用于将所述第一差值分别与参考信用阈值以及调度粒度比较,所述参考信用阈值小于所述调度粒度,所述调度粒度为所述队列调度器对所述第一队列进行调度时,为所述第一队列分配的用于数据传输的额定数据量;

第一确定单元,用于当所述第一差值大于所述参考信用阈值且小于所述调度粒度时,基于所述第一差值和所述调度粒度确定所述目标概率。

其中,所述第一确定单元,用于:

将目标差值大于第一随机数的概率确定为所述目标概率,所述目标差值为所述调度粒度与所述第一差值的差值,所述第一随机数为随机产生且不大于所述调度粒度的正数。

作为另一种可实现方式,所述第一确定子模块,包括:

第一比较单元,用于将所述第二差值分别与参考信用阈值以及调度粒度比较,所述参考信用阈值小于所述调度粒度,所述调度粒度为所述队列调度器对所述第一队列进行调度时,为所述第一队列分配的用于数据传输的额定数据量;

第一确定单元,用于当所述第二差值大于所述参考信用阈值且小于所述调度粒度时,基于所述第二差值和目标包长确定所述目标概率,所述目标包长为使所述第一队列的队列长度发生变化的数据包的长度。

其中,所述第一确定单元,用于:

将所述目标包长大于第二随机数的概率确定为所述目标概率,所述第二随机数为随机产生且不大于所述第二差值的正数。

作为又一种可实现方式,所述第一确定子模块,包括:

第一比较单元,用于将所述第一差值与参考信用阈值以及调度粒度分别比较,所述参考信用阈值小于所述调度粒度,所述调度粒度为所述队列调度器对所述第一队列进行调度时,为所述第一队列分配的用于数据传输的额定数据量;

所述第一比较单元,用于将所述第二差值分别与所述参考信用阈值以及所述调度粒度比较;

第一确定单元,用于当所述第一差值与所述第二差值均满足:大于所述参考信用阈值且小于所述调度粒度时,基于所述第二差值和目标包长确定所述目标概率,所述目标包长为使所述第一队列的队列长度发生变化的数据包的长度。

其中,所述第一确定单元,用于:

将所述目标包长与所述第二差值的比值确定为所述目标概率。

作为再一种可实现方式,所述第一确定子模块,包括:

第一比较单元,用于将所述第一差值分别与参考信用阈值以及预设的第一信用阈值进行比较,所述第一信用阈值小于所述参考信用阈值;

第一确定单元,用于当所述第一差值大于所述第一信用阈值且小于所述参考信用阈值时,确定所述目标概率为1。

作为还一种可实现方式,所述第一确定子模块,包括:

第一比较单元,用于将所述第一差值与预设的第一信用阈值进行比较;

第一确定单元,用于当所述第一差值小于所述第一信用阈值时,确定所述目标概率为1。

可选地,所述第一确定模块,包括:

第二确定子模块,用于当所述第一队列的当前队列信用值发生变化时,根据所述长度差值确定所述目标概率。

作为一种可实现方式,所述第二确定子模块,包括:

第二比较单元,用于将所述长度差值分别与参考信用阈值以及调度粒度比较,所述参考信用阈值小于所述调度粒度,所述调度粒度为所述队列调度器对所述第一队列进行调度时,为所述第一队列分配的用于数据传输的额定数据量;

第二确定单元,用于当所述长度差值大于所述参考信用阈值且小于所述调度粒度时,基于所述长度差值和所述调度粒度确定所述目标概率。

其中,所述第二确定单元,用于:

将所述长度差值小于第一随机数的概率确定为所述目标概率,所述第一随机数为随机产生且不大于所述调度粒度的正数。

作为另一种可实现方式,所述第二确定子模块,包括:

第二比较单元,用于将所述长度差值分别与参考信用阈值以及预设的第一信用阈值进行比较,所述第一信用阈值小于所述参考信用阈值;

第二确定单元,用于当所述长度差值大于所述第一信用阈值且小于所述参考信用阈值时,确定所述目标概率为1。

作为又一种可实现方式,所述第二确定子模块,包括:

第二比较单元,用于将所述长度差值与预设的第一信用阈值进行比较;

第二确定单元,用于当所述长度差值小于所述第一信用阈值时,确定所述目标概率为1。

可选地,所述生成模块,用于:

当基于所述目标概率,选择生成所述调度请求时,基于选择结果生成所述调度请求,所述调度请求包括第一状态标识,所述第一状态标识指示所述队列调度器进行队列调度时的第一速率,所述第一速率小于预设的调度速率阈值。

可选地,所述生成模块,用于:

当基于所述目标概率,选择生成所述调度请求时,基于选择结果生成所述调度请求,所述调度请求包括第二状态标识,所述第二状态标识指示所述队列调度器进行队列调度时的第二速率,所述第二速率大于预设的调度速率阈值。

进一步地,所述装置还包括:

接收模块,用于接收所述队列调度器发送的调度响应,所述调度响应包括调度粒度,所述调度粒度为所述队列调度器为所述第一队列分配的用于数据传输的额定数据量;

更新模块,用于基于所述调度响应更新所述第一队列的当前队列信用值。

可选地,所述装置还包括:

执行模块,用于基于更新后的当前队列信用值,对所述第一队列中相应长度的数据包执行出队操作。

其中,所述发送模块,用于:

判断所述调度请求所指示的调度状态与所述第一队列对应的当前调度状态是否相同;

当所述调度请求所指示的调度状态与所述第一队列对应的当前调度状态不同时,将所述调度请求发送至所述队列调度器。

可选地,所述装置还包括:

第二确定模块,用于当所述第一队列的队列长度发生变化时,确定所述第一队列的长度差值发生变化;

和/或,所述第二确定模块,用于当所述第一队列的当前队列信用值发生变化时,确定所述第一队列的长度差值发生变化。

第三方面,本申请示例性实施例还提供了一种通信设备,所述通信设备包括:队列调度器和队列管理器;

所述队列管理器包括如第二方面任一所述的队列调度装置;

所述队列调度器用于在接收到所述队列管理器发送的调度请求后,向所述队列管理器发送调度响应,所述调度响应用于为基于所述调度请求分配用于数据传输的额定数据量。

第四方面,本申请示例性实施例还提供了一种队列调度装置,所述装置包括:

处理组件;

用于存储所述处理组件的可执行指令的存储器;

其中,所述处理组件被配置为:

当第一队列的长度差值发生变化时,基于所述第一队列的长度差值和所述第一队列的队列长度确定目标概率;

基于所述目标概率,进行调度请求的随机生成,使得所述调度请求生成的可能性与未生成的可能性的比例为所述目标概率,所述调度请求用于指示对所述第一队列进行调度的调度状态;

当生成了所述调度请求,将所述调度请求发送至队列调度器;

其中,所述第一队列为所述队列管理器所管理的至少一个队列中的任一队列,所述长度差值为所述第一队列的当前队列信用值与所述第一队列的队列长度的差值,所述当前队列信用值为所述第一队列当前可用于数据传输的数据量额度。

第五方面,本申请示例性实施例还提供了一种存储介质,当所述存储介质中的指令由终端的处理组件执行时,使得所述终端能够执行第一方面任一所述的队列调度方法。

本申请示例性实施例提供的技术方案带来的有益效果是:

本申请示例性实施例提供的队列调度方法及装置、通信设备、存储介质,通过在第一队列的长度差值发生变化时确定目标概率,基于目标概率,进行调度请求的随机生成,使得调度请求生成的可能性与未生成的可能性的比例为目标概率,且当生成了调度请求时,将调度请求发送至队列调度器,相对于相关技术,降低了队列管理器基于其所管理的多个队列生成调度请求的数量,使得队列管理器所管理的多个队列生成调度请求的数量尽量呈现出均匀分布的状态,能够有效地减小队列管理器向队列调度器发送调度请求的频率,进而减小队列调度器的调度负载,降低队列调度器对队列的调度出现调度时延较大的概率。

附图说明

图1a是本申请示例性实施例提供的一种队列调度方法所涉及的实施环境的示意图。

图1b是本申请示例性实施例提供的一种队列调度的原理示意图。

图2是本申请示例性实施例提供的一种队列调度方法的流程图。

图3是本申请示例性实施例提供的一种检测第一队列的队列长度是否发生变化的方法流程图。

图4是本申请示例性实施例提供的一种当第一队列的队列长度发生变化时,基于第一队列的目标长度差值和第一队列的队列长度确定目标概率的方法流程图。

图5是本申请示例性实施例提供的一种基于第一差值和第二差值中的至少一个,以及第一队列的队列长度确定目标概率的方法流程图。

图6是本申请示例性实施例提供的一种当第一队列的当前队列信用值发生变化时,根据长度差值确定目标概率的方法流程图。

图7a是本申请示例性实施例提供的一种队列调度装置的框图。

图7b是本申请示例性实施例提供的一种第一确定模块的框图。

图7c是本申请示例性实施例提供的一种第一确定子模块的框图。

图7d是本申请示例性实施例提供的另一种第一确定模块的框图。

图7e是本申请示例性实施例提供的一种第二确定子模块的框图。

图7f是本申请示例性实施例提供的另一种队列调度装置的框图。

图8是本申请示例性实施例提供的一种队列调度装置的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

请参见图1a,其示出了本申请示例性实施例中提供的一种队列调度方法所涉及的实施环境的示意图。如图1a所示,该实施环境可以包括:通信设备110、第一终端120和第二终端130。

其中,通信设备110可以为路由器或交换机等,第一终端120和第二终端130可以为智能手机、电脑、多媒体播放器、电子阅读器或可穿戴式设备等,通信设备110与第一终端120之间,以及通信设备110与第二终端130之间均可以通过有线网络或无线网络建立连接,在第一终端120与第二终端130通信过程中,通信设备110可以将第一终端120的信息转发至第二终端130。该信息通常以数据包的形式传输。

一般地,该通信设备110包括:队列管理器1101和队列调度器1102,该队列管理器1101和该队列调度器1102之间可以通过有线方式或无线方式连接。

该队列管理器1101管理多个队列,该多个队列是队列管理器1101根据接收到的数据包的描述信息(例如:输出端口、发送优先级和用户身份标识(identity,id)等信息)划分得到的,且每个队列中的多个数据包是按照队列管理器1101接收数据包的时间先后顺序排列的。

该队列管理器1101管理多个队列的过程,实际为队列调度过程,该队列调度过程主要包括入队管理过程和出队管理过程,本申请实施例以以下两方面为例进行说明:

第一,入队管理过程:队列管理器1101在接收到数据包后,对数据包执行入队操作以将数据包加入队尾。该入队操作可以为:将该数据包的描述符添加至队列对应的链表的末尾。

第二,出队管理过程:首先,队列管理器1101根据其管理的队列的队列状态向队列调度器1102发送调度请求;然后,队列调度器1102根据队列管理器1101发送的调度请求以及用户配置的qos策略产生调度响应,并将该调度响应发送至队列管理器1101;最后,队列管理器1101在接收到队列调度器1102发送的调度响应后,基于该调度响应对其管理的队列中的相应的数据包执行出队操作。该出队操作可以为:将位于队首的数据包的描述符从链表中读出。

进一步的,请参见图1b,队列管理器1101通常可以包括:入队模块、队列管理模块和出队模块,该三个模块配合实现队列调度过程,该队列调度的具体过程可以参考下述过程:

当队列管理器1101接收到某个数据包后,入队模块可按照该某个数据包的描述信息将该数据包划分至相应的队列(即执行入队操作),然后队列管理模块对其所管理的队列进行入队更新,接着,队列管理器1101可以根据其所管理的队列的队列长度和队列的当前队列信用值进行队列状态更新,并基于更新后的队列状态向队列调度器1102发送调度请求,该调度请求指示需要进行调度的目标队列,以及该目标队列的调度状态,队列调度器1102在接收该调度请求后,可根据该调度请求所指示的调度状态运行预设的调度算法,为该目标队列提供出队信用,该出队信用通常等于调度粒度,该调度粒度为队列调度器对队列进行调度时,为该队列分配的用于数据传输的额定数据量(例如:该调度粒度可以为1千字节(kb))。队列管理模块在接收队列调度器返回的带有出队信用的调度响应后,根据该出队信用更新目标队列的当前队列信用值,并向出队模块发送出队请求,以请求出队模块对数据包执行出队操作,出队模块接收到该出队请求后,可基于该更新后的目标队列的当前队列信用值将位于目标队列的队首的数据包出队,进而实现数据的发送。并且,在数据包出队后,队列管理模块可根据数据包的出队操作对其所管理的队列的进行出队更新。

其中,当前队列信用值为队列当前可用于数据传输的数据量额度。调度状态用于标识队列调度器对队列进行调度的速率。通常的调度状态有慢调度状态和快调度状态两种状态,其中,慢调度状态指示第一速率,快调度状态指示第二速率,该第一速率小于第二速率,实际实现时,该第一速率小于预设的调度速率阈值,该第二速率大于预设的调度速率阈值,示例地,第一速率可以为:200个时钟周期一次,第二速率可以为:10个时钟周期一次。

图2为本申请示例性实施例提供的一种队列调度方法的流程图,该队列调度方法可以应用于图1a或图1b所示的队列管理器中,该队列调度方法以第一队列为例进行说明,该第一队列为队列管理器所管理的至少一个队列中的任一队列。如图2所示,该队列调度方法可以包括:

步骤201、当第一队列的长度差值发生变化时,基于第一队列的长度差值和第一队列的队列长度确定目标概率。

其中,长度差值为第一队列的当前队列信用值与第一队列的队列长度的差值。并且,导致第一队列的长度差值发生变化的因素有很多,例如以下两种因素:第一,第一队列的队列长度发生变化,例如,当有新的数据包加入第一队列时,可以根据该数据包的长度和第一队列的历史长度更新第一队列的队列长度,相应的,该第一队列的长度差值会发生变化。第二,第一队列的当前队列信用值发生变化,例如,当队列调度器向第一队列发送调度结果时,队列管理器基于该调度结果更新当前队列信用值后,该第一队列的当前队列信用值会发生变化,相应的,该第一队列的长度差值会发生变化。

因此,可以通过检测第一队列的队列长度和/或当前队列信用值是否发生变化,来确定第一队列的长度差值是否发生变化,例如,在第一队列的队列长度和当前队列信用值中的至少一个发生变化时,确定第一队列的长度差值发生变化。

可选地,如图3所示,检测第一队列的队列长度是否发生变化的过程,可以包括:

步骤a、检测是否有新的数据包加入第一队列。

该步骤a的实现过程可以包括:检测第一队列对应的链表的长度是否变大,当第一队列对应的链表的长度增加时,可以确定有新的数据包的描述符添加至该链表中,也即是,可以确定有新的数据包加入第一队列,相应的,可以确定第一队列的队列长度发生变化。

步骤b、当有新的数据包加入第一队列时,确定第一队列的队列长度发生变化。

需要说明的是,该检测第一队列的队列长度并确定第一队列的队列长度发生变化的动作可以由图1b中的队列管理模块执行,且在实际实现时,该队列管理模块中可以设置有专用于检测队列长度的模块,或者,队列管理模块也可以在接收入队模块向其发送的入队更新请求后,确定有新的数据包加入第一队列,并确定第一队列的队列长度发生变化,本发明实施例对其不做具体限定。

对于上述两种导致第一队列的长度差值发生变化的因素,本申请示例性实施例一一对应地提供以下两种确定目标概率的可实现方式:

第一种可实现方式,当第一队列的队列长度发生变化时,基于第一队列的目标长度差值和第一队列的队列长度确定目标概率。

该目标长度差值可以为第一差值和第二差值中的至少一个,该第一差值为第一队列的当前队列信用值与第一队列的队列长度变化后的差值,该第二差值为第一队列的当前队列信用值与第一队列的队列长度变化前的差值。

可选地,请参考图4,该第一种可实现方式的实现过程可以包括:

步骤2011、当第一队列的队列长度发生变化时,获取长度差值变化后的第一差值,和变化前的第二差值。

当有新的数据包加入第一队列时,可以根据该数据包的长度和第一队列的历史长度更新第一队列的当前队列长度,且该当前队列长度可以为该数据包的长度与第一队列的历史长度之和。相应的,第一差值为第一队列的当前队列信用值与第一队列的当前队列长度的差值,第二差值为第一队列的当前队列信用值与第一队列的历史长度的差值。

示例地,假设在某时刻有数据包加入第一队列,该入队的数据包的大小为128字节(byte,b),在该数据包加入第一队列之前,第一队列的历史队列长度为128b,当前队列信用值为1kb,那么,在该数据包加入之后,第一队列的当前队列长度=128b+128b=256b,第一差值=1kb-256b=768b,第二差值=1kb-128b=896b。

步骤2012、基于第一差值和第二差值中的至少一个,以及第一队列的队列长度确定目标概率。

实际应用中,当第一差值和第二差值的大小不同时,根据其确定目标概率的方法不同,如图5所示,根据第一差值和第二差值的大小,该步骤2012的实现过程可以包括以下几种情况:

第一种情况:将第一差值分别与参考信用阈值以及调度粒度比较,当第一差值大于参考信用阈值且小于调度粒度时,基于第一差值和调度粒度确定目标概率。

可选地,该基于第一差值和调度粒度确定目标概率的实现方法可以包括:将目标差值大于第一随机数的概率确定为目标概率。

其中,目标差值为调度粒度与第一差值的差值,第一随机数为随机产生且不大于调度粒度的正数,且参考信用阈值小于调度粒度。该参考信用阈值和该调度粒度可以根据实际需要进行设置,例如:该参考信用阈值可以为0,调度粒度可以为1kb。

在该第一种情况下,当第一差值大于参考信用阈值且小于调度粒度时,可以确定第一队列还剩余有一定的队列信用,但该剩余的队列信用还不足以用于第一队列中的数据包出队,此时,为了保证第一队列中的数据包的有效出队,第一队列可以请求队列调度器对其进行调度,但是,为了避免队列管理器所管理的多个队列均向队列调度器发送调度请求,此时,可以确定生成调度请求的目标概率,以便于根据该目标概率随机地生成调度请求,以减小队列管理器向队列调度器发送调度请求的频率,减小队列调度器的调度负载,进而保证数据包的有效出队。

示例地,假设第一差值为768b,参考信用阈值为0,调度粒度为1kb,此时,第一差值大于参考信用阈值且小于调度粒度,则可以基于第一差值和调度粒度确定目标概率,并且,目标差值=1kb-768b=256b,由于第一随机数为随机产生且不大于调度粒度的正数,则可以确定目标差值大于第一随机数的概率=256b/1kb=1/4,即目标概率为1/4。

第二种情况:将第二差值分别与参考信用阈值以及调度粒度比较,当第二差值大于参考信用阈值且小于调度粒度时,基于第二差值和目标包长确定目标概率。

可选地,基于第二差值和目标包长确定目标概率的实现方法可以包括:将目标包长大于第二随机数的概率确定为目标概率。

其中,第二随机数为随机产生且不大于第二差值的正数,目标包长为使第一队列的队列长度发生变化的数据包的长度,也即是,目标包长为新加入第一队列的数据包的长度。

当第二差值大于参考信用阈值且小于调度粒度时,可以确定第一队列还剩余有一定的队列信用,但该剩余的队列信用还不足以用于第一队列中的数据包出队,此时,为了保证第一队列中的数据包的有效出队,以及为了避免队列管理器所管理的多个队列均向队列调度器发送调度请求,此时,可以确定生成调度请求的目标概率,以便于根据该目标概率随机地生成调度请求,进而保证数据包的有效出队。

示例地,假设新加入第一队列的数据包的长度(即目标包长)为128b,第二差值为896b,参考信用阈值为0,调度粒度为1kb,此时,第二差值大于参考信用阈值且小于调度粒度,则可以基于第二差值和目标包长确定目标概率,并且,由于第二随机数为随机产生且不大于第二差值的正数,则可以确定目标包长大于第二随机数的概率=128b/896b=1/7,即目标概率为1/7。

并且,当每次第一队列的队列长度发生变化时,均采用该第二种情况所提供的目标概率的确定方法来确定目标概率,可能出现基于多次确定的目标概率均无法生成调度请求的情况,但是,该多次确定的目标概率会按照时间的先后顺序依次递增,最终会出现目标概率为1的情况,此时可以生成调度请求。

为了描述的简洁,将上述第二种情况所提供的目标概率的确定方法简称为第一确定方法,将采用第一确定方法第i次确定的目标概率称为第i目标概率,该i为正整数。则若基于第1目标概率未生成调度请求,且又有新的数据包加入第一队列时,假设该新加入的数据包的长度为128b,此时,基于上述第一确定方法确定的第二差值=1kb-128b-128b=768b,目标包长大于第二随机数的概率=128b/768b=1/6,得到了第2目标概率为1/6。

若基于第2目标概率未生成调度请求,且又有新的数据包加入第一队列时,假设该新加入的数据包的长度为128b,此时,基于上述第一确定方法确定的第二差值=1kb-128b-128b-128b=640b,目标包长大于第二随机数的概率=128b/640b=1/5,即第3目标概率为1/5。

以此类推可得:第4目标概率为1/4,第5目标概率为1/3,第6目标概率为1/2,第7目标概率为1,则终有一次能够生成调度请求。

由此可见,在该情况下,基于第二差值和目标包长确定目标概率时,确定的目标概率呈现出更均匀的变化,能够进一步地减小队列管理器向队列调度器发送调度请求的频率,进而减小队列调度器的调度负载,能够进一步地降低队列调度器对队列的调度出现调度时延较大的概率。

第三种情况:将第一差值与参考信用阈值以及调度粒度分别比较,将第二差值分别与参考信用阈值以及调度粒度比较,当第一差值与第二差值均满足:大于参考信用阈值且小于调度粒度时,基于第二差值和目标包长确定目标概率。

可选地,基于第二差值和目标包长确定目标概率的实现方法可以包括:将目标包长与第二差值的比值确定为目标概率。

示例地,假设新加入第一队列的数据包的长度(即目标包长)为128b,第一差值为768b,第二差值为896b,参考信用阈值为0,调度粒度为1kb,此时,第一差值与第二差值均满足:大于参考信用阈值且小于调度粒度,则可以基于第二差值和目标包长确定目标概率,并且,目标包长与第二差值的比值=128b/896b=1/7,可以确定目标概率为1/7。

需要说明的是,在该情况下,基于第二差值和目标包长确定目标概率,相对于基于第一差值和调度粒度确定目标概率的处理方法,能够进一步地减小队列管理器向队列调度器发送调度请求的频率,进而减小队列调度器的调度负载,能够进一步地降低队列调度器对队列的调度出现调度时延较大的概率。

第四种情况:将第一差值分别与参考信用阈值以及预设的第一信用阈值进行比较,当第一差值大于第一信用阈值且小于参考信用阈值时,确定目标概率为1。

其中,第一信用阈值小于参考信用阈值,该第一信用阈值为对应于队列信用出现严重赤字时的阈值,例如:该第一信用阈值可以为快调度水线对应的信用阈值,当第一差值小于第一信用阈值时,第一队列急需队列调度器对其进行调度,例如:第一队列需要队列调度器以相对较大的速率对其进行调度,以保证第一队列中数据包的正常出队。并且,该第一信用阈值可以根据实际需要进行设置,例如:该第一信用阈值可以为-10k。

当第一差值大于第一信用阈值且小于参考信用阈值时,队列信用虽然出现赤字,但且出现赤字的情况不严重,此时,可以确定第一队列确实需要队列调度器对其进行调度,且为了保证第一队列中数据包的正常出队,该第一队列需要队列调度器以相对较小的速率对其进行调度。因此,当第一差值大于第一信用阈值且小于参考信用阈值时,可以确定目标概率为1。

示例地,假设第一差值为-768b,参考信用阈值为0,第一信用阈值为-10kb,此时,第一差值大于第一信用阈值且小于参考信用阈值,则可以确定目标概率为1,且该第一队列需要队列调度器以相对较小的速率对其进行调度。

第五种情况:将第一差值与预设的第一信用阈值进行比较,当第一差值小于第一信用阈值时,确定目标概率为1。

当第一差值小于第一信用阈值时,第一队列的队列信用出现严重赤字,第一队列急需队列调度器对其进行调度,例如:第一队列需要队列调度器以相对较大的速率对其进行调度,以保证第一队列中数据包的正常出队。

需要说明的是,当将第一差值和第二差值中的至少一个按照上述五种情况进行比较时,当第一差值和第二差值中的至少一个均不满足上述五种情况中的比较结果时,可以确定无需对第一队列进行调度。

第二种可实现方式,当第一队列的当前队列信用值发生变化时,根据长度差值确定目标概率。

可选地,请参考图6,该第二种可实现方式的实现过程可以包括以下几种情况:

第一种情况:将长度差值分别与参考信用阈值以及调度粒度比较,当长度差值大于参考信用阈值且小于调度粒度时,基于长度差值和调度粒度确定目标概率。

可选地,基于长度差值和调度粒度确定目标概率的实现方法可以包括:将长度差值小于第一随机数的概率确定为目标概率。

其中,该长度差值为长度差值变化后第一队列的当前队列信用值与第一队列的队列长度的差值。

在该第一种情况下,当长度差值大于参考信用阈值且小于调度粒度时,可以确定第一队列还剩余有一定的队列信用,但该剩余的队列信用还不足以用于第一队列中的数据包出队,此时,可以确定生成调度请求的目标概率,以随机地生成调度请求,减小队列管理器向队列调度器发送调度请求的频率,减小队列调度器的调度负载,进而保证数据包的有效出队。

示例地,假设长度差值为768b,参考信用阈值为0,调度粒度为1kb,此时,长度差值大于参考信用阈值且小于调度粒度,则可以基于长度差值和调度粒度确定目标概率,并且,由于第一随机数为随机产生且不大于调度粒度的正数,则可以确定长度差值小于第一随机数的概率=768b/1kb=1/4,即目标概率为3/4。

第二种情况:将长度差值分别与参考信用阈值以及预设的第一信用阈值进行比较,当长度差值大于第一信用阈值且小于参考信用阈值时,确定目标概率为1。

在该第二种情况中,第一队列的队列信用虽然出现赤字,但且出现赤字的情况不严重,此时,该第二种情况的实现过程请相应参考根据第一差值和第二差值的大小确定目标概率的第四种情况的实现过程,此处不再赘述。

第三种情况:将长度差值与预设的第一信用阈值进行比较,当长度差值小于第一信用阈值时,确定目标概率为1。

在该第三种情况中,第一队列的队列信用出现严重赤字,第一队列急需队列调度器对其进行调度,此时,该第三种情况的实现过程请相应参考根据第一差值和第二差值的大小确定目标概率的第五种情况的实现过程,此处不再赘述。

需要说明的是,当长度差值均不满足上述五种情况中的比较结果时,可以确定无需对第一队列进行调度。

实际应用中,在上述第一种可实现方式的五种情况中,以及在第二种可实现方式的三种情况中,将长度差值与各个范围进行比较的过程可以并行执行,也可以串行执行,本申请示例性实施例对其不做具体限定。

示例地,在第一种可实现方式中,当将长度差值与各个范围进行比较的过程为串行执行时,可以先将第一差值与预设的第一信用阈值进行比较,当第一差值不小于第一信用阈值时,将第一差值与参考信用阈值进行比较,当第一差值不满足大于第一信用阈值且小于参考信用阈值时,将第二差值与调度粒度比较,当第二插值差值不满足大于参考信用阈值且小于调度粒度时,再将第一差值与调度粒度比较,然后再根据比较结果确定目标概率。

在第二种可实现方式中,当将长度差值与各个范围进行比较的过程为串行执行时,可以先将长度差值与预设的第一信用阈值进行比较,当长度差值不小于第一信用阈值时,将长度差值与参考信用阈值进行比较,当长度差值不满足大于第一信用阈值且小于参考信用阈值时,将长度差值与调度粒度比较,然后再根据比较结果确定目标概率。

并且,由于第一信用阈值为对应于队列信用出现严重赤字时的阈值,先将第一差值(或长度差值)与预设的第一信用阈值进行比较,当第一差值(或长度差值)小于第一信用阈值时,可以及时地根据该严重赤字的情况执行生成调度请求的操作,进而及时地缓解队列信用出现严重赤字的情况,以保证第一队列中数据包的正常出队。

步骤202、基于目标概率,进行调度请求的随机生成,使得调度请求生成的可能性与未生成的可能性的比例为目标概率。

其中,调度请求用于指示对第一队列进行调度的调度状态。

相应的,基于上述第一种可实现方式和第二种可实现方式的不同情况,基于目标概率,进行调度请求的随机生成的可实现方式可以包括:当基于目标概率,选择生成调度请求时,基于选择结果生成调度请求。其中,该调度请求包括第一状态标识或第二状态标识,该第一状态标识指示队列调度器进行队列调度时的第一速率,该第二状态标识指示队列调度器进行队列调度时的第二速率。该第一速率小于预设的调度速率阈值,该第二速率大于预设的调度速率阈值。

并且,请参考图5和图6,当目标概率为基于上述第一种可实现方式中的第一至四种情况和第二种可实现方式中的第一种和第二种情况时,该第一队列需要队列调度器以相对较小的速率对其进行调度,此时,生成的调度请求可以包括第一状态标识;当目标概率为基于上述第一种可实现方式中的第五种情况,和第二种可实现方式中的第三种情况时,第一队列需要队列调度器以相对较大的速率对其进行调度,此时,生成的调度请求可以包括第二状态标识。

示例地,假设步骤201中基于第一差值和调度粒度(即第一种可实现方式的第一种情况)确定的目标概率为1/4,此时,在选择是否生成调度请求时,调度请求生成的可能性与未生成的可能性的比例为1/4,并且,当选择生成调度请求时,可以生成调度请求,并且生成的调度请求中包括第一状态标识,以请求队列调度器以第一速率对第一队列进行调度。

需要说明的是,当基于目标概率进行调度请求的随机生成时,由于调度请求生成的可能性与未生成的可能性的比例为目标概率,降低了队列管理器基于其所管理的多个队列生成调度请求的数量,使得队列管理器所管理的多个队列生成调度请求的数量尽量呈现出均匀分布的状态,相应的减小了队列管理器向队列调度器发送调度请求的频率,能够减小队列调度器的调度负载,使得调度状态的更新速率不超过队列调度器的调度能力,进而降低队列调度器对队列的调度出现调度时延较大的概率。

并且,由于队列管理器所管理的多个队列生成调度请求的数量能够尽量呈现出均匀分布的状态,使得所有队列的当前队列信用均匀分布在调度粒度对应的预设范围内,所有队列的队列信用的总和趋近于队列调度器能够调度的总调度带宽,使其实际的总调度带宽更准确,能够解决发送调度请求的频率较高时所引起的调度带宽过多和队列间调度带宽比例不准确等问题。

步骤203、当生成了调度请求,将调度请求发送至队列调度器。

可选地,将调度请求发送至队列调度器,包括:判断调度请求所指示的调度状态与第一队列对应的当前调度状态是否相同,当调度请求所指示的调度状态与第一队列对应的当前调度状态不同时,将调度请求发送至队列调度器。

当生成了调度请求后,队列管理器可以将第一队列对应的当前调度状态与调度请求所指示的调度状态进行比较,当调度请求所指示的调度状态与第一队列对应的当前调度状态相同时,队列调度器可以继续按照当前调度状态对第一队列进行调度,此时,无需向队列调度器发送调度请求,这样可以节约系统资源;当调度请求所指示的调度状态与第一队列对应的当前调度状态不同时,将调度请求发送至队列调度器,以更新队列调度器对第一队列的调度状态。

步骤204、接收队列调度器发送的调度响应。

其中,调度响应包括调度粒度。

队列调度器接收队列管理器发送的调度请求后,可以根据调度请求所指示的调度状态运行调度算法,为第一队列分配用于数据传输的额定数据量,并向队列管理器发送携带有该额定数据量的调度响应,以便于队列管理器对第一队列中的数据包执行出队操作。

步骤205、基于调度响应更新第一队列的当前队列信用值。

在队列管理器接收队列调度器发送的调度响应后,可以基于调度响应中携带的额定数据量更新第一队列的当前队列信用值,其更新方法可以包括:将生成调度请求时的当前队列信用值与额定数据量之和确定为更新后的当前队列信用值。

需要说明的是,在更新第一队列的当前队列信用值后,由于第一队列的当前队列信用值发生了变化,该第一队列的长度差值也会相应发生变化,此时,可以基于该变化后的长度差值和第一队列的队列长度再次确定目标概率,以便于更准确地确定当前的调度状态,使队列调度器更有效地对第一队列进行调度,进而实现资源的有效利用。

步骤206、基于更新后的当前队列信用值,对第一队列中相应长度的数据包执行出队操作。

在更新当前队列信用值后,若当前队列信用值满足第一队列中数据包的出队数据量,即可对第一队列中相应长度的数据包执行出队操作,以实现数据的传输。并且,由于在出队操作中,出队的数据包会消耗相同数据量的队列信用,因此,在执行操作出队操作之后,第一队列的长度差值不会发生变化,此时无需更新调度状态。

可选地,上述步骤201中基于第一队列的长度差值和第一队列的队列长度确定目标概率的动作动作,以及步骤202至步骤205的动作均可由图1b中的队列管理模块执行,上述步骤206的动作均可由图1b中的出队模块执行。

需要说明的是,在实际实现中上述过程可以通过简单的代码实现,例如,其可以采用if语句编写的代码实现,此处对其不做具体限定。

综上所述,本申请示例性实施例提供的队列调度方法,通过在第一队列的长度差值发生变化时确定目标概率,基于目标概率,进行调度请求的随机生成,使得调度请求生成的可能性与未生成的可能性的比例为目标概率,且当生成了调度请求时,将调度请求发送至队列调度器,相对于相关技术,降低了队列管理器基于其所管理的多个队列生成调度请求的数量,使得队列管理器所管理的多个队列生成调度请求的数量尽量呈现出均匀分布的状态,能够有效地减小队列管理器向队列调度器发送调度请求的频率,进而减小队列调度器的调度负载,降低队列调度器对队列的调度出现调度时延较大的概率。

需要说明的是,本发明实施例提供的队列调度方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。

下述为本申请的装置实施例,可以用于执行本申请的方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

请参考图7a,其示出了本申请示例性实施例提供的一种队列调度装置700的框图,如图7a所示,装置700可以包括:

第一确定模块701,用于当第一队列的长度差值发生变化时,基于第一队列的长度差值和第一队列的队列长度确定目标概率。

生成模块702,用于基于目标概率,进行调度请求的随机生成,使得调度请求生成的可能性与未生成的可能性的比例为目标概率,调度请求用于指示对第一队列进行调度的调度状态。

发送模块703,用于当生成了调度请求,将调度请求发送至队列调度器。

其中,第一队列为队列管理器所管理的至少一个队列中的任一队列,长度差值为第一队列的当前队列信用值与第一队列的队列长度的差值,当前队列信用值为第一队列当前可用于数据传输的数据量额度。

综上所述,本申请示例性实施例提供的队列调度装置,通过第一确定模块在第一队列的长度差值发生变化时确定目标概率,生成模块基于目标概率,进行调度请求的随机生成,使得调度请求生成的可能性与未生成的可能性的比例为目标概率,发送模块当生成了调度请求时,将调度请求发送至队列调度器,相对于相关技术,降低了队列管理器基于其所管理的多个队列生成调度请求的数量,使得队列管理器所管理的多个队列生成调度请求的数量尽量呈现出均匀分布的状态,能够有效地减小队列管理器向队列调度器发送调度请求的频率,进而减小队列调度器的调度负载,降低队列调度器对队列的调度出现调度时延较大的概率。

如图7b所示,第一确定模块701,可以包括:

获取子模块7011,用于当第一队列的队列长度发生变化时,获取长度差值变化后的第一差值,和变化前的第二差值。

第一确定子模块7012,用于基于第一差值和第二差值中的至少一个,以及第一队列的队列长度确定目标概率。

在一种可实现方式中,如图7c所示,第一确定子模块7012,可以包括:

第一比较单元7012a,用于将第一差值分别与参考信用阈值以及调度粒度比较,参考信用阈值小于调度粒度,调度粒度为队列调度器对第一队列进行调度时,为第一队列分配的用于数据传输的额定数据量。

第一确定单元7012b,用于当第一差值大于参考信用阈值且小于调度粒度时,基于第一差值和调度粒度确定目标概率。

可选地,第一确定单元7012b,用于:

将目标差值大于第一随机数的概率确定为目标概率,目标差值为调度粒度与第一差值的差值,第一随机数为随机产生且不大于调度粒度的正数。

在另一种可实现方式中,如图7c所示,第一确定子模块7012,可以包括:

第一比较单元7012a,用于将第二差值分别与参考信用阈值以及调度粒度比较,参考信用阈值小于调度粒度,调度粒度为队列调度器对第一队列进行调度时,为第一队列分配的用于数据传输的额定数据量。

第一确定单元7012b,用于当第二差值大于参考信用阈值且小于调度粒度时,基于第二差值和目标包长确定目标概率,目标包长为使第一队列的队列长度发生变化的数据包的长度。

可选地,第一确定单元7012b,用于:

将目标包长大于第二随机数的概率确定为目标概率,第二随机数为随机产生且不大于第二差值的正数。

在又一种可实现方式中,如图7c所示,第一确定子模块7012,可以包括:

第一比较单元7012a,用于将第一差值与参考信用阈值以及调度粒度分别比较,参考信用阈值小于调度粒度,调度粒度为队列调度器对第一队列进行调度时,为第一队列分配的用于数据传输的额定数据量。

第一比较单元7012a,用于将第二差值分别与参考信用阈值以及调度粒度比较。

第一确定单元7012b,用于当第一差值与第二差值均满足:大于参考信用阈值且小于调度粒度时,基于第二差值和目标包长确定目标概率,目标包长为使第一队列的队列长度发生变化的数据包的长度。

可选地,第一确定单元7012b,用于:

将目标包长与第二差值的比值确定为目标概率。

在再一种可实现方式中,如图7c所示,第一确定子模块7012,可以包括:

第一比较单元7012a,用于将第一差值分别与参考信用阈值以及预设的第一信用阈值进行比较,第一信用阈值小于参考信用阈值。

第一确定单元7012b,用于当第一差值大于第一信用阈值且小于参考信用阈值时,确定目标概率为1。

在还一种可实现方式中,如图7c所示,第一确定子模块7012,可以包括:

第一比较单元7012a,用于将第一差值与预设的第一信用阈值进行比较。

第一确定单元7012b,用于当第一差值小于第一信用阈值时,确定目标概率为1。

如图7d所示,第一确定模块701,可以包括:

第二确定子模块7013,用于当第一队列的当前队列信用值发生变化时,根据长度差值确定目标概率。

如图7e所示,第二确定子模块7013,可以包括:

第二比较单元7013a,用于将长度差值分别与参考信用阈值以及调度粒度比较,参考信用阈值小于调度粒度,调度粒度为队列调度器对第一队列进行调度时,为第一队列分配的用于数据传输的额定数据量。

第二确定单元7013b,用于当长度差值大于参考信用阈值且小于调度粒度时,基于长度差值和调度粒度确定目标概率。

可选地,第二确定单元7013b,用于:

将长度差值小于第一随机数的概率确定为目标概率,第一随机数为随机产生且不大于调度粒度的正数。

如图7e所示,第二确定子模块7013,可以包括:

第二比较单元7013a,用于将长度差值分别与参考信用阈值以及预设的第一信用阈值进行比较,第一信用阈值小于参考信用阈值。

第二确定单元7013b,用于当长度差值大于第一信用阈值且小于参考信用阈值时,确定目标概率为1。

如图7e所示,第二确定子模块7013,可以包括:

第二比较单元7013a,用于将长度差值与预设的第一信用阈值进行比较。

第二确定单元7013b,用于当长度差值小于第一信用阈值时,确定目标概率为1。

可选地,生成模块702,用于:

当基于目标概率,选择生成调度请求时,基于选择结果生成调度请求,调度请求可以包括第一状态标识,第一状态标识指示队列调度器进行队列调度时的第一速率,第一速率小于预设的调度速率阈值。

可选地,生成模块702,用于:

当基于目标概率,选择生成调度请求时,基于选择结果生成调度请求,调度请求可以包括第二状态标识,第二状态标识指示队列调度器进行队列调度时的第二速率,第二速率大于预设的调度速率阈值。

可选地,如图7f所示,装置700还可以包括:

接收模块704,用于接收队列调度器发送的调度响应,调度响应可以包括调度粒度,调度粒度为队列调度器为第一队列分配的用于数据传输的额定数据量。

更新模块705,用于基于调度响应更新第一队列的当前队列信用值。

可选地,如图7f所示,装置700还可以包括:

执行模块706,用于基于更新后的当前队列信用值,对第一队列中相应长度的数据包执行出队操作。

可选地,发送模块703,用于:

判断调度请求所指示的调度状态与第一队列对应的当前调度状态是否相同。

当调度请求所指示的调度状态与第一队列对应的当前调度状态不同时,将调度请求发送至队列调度器。

可选地,如图7f所示,装置700装置还可以包括:

第二确定模块707,用于当第一队列的队列长度发生变化时,确定第一队列的长度差值发生变化。

和/或,第二确定模块707,用于当第一队列的当前队列信用值发生变化时,确定第一队列的长度差值发生变化。

综上所述,本申请示例性实施例提供的队列调度装置,通过第一确定模块在第一队列的长度差值发生变化时确定目标概率,生成模块基于目标概率,进行调度请求的随机生成,使得调度请求生成的可能性与未生成的可能性的比例为目标概率,发送模块当生成了调度请求时,将调度请求发送至队列调度器,相对于相关技术,降低了队列管理器基于其所管理的多个队列生成调度请求的数量,使得队列管理器所管理的多个队列生成调度请求的数量尽量呈现出均匀分布的状态,能够有效地减小队列管理器向队列调度器发送调度请求的频率,进而减小队列调度器的调度负载,降低队列调度器对队列的调度出现调度时延较大的概率。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、模块和子模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本申请示例性实施例还提供了一种通信设备,通信设备包括:队列调度器和队列管理器;

该队列管理器包括如图7a或图7f所示的队列调度装置。

该队列调度器用于在接收到队列管理器发送的调度请求后,向队列管理器发送调度响应,调度响应用于为基于调度请求分配用于数据传输的额定数据量。

本申请示例性实施例还提供了一种队列调度装置,装置包括:

处理组件;

用于存储处理组件的可执行指令的存储器;

其中,处理组件被配置为:

当第一队列的长度差值发生变化时,基于第一队列的长度差值和第一队列的队列长度确定目标概率;

基于目标概率,进行调度请求的随机生成,使得调度请求生成的可能性与未生成的可能性的比例为目标概率,调度请求用于指示对第一队列进行调度的调度状态;

当生成了调度请求,将调度请求发送至队列调度器;

其中,第一队列为队列管理器所管理的至少一个队列中的任一队列,长度差值为第一队列的当前队列信用值与第一队列的队列长度的差值,当前队列信用值为第一队列当前可用于数据传输的数据量额度。

本申请示例性实施例提供了一种队列调度装置20,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现本申请上述实施例提供的任一的队列调度方法。

具体地,该终端可以为如图8所示的队列调度装置20,请参考图8,其示出了本申请示例性实施例涉及的一种队列调度装置20的结构示意图,该队列调度装置20可以包括:处理器22和信号接口24。

处理器22包括一个或者一个以上处理核心。处理器22通过运行软件程序以及模块,从而执行各种功能应用以及数据处理。

信号接口24可以为多个,该信号接口24用于与其它装置或模块建立连接,例如:可以通过该信号接口24与扬声器或耳机进行连接。

可选的,队列调度装置20还包括存储器26、总线28等部件。其中,存储器26与信号接口24分别通过总线28与处理器22相连。

存储器26可用于存储软件程序以及模块。具体的,存储器26可存储至少一个功能所需的应用程序模块262。

其中,该应用程序模块262可以包括:

第一确定单元2621,具有与第一确定模块701相同或相似的功能。

生成单元2622,具有与生成模块702相同或相似的功能。

发送单元2623,具有与发送模块703相同或相似的功能。

本申请示例性实施例还提供了一种存储介质,该存储介质可以为非易失性计算机可读存储介质,当存储介质中的指令由终端的处理组件执行时,使得终端能够执行本申请示例性实施例提供的队列调度方法。

本申请示例性实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行本申请示例性实施例提供的队列调度方法。

需要说明的是:上述实施例提供的队列调度方法也可用于其他需要单个个体做向上取整或进位随机计算,使包括多个个体的总体产生随机结果速度是均匀的场景,且总体余数尽量靠近预设值,例如:接口处多端口拼包到固定长度就需要发送,需要随机均匀发送避免突发,本申请示例性实施例对其不做具体限定。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1