[Bloat] Quick Fair Queue scheduler maturity and examples

Eric Dumazet eric.dumazet at gmail.com
Wed Nov 2 03:31:09 PDT 2011


Le mercredi 02 novembre 2011 à 11:05 +0100, David Täht a écrit :
> (Example elided, see thread on netdev)
> 
> On 11/02/2011 10:36 AM, Karel Rericha wrote:
> > 2011/10/27 Eric Dumazet<eric.dumazet at gmail.com>:
> > Thanks for example Eric. But it only added more confusion to me now 
> > :-) I was under impression (and read somewhere) that QFQ is non work 
> > conserving scheduler so I can use it more or less like HTB or HFSC to 
> > set bandwidth constraints to flows. But from this example (and from 
> > sources/patches/papers I try not to pretend I fully understand) it 
> > looks to me like some multiqueue scheduler with arbitrary number of 
> > queues and ability to arbitrary assign flows to this queues. So some 
> > sort of fair division of available bandwidth to flows without 
> > arbitrary bandwidth caps to these flows. 
> This is what I want! It may not be what you want...
> > I really dont see what is non work conserving here :-S Please save my 
> > soul and enlighten me because I am at dead end now :-)
> 
> I initially had great hope for QFQ as I've been saying (mostly 
> privately) that "PFIFO_FAST must die" for over a year now. What to 
> replace it with is a rather large question, but I felt a start would be 
> to adopt some FQ algorithm. Over the last couple weeks I read all the 
> papers regarding DRR and QFQ and also poked into the source code and 
> like you, am seriously un-enlightened.
> 
> I think eric's example is misleading as he divided up the queues by 
> bandwidth, rather than flow, in the first tier of his tc hierarchy. 
> useful as a test...

It seems there is a bit of misunderstanding here.

QFQ is not a 'all is included' in one qdisc, like SFQ

You really need to setup qfq classes, and describe how packets are
mapped to qfq classes (this is done by an external flow classifier)

It also has no internal (default) flow classifier like SFQ did.

It has of course no bandwidth constraints. If you need to shape and use
QFQ, you'll have to use QFQ + a shaping qdisc. (This is why I used HTB
in my script because I wanted to shape)

If you dont need to shape, you still need to describe/setup qfq classes
and chose appropriate flow classifier.





More information about the Bloat mailing list