From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ob0-x232.google.com (mail-ob0-x232.google.com [IPv6:2607:f8b0:4003:c01::232]) (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 74C6F21F4EE; Wed, 3 Jun 2015 15:34:25 -0700 (PDT) Received: by obcnx10 with SMTP id nx10so19628866obc.2; Wed, 03 Jun 2015 15:34:24 -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=ELv4+RYUv0cG3ycpRgkCNQfzAZezF4j/Jg7s+Mpoovo=; b=I5sO4+xie/gsb34zpUj7eVL/zHh86RdgRax9OTwb4dNSp5cXtH6V5U3gv7/VtwQ4xi YjjFoXycsj0LmYSX2A/pX2S8tPhG7jpbVhdXgLMwdJfPhAtyabLXKFYAQrHc+MHGpFs6 BBa3yMfxJBpi1j3/VvpGqkOjPGPuDTKdBRIMtgGPrIcxCBKjddDUopeiKZiaCp5RgUUX zLPOluhU45PQlWQlb6p9CGcwu4Rb4gFgMxK16ZzJ1RBQJBzUUHXgDW1CfesV7aKZov0A GN05MtBKn9JKDXZvRjEkk9H6rvNfcF6PyY7oB6+zHuEZJGztTCU1XS1C2rMasWzgQSkL STLQ== MIME-Version: 1.0 X-Received: by 10.202.216.138 with SMTP id p132mr1244845oig.133.1433370864217; Wed, 03 Jun 2015 15:34:24 -0700 (PDT) Received: by 10.202.105.129 with HTTP; Wed, 3 Jun 2015 15:34:24 -0700 (PDT) In-Reply-To: References: <5A699476-8E71-4D38-BABE-F755931447B5@gmx.de> Date: Wed, 3 Jun 2015 15:34:24 -0700 Message-ID: From: Dave Taht To: Aaron Wood , cake@lists.bufferbloat.net Content-Type: multipart/related; boundary=001a113d559031931a0517a4a998 Cc: cerowrt-devel Subject: Re: [Cake] [Cerowrt-devel] ingress rate limiting falling short X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jun 2015 22:34:53 -0000 --001a113d559031931a0517a4a998 Content-Type: multipart/alternative; boundary=001a113d55903193160517a4a997 --001a113d55903193160517a4a997 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Wed, Jun 3, 2015 at 3:27 PM, Dave Taht wrote: > > > On Wed, Jun 3, 2015 at 3:16 PM, Aaron Wood wrote: > >> >> > 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 >>> performance range (I tested it from 80-220Mbps rates in 20Mbps jumps, a= nd >>> 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 rang= e? >> >> >> Yeah, good point on a methodology fail. I'll run another series of test= s >> 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 qua= ntum >> bytes (it is bytes, right?) is on the wire: >> >> >> =E2=80=8BWhich I think is a really interesting plot (and here are the po= ints 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 lov= e >> to hear from whoever put this in as to what it's goal was (or was it jus= t >> empirically tuned?) >> > > Empirical and tested only to about 60Mbits. I got back about 15% cpu to d= o > it this way at the time I did it on the wndr3800. > > and WOW, thx for the analysis! I did not think much about this crossover > point at the time - because we'd maxed on cpu long beforehand. > And most of my testing on x86 has been with this change to the htb quantum entirely disabled and set to 1514. the "production" sqm-scripts and my own hacked up version(s) have differed in this respect for quite some time. (at least 6 months). Great spot on this discrepancy. :egg, otherwise, on face: > I can certainly see this batching interacting with the codel target. > > On the other hand, you gotta not be running out of cpu in the first place= . > I am liking where cake is going. > > One of my daydreams is that once we have writable custom ethernet hardwar= e > that we can easily do hardware outbound rate limiting/shaping merely by > programming a register to return a completion interrupt at the set rate > rather than the actual rate. > > > >> > >>> > 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 >> >> _______________________________________________ >> Cerowrt-devel mailing list >> Cerowrt-devel@lists.bufferbloat.net >> https://lists.bufferbloat.net/listinfo/cerowrt-devel >> >> > > > -- > Dave T=C3=A4ht > What will it take to vastly improve wifi for everyone? > https://plus.google.com/u/0/explore/makewififast > --=20 Dave T=C3=A4ht What will it take to vastly improve wifi for everyone? https://plus.google.com/u/0/explore/makewififast --001a113d55903193160517a4a997 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


On Wed, Jun 3, 2015 at 3:27 PM, Dave Taht <dave.taht@gmail.com&g= t; wrote:


On Wed, Jun 3, 2015 at 3:16 PM, Aaron Wood <woody77@gmail.com> wrote:

> 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 methodology 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 r= ates:
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 qui= te the aggressive curve on quantum, doubling every 10-20Mbps. =C2=A0
<= div>
I did some math, and plotted out the quantum vs. bandwid= th based on that snippet of code (and assuming a 1500-byte MTU):
=


=E2=80=8BAnd then plotted out the corresponding tim= e 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):<= br>

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 48= 000 =3D 6.4ms
80000 =3D 96000 =3D 9.6ms
=C2=A0
So it a= ppears that the goal of these values was to keep increases the quantum as r= ates went up to provide more bytes per operation, but that's going to r= isk adding latency as the time-per-quantum crosses the delay target in fq_c= odel (if I'm understanding this correctly).

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

<= /div>
Empirical and tested only to about 60Mbits. I got back abou= t 15% cpu to do it this way at the time I did it on the wndr3800.

and WOW, thx for the analysis! I did not think much about t= his crossover point at the time - because we'd maxed on cpu long before= hand.=C2=A0

And mos= t of my testing on x86 has been with this change to the htb quantum entirel= y disabled and set to 1514.

the "production&q= uot; sqm-scripts and my own hacked up version(s) have differed in this resp= ect for quite some time. (at least 6 months).=C2=A0

Great spot on this discrepancy.

:egg, otherwise,= on face:

=C2=A0
<= div>I can certainly see this batching interacting with the codel target.

On the other hand, you gotta not be running out of c= pu in the first place. I am liking where cake is going.

One of my daydreams is that once we have writable custom ethernet har= dware that we can easily do hardware outbound rate limiting/shaping merely = by programming a register to return a completion interrupt at the set rate = rather than the actual rate.=C2=A0

=C2=A0
=C2=A0
><= br> > 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.=

-Aaron=C2=A0
<= /font>

_______________________________________________=
Cerowrt-devel mailing list
Ce= rowrt-devel@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cerowrt-devel



<= br>
--
Dave T=C3=A4ht
What will it take to vastly improve = wifi for everyone?
https://plus.google.com/u/0/explore/makewififast<= /a>



--
--001a113d55903193160517a4a997-- --001a113d559031931a0517a4a998 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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 --001a113d559031931a0517a4a998 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== --001a113d559031931a0517a4a998--