From: Christoph Paasch <cpaasch@apple.com>
To: Jonathan Morton <chromatix99@gmail.com>
Cc: Dave Taht <dave.taht@gmail.com>, Rpm <rpm@lists.bufferbloat.net>
Subject: Re: [Rpm] Alternate definitions of "working condition" - unnecessary?
Date: Wed, 06 Oct 2021 17:11:35 -0700 [thread overview]
Message-ID: <YV47N6Aly0D5YwOn@MacBook-Pro-2.local> (raw)
In-Reply-To: <C03A9A6A-ABC8-40F7-84F5-040993275AE3@gmail.com>
On 10/07/21 - 02:18, Jonathan Morton via Rpm wrote:
> > On 7 Oct, 2021, at 12:22 am, Dave Taht via Rpm <rpm@lists.bufferbloat.net> wrote:
> > There are additional cases where, perhaps, the fq component works, and the aqm doesn't.
>
> Such as Apple's version of FQ-Codel? The source code is public, so we might as well talk about it.
Let's not just talk about it, but actually read it ;-)
> There are two deviations I know about in the AQM portion of that. First is that they do the marking and/or dropping at the tail of the queue, not the head. Second is that the marking/dropping frequency is fixed, instead of increasing during a continuous period of congestion as real Codel does.
We don't drop/mark locally generated traffic (which is the use-case we care abhout).
We signal flow-control straight back to the TCP-stack at which point the queue
is entirely drained before TCP starts transmitting again.
So, drop-frequency really doesn't matter because there is no drop.
Christoph
>
> I predict the consequences of these mistakes will differ according to the type of traffic applied:
>
> With TCP traffic over an Internet-scale path, the consequences are not serious. The tail-drop means that the response at the end of slow-start will be slower, with a higher peak of intra-flow induced delay, and there is also a small but measurable risk of tail-loss causing a more serious application-level delay. These alone *should* be enough to prompt a fix, if Apple are actually serious about improving application responsiveness. The fixed marking frequency, however, is probably invisible for this traffic.
>
> With TCP traffic over a short-RTT path, the effects are more pronounced. The delay excursion at the end of slow-start will be larger in comparison to the baseline RTT, and when the latter is short enough, the fixed congestion signalling frequency means there will be some standing queue that real Codel would get rid of. This standing queue will influence the TCP stack's RTT estimator and thus RTO value, increasing the delay consequent to tail loss.
>
> Similar effects to the above can be expected with other reliable stream transports (SCTP, QUIC), though the details may differ.
>
> The consequences with non-congestion-controlled traffic could be much more serious. Real Codel will increase its drop frequency continuously when faced with overload, eventually gaining control of the queue depth as long as the load remains finite and reasonably constant. Because Apple's AQM doesn't increase its drop frequency, the queue depth for such a flow will increase continuously until either a delay-sensitive rate selection mechanism is triggered at the sender, or the queue overflows and triggers burst losses.
>
> So in the context of this discussion, is it worth generating a type of load that specifically exercises this failure mode? If so, what does it look like?
>
> - Jonathan Morton
> _______________________________________________
> Rpm mailing list
> Rpm@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/rpm
next prev parent reply other threads:[~2021-10-07 0:11 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-06 19:11 Rich Brown
2021-10-06 20:36 ` Jonathan Foulkes
2021-10-07 16:40 ` Toke Høiland-Jørgensen
2021-10-07 18:49 ` Dave Taht
2021-10-08 17:51 ` Toke Høiland-Jørgensen
2021-10-07 21:39 ` Rich Brown
2021-10-06 21:22 ` Dave Taht
2021-10-06 23:18 ` Jonathan Morton
2021-10-07 0:11 ` Christoph Paasch [this message]
2021-10-07 10:29 ` Jonathan Morton
2021-10-07 15:44 ` [Rpm] apple's fq_"codel" implementation Dave Taht
2021-10-07 10:30 ` [Rpm] Alternate definitions of "working condition" - unnecessary? Sebastian Moeller
2021-10-08 0:33 ` Jonathan Morton
2021-10-08 23:32 ` Christoph Paasch
2021-10-11 7:31 ` Sebastian Moeller
2021-10-11 9:01 ` Jonathan Morton
2021-10-11 10:03 ` Sebastian Moeller
2021-10-11 17:34 ` Christoph Paasch
2021-10-12 10:23 ` Sebastian Moeller
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/rpm.lists.bufferbloat.net/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YV47N6Aly0D5YwOn@MacBook-Pro-2.local \
--to=cpaasch@apple.com \
--cc=chromatix99@gmail.com \
--cc=dave.taht@gmail.com \
--cc=rpm@lists.bufferbloat.net \
/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