[Codel] better mixing in fq_codel
eric.dumazet at gmail.com
Thu Aug 30 19:06:38 EDT 2012
On Thu, 2012-08-30 at 15:59 -0700, Dave Taht wrote:
> I have finally found the source of the issues I was having with htb +
> fq_codel at low bandwidths, and it wasn't htb to the extent I thought
> it was.
> It was fq_codel's use of byte quantums, which was resulting in head of
> line blocking for multiple streams.
> The undesirable behavior (quantum of 1500)
> A new stream, 15 acks (1500 bytes or so)
> B new stream, 4 acks (66 bytes each)
> C new stream, 1 packet, 1500 bytes
> Each stream would be delivered in an entire quantum's quantity before
> the next. This is basically something that is nearly unnoticable at
> higher bandwidths, but down here in the slow moving mud, it's quite
> significant. At 1 mbit, 1500 bytes is forever...
> Better mixing behavior results from
> A 1 packet
> B 1 packet
> C 1 packet (if not larger than quantum)
> A 1 packet ""
> B 1 packet ""
> While I have a patch for this (all 5 lines of it), which does this
> sort of mixing, it crashes under load, but I'll get there. Behavior
> before it crashes is rather nice, where before I was observing
> something like 36 ms of delay with htb for: small packets, "sparse" or
> ANT streams under a variety of loads, it drops below 3ms in the
> general case for those. Both qos-scripts and simple-qos benefit
> One of these three sets of changes to fq_codel_dequeue or enqueue is
> dubious. (well, I have a half dozen other patches and fixups to codel
> and fq_codel in the queue too, so have to rip out each). But yea! this
> is the low bandwidth behavior we want!
You dont need a patch, fq_codel has a quantum parameter, default to 1514
Just set it to 256 if you really feel the need.
More information about the Codel