Networking 队列为空后的加权循环

Networking 队列为空后的加权循环,networking,linux-kernel,scheduling,packets,round-robin,Networking,Linux Kernel,Scheduling,Packets,Round Robin,在数据包的加权循环实现中,当队列为空时,我应该怎么做? 示例:假设4个队列的权重分别为10%、30%、20%、40%。现在假设30%的队列是空的-我应该将权重重新分配到其他队列吗?如果是,那么应该如何将其重新分发到其他数据包 (我需要一个在linux内核或以前在加权循环调度中的其他平台上完成的实现)如果队列为空,重新分配权重的一种方法是在繁忙队列中保持公平。只需按照其他队列的权重比例将额外带宽分配给它们 示例:如果30为空,则可以大致调整其他值: 10->14.3 20->28.6 40->57

在数据包的加权循环实现中,当队列为空时,我应该怎么做? 示例:假设4个队列的权重分别为10%、30%、20%、40%。现在假设30%的队列是空的-我应该将权重重新分配到其他队列吗?如果是,那么应该如何将其重新分发到其他数据包


(我需要一个在linux内核或以前在加权循环调度中的其他平台上完成的实现)

如果队列为空,重新分配权重的一种方法是在繁忙队列中保持公平。只需按照其他队列的权重比例将额外带宽分配给它们

示例:如果30为空,则可以大致调整其他值:

10->14.3

20->28.6


40->57.1

如果您事先知道/估计平均数据包大小,只需跳过空队列即可。如果您使用的是基于轮次的服务,而不是对带宽进行分区,那么获得与上述答案相同结果的方法是从服务列表中删除空队列。(即,如果A=40%B=30%C=20%D=10%重量,ABACBACD将变为AACAAD)