Re: [aqm] RED implementation on Linux 3.14.22

Dave Taht <dave.taht@gmail.com> Mon, 15 December 2014 15:54 UTC

Return-Path: <dave.taht@gmail.com>
X-Original-To: aqm@ietfa.amsl.com
Delivered-To: aqm@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DEAA91A1AFB for <aqm@ietfa.amsl.com>; Mon, 15 Dec 2014 07:54:27 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.7
X-Spam-Level:
X-Spam-Status: No, score=0.7 tagged_above=-999 required=5 tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id z24xIjmJnt9G for <aqm@ietfa.amsl.com>; Mon, 15 Dec 2014 07:54:25 -0800 (PST)
Received: from mail-oi0-x235.google.com (mail-oi0-x235.google.com [IPv6:2607:f8b0:4003:c06::235]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5F7351A7005 for <aqm@ietf.org>; Mon, 15 Dec 2014 07:54:25 -0800 (PST)
Received: by mail-oi0-f53.google.com with SMTP id x69so7992999oia.26 for <aqm@ietf.org>; Mon, 15 Dec 2014 07:54:24 -0800 (PST)
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:content-transfer-encoding; bh=EavePM0A1khfrIZIj+DgNov7w0JaEmaZSOZPGJdpV70=; b=QKrxaHx2re6SAUJk2YlZA/8687EZvEPPBTHmsKTOGnZC+D5jkZHlX0YqrzdIf2GrBC zS8PggbCjilMDZwYSHQ4dhK7V9iAaqtMcl1tL6fMUggnHOBPItI6PdJgERyoMkTHpsT7 EHqIY9i8GrhuSqnZf8SLu3qfkqEkDKYzooqkjHIt+pF5n08j+KjZVqHXfLYl8Ym4rdp+ 2weo4FxMWCeobRNkgQiFym/4Ja44kqqHoxTt6z2vjdGucObCY514sI3QRX7+r0RMQDqT ZWDbYins/R/XJMgwWo74BrZAJbx4aWGaQXcOF27MUIyp00L/Fu+JaF8XpGlJD2jUpeVv bEIQ==
MIME-Version: 1.0
X-Received: by 10.60.52.72 with SMTP id r8mr4510941oeo.75.1418658864654; Mon, 15 Dec 2014 07:54:24 -0800 (PST)
Received: by 10.202.227.77 with HTTP; Mon, 15 Dec 2014 07:54:24 -0800 (PST)
In-Reply-To: <CAGhGL2D2XPrv0pjWv+i+UVTafHsvLnapShe+MHW3LRyxY24ACg@mail.gmail.com>
References: <CAPJm55PbSg4_nHfMAyLfJC_zyaBJUFzTr4pj_ieBbrbJW0Wbgg@mail.gmail.com> <CAGhGL2D2XPrv0pjWv+i+UVTafHsvLnapShe+MHW3LRyxY24ACg@mail.gmail.com>
Date: Mon, 15 Dec 2014 07:54:24 -0800
Message-ID: <CAA93jw5bvuh4KMhuYJNN5p=593KK0DPmynJBVs0_NADAYARpXg@mail.gmail.com>
From: Dave Taht <dave.taht@gmail.com>
To: Jim Gettys <jg@freedesktop.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: http://mailarchive.ietf.org/arch/msg/aqm/iHBtaiDazc9vi-QTfyKT13xCoM8
Cc: Simone Ferlin-Oliveira <ferlin@simula.no>, "aqm@ietf.org" <aqm@ietf.org>
Subject: Re: [aqm] RED implementation on Linux 3.14.22
X-BeenThere: aqm@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "Discussion list for active queue management and flow isolation." <aqm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/aqm>, <mailto:aqm-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/aqm/>
List-Post: <mailto:aqm@ietf.org>
List-Help: <mailto:aqm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/aqm>, <mailto:aqm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 15 Dec 2014 15:54:28 -0000

On Mon, Dec 15, 2014 at 5:41 AM, Jim Gettys <jg@freedesktop.org> wrote:
>
>
> On Mon, Dec 15, 2014 at 2:51 AM, Simone Ferlin-Oliveira <ferlin@simula.no>
> wrote:
>>
>> All,
>>
>> I am doing some work with shared bottleneck detection that requires
>> some evaluation with different AQM, in particular, RED. Since I
>> haven't been following the evolution of the implementation,  I would
>> like to ask about your experience with the code on Linux 3.14 (and
>> newer).
>
>
> I know that Dave Taht ran into bugs in RED a while back, which I believe
> have been fixed for quite a while.

The power of git to answer questions like this is unparalleled. Taking
a look at my current kernel tree and doing a:

git log net/sched/sch_red.c

shows eric fixed 2 bugs in Linux RED in

commit 1ee5fa1e9970a16036e37c7b9d5ce81c778252fc
Author: Eric Dumazet <eric.dumazet@gmail.com>
Date:   Thu Dec 1 11:06:34 2011 +0000

   sch_red: fix red_change

...

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1ee5fa1e9970a16036e37c7b9d5ce81c778252fc

ARED was added slightly later, and sfqred (a first attempt at blending
fq + AQM together) shortly after that. (which doesn't do ared (never
made it to mainline as fq_codel landed soon after that)

Advice: Keep track of net-next, do git pulls regularly, and watch "git
log net" for changes.

> You should always be looking at whether code has been patched in the current
> kernel.org system for a module like that you are interested in, so do a diff
> between 3.14 and the current Linux system. 3.14 is recent enough that it may
> be viable for experiments, for the time being.  Planning to keep up with
> Linux development is wise long term in any case, as the rate of
> improvement/change in the networking stack is very high at the moment as
> draining the bufferbloat swamp and other performance work continues.

Important changes since 3.14: pie added, DCTCP added, gso/tso offloads
seriously reworked and made gentler, sch_fq's pacing improved. The
last kernel rounds (3.18,3.19) were seriously productive: hystart
improved at longer RTTs, still more TSO/gso improvements, and
xmit_more support was added for some devices. Also support for per
route congestion control settings (primarily targetted at DCTCP) was
just added.

I believe some of the long RTT falloff we saw in toke's paper was due
to hystart issues, as I have been unable to duplicate some of his
results with this upcoming release.

I have basically thrown out all my 3.14 results at this point and am
starting over with the soon-to-stablize 3.19 release. (Well, in fact,
I ended up starting over 3 times in the last 2 months as each of the
new features above landed in the kernel) (but as for red, no changes
except in the underlying TCPs and device drivers)

Relevant commits were:

Hystart change:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=42eef7a0bb0989cd50d74e673422ff98a0ce4d7b

xmit_more:

http://netoptimizer.blogspot.com/2014/10/unlocked-10gbps-tx-wirespeed-smallest.html
very good lwn article on it http://lwn.net/Articles/615238/

one of several GSO fixes:

commit d649a7a81f3b5bacb1d60abd7529894d8234a666
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Nov 13 09:45:22 2014 -0800

    tcp: limit GSO packets to half cwnd

... etc. Do a git log net. :)

