[Codel] [OpenWrt-Devel] [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: fq_codel_drop vs a udp flood)

Sebastian Moeller moeller0 at gmx.de
Mon May 16 06:34:24 EDT 2016

Hi David,

On May 16, 2016 10:46:25 AM GMT+02:00, David Lang <david at lang.hm> wrote:
>On Mon, 16 May 2016, Roman Yeryomin wrote:
>> On 16 May 2016 at 11:12, David Lang <david at lang.hm> wrote:
>>> On Mon, 16 May 2016, Roman Yeryomin wrote:
>>>> On 6 May 2016 at 22:43, Dave Taht <dave.taht at gmail.com> wrote:
>>>>> On Fri, May 6, 2016 at 11:56 AM, Roman Yeryomin
><leroi.lists at gmail.com>
>>>>> wrote:
>>>>>> On 6 May 2016 at 21:43, Roman Yeryomin <leroi.lists at gmail.com>
>>>>>>> On 6 May 2016 at 15:47, Jesper Dangaard Brouer
><brouer at redhat.com>
>>>>>>> wrote:
>>>>> That is too low a limit, also, for normal use. And:
>>>>> for the purpose of this particular UDP test, flows 16 is ok, but
>>>>> ideal.
>>>> I played with different combinations, it doesn't make any
>>>> (significant) difference: 20-30Mbps, not more.
>>>> What numbers would you propose?
>>> How many different flows did you have going at once? I believe that
>>> reason for higher numbers isn't for throughput, but to allow for
>more flows
>>> to be isolated from each other. If you have too few buckets,
>different flows
>>> will end up being combined into one bucket so that one will affect
>the other
>>> more.
>> I'm testing with one flow, I never saw bigger performance with more
>> flows (e.g. -P8 to iperf3).
>The issue isn't performance, it's isolating a DNS request from a VoIP
>from a streaming video flow from a DVD image download.
>The question is how many buckets do you need to have to isolate these
>practice? it depends how many flows you have. The default was 1024
>buckets, but 
>got changed to 128 for low memory devices, and that lower value got
>made into 
>the default, even for devices with lots of memory.

And I believe that the reduction was suboptimal, we need the Hash buckets to spread the glows around to avoid shared fate due to shared buckets... So the 1024 glows make a lot of sense even if the number of real  concurrent flows is lower think birthday paradoxon.
The change came because at full saturation our reduced packet limit only allowed one packet per bucket which is too low for decent performance... also less hash buckets make searching faster.
Since we now can specify a memory limit in addition to the packet limit, we should set the packet limit back to its default of 10240 and instead set the memory limit to something same for each platform. This will effectively have the same consequences as setting a packet limit, except it becomes clearer why performance degrades and I at least take a performance hit gladly over a forced oom reboot....

>I'm wondering if instead of trying to size this based on device memory,
>can it 
>be resizable on the fly and grow if too many flows/collisions are
>David Lang
>openwrt-devel mailing list
>openwrt-devel at lists.openwrt.org

Sent from my Android device with K-9 Mail. Please excuse my brevity.

More information about the Codel mailing list