@tman222:
@Nullity:
AFAIK, (our) CoDel simply controls (FAIRQ's) global buffer size, it doesn't add another buffer. Just like when you manually set a queue's maximum depth, except codel dynamically and intelligently controls it.
CoDel could also be applied to each of FAIRQ's per-flow pseudo-queues… but I dunno if it does. I think it's unlikely.
It shouldn't be too hard for some programmer to find proof of these hypotheses in the source-code and present it to us non-programmers.
Who knows? ermal would know, but he's no longer around. :(
Thanks Nullity. If it's just one giant queue/buffer of buckets controlled by Codel wouldn't the fairness of FAIRQ break down? In other words, how would the FAIRQ algorithm be able to go round robin and dequeue one packet at a time from each flow? It seems that if Codel controlled the size of the queue/buffer that contained the buckets (vs. controlling the flow queues), it would no longer be fair as some buckets at the end may be dropped (i.e. the algorithm would never get to them). I could be completely wrong though. I looked a little through the source code (findings further up in this thread), and it seemed like that the queue management algorithm chosen (Red, Codel, etc.) is applied per bucket.
Thanks again for all your help and explanation guys, I really appreciate it.
FAIRQ controls the ordering of queued packets, nothing more.
CoDel controls queue depth, nothing more.
That's how I understand it…