QoS CBWFQ traffic allocation when there are empty queues
When implementing QoS, the CBWFQ scheduler guarantees a minimum percentage of a link's bandwidth to each class/queue. If all queues have a large number packets, each queue gets the percentage bandwidth implied by the configuration. However, if some queues are empty and do not need their bandwidth for a short period, the bandwidth is proportionally allocated across the other classes.
Note that this information comes from analysis of the real operation of CBWFQ in Cisco devices. Cisco does not publish the details of how its CBWFQ algorithm achieves these functions.