Cake - FQ_codel the next generation
 help / color / mirror / Atom feed
From: Dave Taht <dave.taht@gmail.com>
To: Jonathan Morton <chromatix99@gmail.com>
Cc: "cake@lists.bufferbloat.net" <cake@lists.bufferbloat.net>,
	Greg White <g.white@cablelabs.com>
Subject: Re: [Cake] cake shaper vs leaky bucket algorithm
Date: Wed, 18 Nov 2015 18:40:35 +0100	[thread overview]
Message-ID: <CAA93jw7o=iLD5-2n=g+es6zXWbZJeVGGJmBs25mxi9qT+BO5Zg@mail.gmail.com> (raw)
In-Reply-To: <F6C7C590-155E-43DC-85CC-4DA2111F66B8@gmail.com>

On Wed, Nov 18, 2015 at 6:30 PM, Jonathan Morton <chromatix99@gmail.com> wrote:
>
>> On 18 Nov, 2015, at 19:12, Greg White <g.white@CableLabs.com> wrote:
>>
>> 2) you delay small packets to avoid the 1 MTU "burstiness" that the traditional algorithm would create.

I think dragging in MTU here is a problem. What we are seeing on most
new hardware is also "superpackets" from GRO/TSO/GSO offloads, where
inside the box up to 64k from a single stream is delivered as a single
unit. Where I see this now all the time is a 10 or 20 IW10 packet
"burst" coming into the router/modem from the gigE interface, needing
to get broken down into real packets and mixed into other flows at the
10 or 20Mbit uplink.


>>
>> Change 2 might be more debatable, since it adds latency where (it could be argued) it isn't needed.  The argument might be: if it is acceptable (and it has to be) for the shaper to put an MTU worth of consecutive bytes on the wire, does it matter whether those bytes are one large packet or several small ones?
>
> When a large packet is committed for transmission, the latency it causes (due to serialisation) is unavoidable.

I still wish we had 584 byte MTUs standard...

> When a series of small packets are available, the situation is more complex.  Committing them all at once is certainly not a win; they must still incur serialisation delay.
>
> Conversely, committing them at the properly scheduled times allows flow-isolation to work better (especially in the not-uncommon case where new packets arrive for another flow while the original series is still being dealt with), and also ensures that the correct sequence of sojourn times is visible to the AQM layer.
>
> But Cake’s shaper doesn’t treat sub-MTU packets specially in any case; in fact, it is unaware of the MTU, and is entirely capable of handling multi-MTU-sized aggregates.  It waits until the next transmission is scheduled, transmits the next available packet, then advances the pointer by the wire-time occupied by that packet.

The other advantage (already in the doc, but perhaps needs to be
brought out more) - is that in the sqm-scripts, with htb+fq_codel,
we had to increase the htb pool (quantum) size as the bandwidth got
higher, which was error prone and entirely dependent on the
capabilities and load of the cpu involved. (I don't know if my scaling
actually ever got fixed right, either)

cake, compensates, almost magically, for the interrupt response rate
and cpu capabilities relative to the load. It's also tons faster than
htb+fq_codel were, scaling to 100mbit on the same hardware that
struggled at 60mbit (faster... on the last benchmark series I ran - in
june - we have added a few features since)....

Now, it kind of remains to be seen as to how to burn this into
hardware, there's some work on that, stalled out on funding....

am really happy with cake so far. :)

>
> So treating packets of different sizes differently, as you describe, would actually complicate the algorithm as well as worsening its system-level performance.
>
>  - Jonathan Morton
>

  reply	other threads:[~2015-11-18 17:40 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-18  7:46 Dave Taht
2015-11-18 10:49 ` Jonathan Morton
2015-11-18 10:58   ` Dave Taht
2015-11-18 17:12     ` Greg White
2015-11-18 17:30       ` Jonathan Morton
2015-11-18 17:40         ` Dave Taht [this message]
2015-11-18 18:16           ` Greg White
2015-11-18 17:41         ` Greg White

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.bufferbloat.net/postorius/lists/cake.lists.bufferbloat.net/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAA93jw7o=iLD5-2n=g+es6zXWbZJeVGGJmBs25mxi9qT+BO5Zg@mail.gmail.com' \
    --to=dave.taht@gmail.com \
    --cc=cake@lists.bufferbloat.net \
    --cc=chromatix99@gmail.com \
    --cc=g.white@cablelabs.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox