On 7 May 2016 at 12:57, Kevin Darbyshire-Bryant <ke...@darbyshire-bryant.me.uk> wrote: > > > On 06/05/16 10:42, Jesper Dangaard Brouer wrote: >> Hi Felix, >> >> This is an important fix for OpenWRT, please read! >> >> OpenWRT changed the default fq_codel sch->limit from 10240 to 1024, >> without also adjusting q->flows_cnt. Eric explains below that you must >> also adjust the buckets (q->flows_cnt) for this not to break. (Just >> adjust it to 128) >> >> Problematic OpenWRT commit in question: >> http://git.openwrt.org/?p=openwrt.git;a=patch;h=12cd6578084e >> 12cd6578084e ("kernel: revert fq_codel quantum override to prevent it from >> causing too much cpu load with higher speed (#21326)") > I 'pull requested' this to the lede-staging tree on github. > https://github.com/lede-project/staging/pull/11 > > One way or another Felix & co should see the change :-)
If you would follow the white rabbit, you would see that it doesn't help >> >> >> I also highly recommend you cherry-pick this very recent commit: >> net-next: 9d18562a2278 ("fq_codel: add batch ability to fq_codel_drop()") >> https://git.kernel.org/davem/net-next/c/9d18562a227 >> >> This should fix very high CPU usage in-case fq_codel goes into drop mode. >> The problem is that drop mode was considered rare, and implementation >> wise it was chosen to be more expensive (to save cycles on normal mode). >> Unfortunately is it easy to trigger with an UDP flood. Drop mode is >> especially expensive for smaller devices, as it scans a 4K big array, >> thus 64 cache misses for small devices! >> >> The fix is to allow drop-mode to bulk-drop more packets when entering >> drop-mode (default 64 bulk drop). That way we don't suddenly >> experience a significantly higher processing cost per packet, but >> instead can amortize this. > I haven't done the above cherry-pick patch & backport patch creation for > 4.4/4.1/3.18 yet - maybe if $dayjob permits time and no one else beats > me to it :-) > > Kevin >