[Cerowrt-devel] ingress rate limiting falling short
Sebastian Moeller
moeller0 at gmx.de
Wed Jun 3 13:49:40 EDT 2015
HI Aaron,
On Jun 3, 2015, at 07:45 , Aaron Wood <woody77 at gmail.com> wrote:
> I wrote this up on my blog, where I can intersperse text and graphs a bit better:
>
> http://burntchrome.blogspot.com/2015/06/htb-rate-limiting-not-quite-lining-up.html
>
> Basically, I ran a series of tcp_download tests, using increasing ingress rates with sqm_scripts, and then used flent's box-plots to put the results into a combined image for comparing.
>
> On the 3800, it never meets the rate, but it's only off by maybe 5%.
As Jonathan pointed out already this is in the range of the difference between raw rates and tcp good put, so nothing to write home about ;)
> But on my new WRT1900AC, it's wildly off, even over the same performance range (I tested it from 80-220Mbps rates in 20Mbps jumps, and saw from 40-150Mbps.
So you started with the WRT1900AC where the wndr3800 dropped off? I wonder maybe the Belkin is also almost linear for the lower range? I also note we adjust the quantum based on the rates:
from functions .sh:
get_mtu() {
BW=$2
F=`cat /sys/class/net/$1/mtu`
if [ -z "$F" ]
then
F=1500
fi
if [ $BW -gt 20000 ]
then
F=$(($F * 2))
fi
if [ $BW -gt 30000 ]
then
F=$(($F * 2))
fi
if [ $BW -gt 40000 ]
then
F=$(($F * 2))
fi
if [ $BW -gt 50000 ]
then
F=$(($F * 2))
fi
if [ $BW -gt 60000 ]
then
F=$(($F * 2))
fi
if [ $BW -gt 80000 ]
then
F=$(($F * 2))
fi
echo $F
}
which we use in the htb invocations via this indirection:
LQ="quantum `get_mtu $IFACE $CEIL`”
$TC qdisc add dev $DEV root handle 1: `get_stab_string` htb default 12
$TC class add dev $DEV parent 1: classid 1:1 htb $LQ rate ${CEIL}kbit ceil ${CEIL}kbit `get_htb_adsll_string`
$TC class add dev $DEV parent 1:1 classid 1:10 htb $LQ rate ${CEIL}kbit ceil ${CEIL}kbit prio 0 `get_htb_adsll_string`
$TC class add dev $DEV parent 1:1 classid 1:11 htb $LQ rate 32kbit ceil ${PRIO_RATE}kbit prio 1 `get_htb_adsll_string`
$TC class add dev $DEV parent 1:1 classid 1:12 htb $LQ rate ${BE_RATE}kbit ceil ${BE_CEIL}kbit prio 2 `get_htb_adsll_string`
$TC class add dev $DEV parent 1:1 classid 1:13 htb $LQ rate ${BK_RATE}kbit ceil ${BE_CEIL}kbit prio 3 `get_htb_adsll_string`
So maybe we need to extend the quantum increases beyond 80Mbps to keep things linear?
I don’t know but it sure looks suspicious…
>
> I have no idea where to start looking for the cause. But for now, I'm just setting my ingress rate MUCH higher than I should, because it's working out to the right value as a result.
It would be great to understand why we need to massively under-shape in that situation to get decent shaping and decent latency under load.
Best Regards
Sebastian
>
> -Aaron
> _______________________________________________
> Cerowrt-devel mailing list
> Cerowrt-devel at lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cerowrt-devel
More information about the Cerowrt-devel
mailing list