On Monday, May 29, 2006, at 10:48 US/Pacific, Karl O. Pinc wrote:
On 05/29/2006 07:02:40 AM, Steven Surdock wrote:
I found that cbq didn't borrow as aggressively as I expected.
Switching to the hfsc scheduler approached closer to what I wanted.
That does seem to be better, but I clearly am not getting how hfsc
uses the 'bandwidth' parameter as it seems to be using more bandwidth
for a sub-queue than 'bandwidth' would allow. Perhaps I should be
setting "upperlimit" as well....
HFSC is different enough that the "bandwidth" setting alone often
doesn't make much sense. CBQ works in terms of bandwidth limits; HFSC
works with bandwidth guarantees. You've got 3 options to play with:
hfsc(realtime) is the minimum bandwidth for this queue. No matter what
traffic comes along, a queue is guaranteed to get at least this much
bandwidth.
hfsc(upperlimit) is the maximum bandwidth for this queue. It will
never get more than this.
hfsc(linkshare) is what the "bandwidth" setting controls. It sets the
weight of this queue (in relation to the others) for excess bandwidth
on the interface, which is what is left over after the realtime
guarantees have been satisfied for all queues. If you had 2 queues,
each with a linkshare of 50% (or the equivalent bandwidth setting), and
both queues were equally contending for the same bandwidth, they would
each get 50% of the excess. If one queue wasn't in use at all, the
other would get 100%.
For a given queue, available bandwidth under HFSC is:
realtime <= (excess weighted by linkshare) <= upperlimit