From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wg0-f51.google.com (mail-wg0-f51.google.com [74.125.82.51]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id 2A6CA21F0B5; Sun, 26 Aug 2012 11:08:30 -0700 (PDT) Received: by wgbed3 with SMTP id ed3so2053028wgb.8 for ; Sun, 26 Aug 2012 11:08:28 -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:content-transfer-encoding; bh=h7hxMT6T3nkizACbH577BaMBlgdxSTagiPVzfJqJ7gs=; b=j4YZmHxmJc+HklJ4nTxI73jcVhyRKiVKjezRnLTwynyrWUHnncNS3Mf2EphDUrIzME oPl/vrURsiJ0SyXBhJ44AlkH598sW28UqH3GJv/fv2yvom7RciKjeGkCQVqg2UZfAHw5 tTLNsmbalbZP5zU3HyKarUkjQKo86YeJ1gSax9BES3kd3M0HoKQlc3KI4RADoJQiaDEw MN8JJeIuXUoqVJwzVuXBV5r/4fVivFAFNVb1rVCMp186DNnankiT8cdzZDgWin8iepRO EFNW/10nkLgGYneRdK8F0KFFawO+4zVeWnzVlN1u7fKQhcaOLh4Q5CCffER0SPmTySMI /j0Q== MIME-Version: 1.0 Received: by 10.180.100.133 with SMTP id ey5mr19738864wib.4.1346004508684; Sun, 26 Aug 2012 11:08:28 -0700 (PDT) Received: by 10.223.159.134 with HTTP; Sun, 26 Aug 2012 11:08:28 -0700 (PDT) In-Reply-To: <1345711043-4796-1-git-send-email-dave.taht@bufferbloat.net> References: <1345711043-4796-1-git-send-email-dave.taht@bufferbloat.net> Date: Sun, 26 Aug 2012 11:08:28 -0700 Message-ID: From: Dave Taht To: =?ISO-8859-1?Q?Dave_T=E4ht?= Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: codel@lists.bufferbloat.net, cerowrt-devel@lists.bufferbloat.net Subject: Re: [Codel] [PATCH] codel: Refine re-entering drop state to react sooner X-BeenThere: codel@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: CoDel AQM discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Aug 2012 18:08:31 -0000 I had an entertaining couple days wrapping my head around the behavior of the ns2 model, running tons of experiments and putting together multiple variants of codel and fq_codel. This patch was not optimal in several ways and should be ignored. (I should have marked it as an rfc anyway), I have a new patch coming up that adheres closely to the ns2 model that won... some notes follow: On Thu, Aug 23, 2012 at 1:37 AM, Dave T=E4ht wr= ote: > From: Dave Taht > > This patch attempts to smooth out codel behavior in several ways. > > These first two are arguably bugs. > > 1) Newton's method doesn't run well in reverse, run it twice on a decline Seems to help. > 2) Account for the idea of dropping out of drop state after a drop > upon entering drop state. Didn't work as well as I thought it would. It's an interesting piece of information but... > > 3) the old "count - lastcount" method gyrates between a heavy dropping st= ate > and nearly nothing when it should find an optimum. For example, if > the optimum count was 66, which was found by going up 6 from lastcount > of 60, the old result would be 6. In this version of the code, it > would be 63. Arguably this could be curved by the width of the > 8*interval between entering drop states, so > interval * 4 could be > something like count =3D count - (3 * 4), or an ewma based on ldelay. The ns2 notion of a steady count - 2 works well, with the ns2 change in the ok_to_drop routine that re-runs the control law. I'd done the first in this version of the patch, but not the latter. With both in the upcoming patch, life got better. This latter change was key to seeing the bump up in codel's utilization. > 4) Note that in heavy dropping states, count now increases slower, as wel= l, > as it is moved outside of the while loop. Moving it inside the while loop worked much better... I did most of my testing at 100Mbit (line rate) and 1Mbit (htb), with 8 bidirectional streams to two devices (from a 3rd), and a competing ping. (same (short) RTTs) Testing at higher rates and with tons more streams and a variety of RTTs would be useful. > Some of this is borrowed from ideas in the ns2 code. The code I have is now identical to the current ns2 code, with the exception of this bit in s3 // kmn decay tests if(count_ > 126) count_ =3D 0.9844 * (count_ + 2); In fq_codel's case, it's really rare count gets this large, except under a udp flood (where the basic assumption of codel vs tcp doesn't hold anyway) Codel can get up there... In the process of testing I gradually switched the test server box to running 3.6-rc{1,2,3}, and now kind of need to re-run everything. But in the upcoming patch: Bidirectional utilization is nearly perfect. ~182.X consistently for anything with fq in it. Even pfifo_fast (when coupled with fq on the other side) in the same ballpark most of the time. std deviation for 8 streams for fq_codel wins over everything else Codel'd ECN and non-ecn streams now perform ~identically. Codel improved from 153/163 Mbit in one test type to ~172/172 - to what extent this is the CE fix, TSQ, other changes in 3.6-rc3, or what I just did, don't know, working on it. TCP small queues is pretty amazing. I need to backport it to 3.3.8 (only one (puzzling) line of the patch doesn't apply), as I can no longer "trust" the test server box to misbehave on TCP with any qdisc and now have to toss more boxes inline on the wire to get interesting results, and I figure it will do helpful things for netserver on the routers... D**n it, eric... --=20 Dave T=E4ht http://www.bufferbloat.net/projects/cerowrt/wiki - "3.3.8-17 is out with fq_codel!"