Cake - FQ_codel the next generation
 help / color / mirror / Atom feed
From: "Toke Høiland-Jørgensen" <toke@toke.dk>
To: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
Cc: Jonathan Morton <chromatix99@gmail.com>,
	"cake\@lists.bufferbloat.net" <cake@lists.bufferbloat.net>
Subject: Re: [Cake] A few puzzling Cake results
Date: Wed, 18 Apr 2018 14:57:29 +0200	[thread overview]
Message-ID: <8736zs3c5i.fsf@toke.dk> (raw)
In-Reply-To: <1B7176CA-41BC-4CF0-838D-871F0C858CF3@darbyshire-bryant.me.uk>

Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk> writes:

>> On 18 Apr 2018, at 12:25, Toke Høiland-Jørgensen <toke@toke.dk> wrote:
>> 
>> Toke Høiland-Jørgensen <toke@toke.dk> writes:
>> 
>>> Jonathan Morton <chromatix99@gmail.com> writes:
>>> 
>>>>> On 17 Apr, 2018, at 12:42 pm, Toke Høiland-Jørgensen <toke@toke.dk> wrote:
>>>>> 
>>>>> - The TCP RTT of the 32 flows is *way* higher for Cake. FQ-CoDel
>>>>> controls TCP flow latency to around 65 ms, while for Cake it is all
>>>>> the way up around the 180ms mark. Is the Codel version in Cake too
>>>>> lenient, or what is going on here?
>>>> 
>>>> A recent change was to increase the target dynamically so that at
>>>> least 4 MTUs per flow could fit in each queue without AQM activity.
>>>> That should improve throughput in high-contention scenarios, but it
>>>> does come at the expense of intra-flow latency when it's relevant.
>>> 
>>> Ah, right, that might explain it. In the 128 flow case each flow has
>>> less than 100 Kbps available to it, so four MTUs are going to take a
>>> while to dequeue...
>> 
>> OK, so I went and looked at the code and found this:
>> 
>> 	bool over_target = sojourn > p->target &&
>> 	                   sojourn > p->mtu_time * bulk_flows * 4;
>> 
>> 
>> Which means that we scale the allowed sojourn time for each flow by the
>> time of four packets *times the number of bulk flows*.
>> 
>> So if there is one active bulk flow, we allow each flow to queue four
>> packets. But if there are ten active bulk flows, we allow *each* flow to
>> queue *40* packets.
>> 
>> This completely breaks the isolation of different flows, and makes the
>> scaling of Cake *worse* than plain CoDel.
>> 
>> So why on earth would we do that?
>
> The thread that lead to that change:
>
> https://lists.bufferbloat.net/pipermail/cake/2017-December/003159.html
>
> Commits: 0d8f30faa3d4bb2bc87a382f18d8e0f3e4e56eac & the change to
> 4*bulk flows 49776da5b93f03c8548e26f2d7982d553d1d226c

Ah, thanks for digging that up! I must not have been paying attention
during that discussion ;)

Well, from reading the thread, this is an optimisation for severe
overload in ingress mode on very low bandwidths. And the change
basically amounts to throwing up our hands and saying "screw it, we
don't care about the intra-flow latency improvements of an AQM". Which
is, I guess, technically a valid choice in weighing tradeoffs, but I
maintain that it is the wrong one.

Incidentally, removing the multiplication with the number of bulk flows
restores TCP intra-flow latency to be on par with (or even a bit better
than) FQ-CoDel, and no longer scaling with the number of active flows.

-Toke

  reply	other threads:[~2018-04-18 12:57 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-17  9:42 Toke Høiland-Jørgensen
2018-04-17 10:04 ` Luca Muscariello
2018-04-17 10:38   ` Toke Høiland-Jørgensen
2018-04-17 12:05     ` Y
     [not found]     ` <mailman.225.1523966725.3573.cake@lists.bufferbloat.net>
2018-04-17 12:22       ` Toke Høiland-Jørgensen
2018-04-17 13:16         ` Jonas Mårtensson
2018-04-17 13:50           ` Toke Høiland-Jørgensen
2018-04-17 13:47         ` Luca Muscariello
2018-04-17 13:52         ` Luca Muscariello
2018-04-17 14:25           ` Toke Høiland-Jørgensen
2018-04-17 14:54             ` Luca Muscariello
2018-04-17 15:10               ` Toke Høiland-Jørgensen
2018-04-17 14:03 ` Jonathan Morton
2018-04-17 14:17   ` Toke Høiland-Jørgensen
2018-04-18 11:25     ` Toke Høiland-Jørgensen
2018-04-18 12:21       ` Kevin Darbyshire-Bryant
2018-04-18 12:57         ` Toke Høiland-Jørgensen [this message]
2018-04-18 13:13       ` Jonas Mårtensson
2018-04-18 13:21         ` Toke Høiland-Jørgensen
2018-04-18 14:12       ` Jonathan Morton
2018-04-18 14:30         ` Toke Høiland-Jørgensen
2018-04-18 15:03           ` Jonathan Morton
2018-04-18 15:17             ` Sebastian Moeller
2018-04-18 15:58               ` Jonathan Morton
2018-04-18 16:11                 ` Toke Høiland-Jørgensen
2018-04-18 16:25                   ` Dave Taht
2018-04-18 16:34                     ` Georgios Amanakis
2018-04-18 17:10                       ` Sebastian Moeller
2018-04-19  7:49                     ` Luca Muscariello
2018-04-19  8:11                       ` Jonathan Morton
2018-04-19  9:00                         ` Toke Høiland-Jørgensen
2018-04-19  9:21                           ` Jonathan Morton
2018-04-19  9:26                             ` Toke Høiland-Jørgensen
2018-04-19  9:55                               ` Jonathan Morton
2018-04-19 10:33                                 ` Toke Høiland-Jørgensen
2018-04-19 11:55                                   ` Luca Muscariello
2018-04-18 16:54                   ` Jonathan Morton
2018-04-18 17:02                     ` Dave Taht
2018-04-18 18:06                       ` Jonas Mårtensson
2018-04-18 18:11                         ` Toke Høiland-Jørgensen
2018-04-18 18:16                           ` Kevin Darbyshire-Bryant
     [not found]                           ` <mailman.238.1524075384.3573.cake@lists.bufferbloat.net>
2018-04-19  8:31                             ` Kevin Darbyshire-Bryant
2018-04-18 18:11                     ` Jonas Mårtensson
2018-04-18 19:53                     ` David Lang
2018-04-18 21:53                       ` Jonathan Morton
2018-04-19  9:22                         ` Toke Høiland-Jørgensen
2018-04-19  9:32                           ` Jonathan Morton

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=8736zs3c5i.fsf@toke.dk \
    --to=toke@toke.dk \
    --cc=cake@lists.bufferbloat.net \
    --cc=chromatix99@gmail.com \
    --cc=kevin@darbyshire-bryant.me.uk \
    /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