From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk0-x235.google.com (mail-qk0-x235.google.com [IPv6:2607:f8b0:400d:c09::235]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id CCB6821F50E for ; Wed, 3 Jun 2015 15:16:13 -0700 (PDT) Received: by qkhg32 with SMTP id g32so14358720qkh.0 for ; Wed, 03 Jun 2015 15:16:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=wHTDxY+G87/hCXpUNW5CT23xvCh1BH56ErnOpElOEX8=; b=vhaNG6y5ZmCOxbdN8CFaKxrB1z+ZFDidc35r6QCot8/NTM8jlcPPk4hcwCRh+1OX4n fxQHZ8tzUK3aClJf7bd+ZF4Hq+LfewAqn1Z6/DLmmEW3ZYGzlv3Tbp4JGo/RstOwJbRg fun5+G9KNcG3lwViBFazEGL0nHJDmJWh0rj9hwG81OSUrvqu0r3dcsP0syszYijUCwTD R/CUEI/S4aM8uwrvBtirY5GSwrWLbt89fLjmI622dIGjBWQDduGnmHjT4+arhjA+KwUD 5cqvYUeTehCSI0r3aU+jb9Rz+YQa/F2nasf34lQd3atoOjMqLmBTYP6LOIrYuduGLhrc S4IA== MIME-Version: 1.0 X-Received: by 10.55.25.134 with SMTP id 6mr64205723qkz.13.1433369772227; Wed, 03 Jun 2015 15:16:12 -0700 (PDT) Received: by 10.96.187.71 with HTTP; Wed, 3 Jun 2015 15:16:12 -0700 (PDT) In-Reply-To: <5A699476-8E71-4D38-BABE-F755931447B5@gmx.de> References: <5A699476-8E71-4D38-BABE-F755931447B5@gmx.de> Date: Wed, 3 Jun 2015 15:16:12 -0700 Message-ID: From: Aaron Wood To: Sebastian Moeller Content-Type: multipart/related; boundary=001a114738bc1cbfe20517a468f5 Cc: cerowrt-devel Subject: Re: [Cerowrt-devel] ingress rate limiting falling short X-BeenThere: cerowrt-devel@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Development issues regarding the cerowrt test router project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jun 2015 22:16:42 -0000 --001a114738bc1cbfe20517a468f5 Content-Type: multipart/alternative; boundary=001a114738bc1cbfdc0517a468f4 --001a114738bc1cbfdc0517a468f4 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable > > 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 ;) > Yeah, I'm not too worried about that 5%, based on that explanation. > > > But on my new WRT1900AC, it's wildly off, even over the same performanc= e > 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? Yeah, good point on a methodology fail. I'll run another series of tests walking up the same series of rate limits and see what I get. > I also note we adjust the quantum based on the rates: > from functions .sh: > get_mtu() { > ... snip > } > > which we use in the htb invocations via this indirection: > LQ=3D"quantum `get_mtu $IFACE $CEIL`=E2=80=9D > > That is odd, and that's quite the aggressive curve on quantum, doubling every 10-20Mbps. I did some math, and plotted out the quantum vs. bandwidth based on that snippet of code (and assuming a 1500-byte MTU): =E2=80=8BAnd then plotted out the corresponding time in ms that each quantu= m bytes (it is bytes, right?) is on the wire: =E2=80=8BWhich I think is a really interesting plot (and here are the point= s that line up with the steps in the script): kbps =3D quantum =3D time 20000 =3D 3000 =3D 1.2ms 30000 =3D 6000 =3D 1.6ms 40000 =3D 12000 =3D 2.4ms 50000 =3D 24000 =3D 3.84ms 60000 =3D 48000 =3D 6.4ms 80000 =3D 96000 =3D 9.6ms So it appears that the goal of these values was to keep increases the quantum as rates went up to provide more bytes per operation, but that's going to risk adding latency as the time-per-quantum crosses the delay target in fq_codel (if I'm understanding this correctly). So one thing that I can do is play around with this, and see if I can keep that quantum time at a linear level (ie, 10ms, which seems _awfully_ long), or continue increasing it (which seems like a bad idea). I'd love to hear from whoever put this in as to what it's goal was (or was it just empirically tuned?) > > > 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. > Agreed. -Aaron --001a114738bc1cbfdc0517a468f4 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

=
> On the 3800, it never meets the rate, but it's only off by maybe 5= %.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 As Jonathan pointed out already this is = in the range of the difference between raw rates and tcp good put, so nothi= ng to write home about ;)

Yeah, I'm= not too worried about that 5%, based on that explanation.
=C2=A0=

> But on my new WRT1900AC, it's wildly off, even over the same perfo= rmance range (I tested it from 80-220Mbps rates in 20Mbps jumps, and saw fr= om 40-150Mbps.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 So you started with the WRT1900AC where = the wndr3800 dropped off? I wonder maybe the Belkin is also almost linear f= or the lower range?

Yeah, good point on a m= ethodology fail.=C2=A0 I'll run another series of tests walking up the = same series of rate limits and see what I get.
=C2=A0
I also note we adjust the quantum based on the rates:
from functions .sh:
get_mtu() {
... snip=C2=A0
}

which we use in the htb invocations via this indirection:
LQ=3D"quantum `get_mtu $IFACE $CEIL`=E2=80=9D


That is odd, and that's quite the = aggressive curve on quantum, doubling every 10-20Mbps. =C2=A0
I did some math, and plotted out the quantum vs. bandwidth base= d on that snippet of code (and assuming a 1500-byte MTU):



=E2=80=8BAnd then plotted out the corresponding time in ms= that each quantum bytes (it is bytes, right?) is on the wire:


=E2=80=8BWhich I think is a really interesting plot (= and here are the points that line up with the steps in the script):

kbps =3D quantum =3D time
20000 =3D 30= 00 =3D 1.2ms
30000 =3D 6000 =3D 1.6ms
40000 =3D 12000 = =3D 2.4ms
50000 =3D 24000 =3D 3.84ms
60000 =3D 48000 = =3D 6.4ms
80000 =3D 96000 =3D 9.6ms

So it appears that the goal of these values was to keep increases the qua= ntum as rates went up to provide more bytes per operation, but that's g= oing to risk adding latency as the time-per-quantum crosses the delay targe= t in fq_codel (if I'm understanding this correctly).

So one thing that I can do is play around with this, and see if I ca= n keep that quantum time at a linear level (ie, 10ms, which seems _awfully_= long), or continue increasing it (which seems like a bad idea).=C2=A0 I= 9;d love to hear from whoever put this in as to what it's goal was (or = was it just empirically tuned?)

= >
> I have no idea where to start looking for the cause.=C2=A0 But for now= , I'm just setting my ingress rate MUCH higher than I should, because i= t's working out to the right value as a result.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 It would be great to understand why we n= eed to massively under-shape in that situation to get decent shaping and de= cent latency under load.

Agreed.
<= div>
-Aaron=C2=A0
--001a114738bc1cbfdc0517a468f4-- --001a114738bc1cbfe20517a468f5 Content-Type: image/png; name="quantum_per_kbps.png" Content-Disposition: inline; filename="quantum_per_kbps.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_iahb3yb21_14dbb78be4ff0cbf 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 --001a114738bc1cbfe20517a468f5 Content-Type: image/png; name="quantum_in_ms_per_kbps.png" Content-Disposition: inline; filename="quantum_in_ms_per_kbps.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_iahb5j3j2_14dbb79dca182cd3 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 /w/K3ItjQkOvPwAAAABJRU5ErkJggg== --001a114738bc1cbfe20517a468f5--