preso that convinced systemd to switch to fq_codel:
http://lwn.net/Articles/616241/

> Also note that underlying device drivers may have (sometimes lots) of
> buffering out of control of the Linux queue discipline.  For Ethernet
> devices, you should ensure that that the drivers have BQL support
> implemented to minimize this buffering.  Other classes of drivers are more
> problematic, and may have lots of buffering to surprise you.

+10 (or rather, -10). It's up to 25 devices now. I note that TSO/GSO used to
interact very badly with soft rate limiting (htb), it seems better now.

>
> Also be aware that ethernet flow control may move the bottleneck from where
> you expect to somewhere else, and that switches in networks also have to be
> well understood.  Most consumer switches have this *on* by default, and
> mixed 1G/100Mb networks can be particularly "entertaining" in this regard.
> Cable modems, unfortunately, typically do not implement flow control, but
> some DSL modems do (putting the bottleneck into your router, rather than in
> the modem).

I should probably put red back into my test matrixes. I stopped
benchmarking it and pfifo_fast a long time ago. A netperf-wrapper data
set that predates the hystart fix, testing 3 RTTs:

http://snapon.lab.bufferbloat.net/~d/comprehensive.puck/
or:
http://snapon.lab.bufferbloat.net/~d/comprehensive_puck.tgz


>>
>> *Any* help is appreciated.
>
>
> Hope this helps.
>
>>
>>
>> Thanks,
>> Simone
>>
>> _______________________________________________
>> aqm mailing list
>> aqm@ietf.org
>> https://www.ietf.org/mailman/listinfo/aqm



-- 
Dave Täht

thttp://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks