Cake - FQ_codel the next generation
 help / color / mirror / Atom feed
From: Sebastian Moeller <moeller0@gmx.de>
To: "Toke Høiland-Jørgensen" <toke@toke.dk>
Cc: cake@lists.bufferbloat.net
Subject: Re: [Cake] Long-RTT broken again
Date: Tue, 3 Nov 2015 18:11:30 +0100	[thread overview]
Message-ID: <328DEF4F-F149-42C5-920E-53D16DCF544C@gmx.de> (raw)
In-Reply-To: <87a8qvc8tz.fsf@toke.dk>

Hi Toke,

On Nov 3, 2015, at 18:05 , Toke Høiland-Jørgensen <toke@toke.dk> wrote:

> Jonathan Morton <chromatix99@gmail.com> writes:
> 
>> Cake does the queue accounting in bytes, and calculates 15MB (by
>> default) as the upper limit.  It’s *not* meant to be a packet buffer.
> 
> Ah, good.
> 
>> note the different behaviour of the upload and download streams in the
>> results given.
> 
> This is not a result of ingress/egress shaping, though; the upstream and
> downstream shaping is done on each side of the bottleneck on separate
> boxes.
> 
>> The only way this could behave like a “packet buffer” instead of a
>> byte-accounted queue is if there is a fixed size allocation per
>> packet, regardless of the size of said packet. There are hints that
>> this might actually be the case, and that the allocation is a hugely
>> wasteful (for an ack) 2KB. (This also means that it’s not a 10240
>> packet buffer, but about 7500.)
> 
> Right, well, in that case fixing the calculation to use the actual
> packet size would make sense in any case?

	Would it? I thought actually using the amount of “pinned” kernel memory would be more relevant, it a ACK packet pins 2KB then it should be accounted at 2KB, IF the goal of the accounting is to avoid un-scheduled OOM, no? And if something like Dave’s patch kicks in that copies larger mostly empty skbs to smaller sizes, these packets then should be accounted with that smaller size. In anyway I believe with default kernels there is a strong correlation between a packet count limit and a byte count limit…

> 
>> But in a bidirectional TCP scenario with ECN, only about a third of
>> the packets should be acks (ignoring the relatively low number of ICMP
>> and UDP probes); ECN causes an ack to be sent immediately, but then
>> normal delayed-ack processing should resume. This makes 6KB allocated
>> per ~3KB transmitted. The effective buffer size is thus 7.5MB, which
>> is still compliant with the traditional rule of thumb (BDP /
>> sqrt(flows)), given that there are four bulk flows each way.
>> 
>> This effect is therefore not enough to explain the huge deficit Toke
>> measured. The calculus also changes by only a small factor if we
>> ignore delayed acks, making 8KB allocated per 3KB transmitted.
> 
> Well, there are also several UDP measurement flows and a ping, which all
> send really small packets; so it's not just the acks.
> 
>> So, again - what’s going on?  Are there any clues in packet traces
>> with sequence analysis?
> 
> Not really; the qdisc stats show ~6000 packets dropped over the 300
> second test; and lots and lots of overlimits. So my guess is that the
> queue is in fact overflowing.
> 
> Will post a trace when I get a chance tomorrow.
> 
>> I’ll put in a configurable memory limit anyway, but I really do want
>> to understand why this is happening.
> 
> As I said before: a configurable limit is not a fix for this; we need
> the default behaviour to be sane.

	As much as I push for a configurable limit, I fully agree that cake’s auto-tuning smarts should actually be smart and do the right thing.

Best Regards
	Sebastian

> 
> -Toke


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

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-02 16:53 Toke Høiland-Jørgensen
2015-11-02 18:29 ` Sebastian Moeller
2015-11-03  1:39   ` Jonathan Morton
2015-11-03  8:20     ` Sebastian Moeller
2015-11-03  8:25       ` Jonathan Morton
2015-11-03  8:34         ` Sebastian Moeller
2015-11-03 10:29           ` Kevin Darbyshire-Bryant
2015-11-03 11:08             ` Sebastian Moeller
2015-11-03 11:45               ` Toke Høiland-Jørgensen
2015-11-03 11:57       ` Toke Høiland-Jørgensen
2015-11-03 12:41         ` Sebastian Moeller
2015-11-03 11:50     ` Toke Høiland-Jørgensen
2015-11-03 16:43       ` Jonathan Morton
2015-11-03 17:05         ` Toke Høiland-Jørgensen
2015-11-03 17:11           ` Sebastian Moeller [this message]
2015-11-03 17:25             ` Toke Høiland-Jørgensen
2015-11-03 17:31               ` Jonathan Morton
2015-11-03 17:33                 ` Toke Høiland-Jørgensen
2015-11-03 17:46                   ` Sebastian Moeller
2015-11-03 17:49                     ` Toke Høiland-Jørgensen
2015-11-03 17:52                       ` Sebastian Moeller
2015-11-03 17:54                         ` Toke Høiland-Jørgensen
2015-11-03 17:57                           ` Sebastian Moeller
2015-11-03 17:59                             ` Toke Høiland-Jørgensen
2015-11-03 18:06                               ` Sebastian Moeller
2015-11-03 19:17                                 ` Jonathan Morton
2015-11-03 19:24                                   ` Sebastian Moeller
2015-11-05 14:36         ` Toke Høiland-Jørgensen
2015-11-05 19:30           ` Jonathan Morton
2015-11-06 11:00             ` Toke Høiland-Jørgensen
2015-11-06 14:15               ` Toke Høiland-Jørgensen
2015-11-06 15:09                 ` Toke Høiland-Jørgensen
2015-11-07  5:02                 ` Jonathan Morton
2015-11-07  5:16                   ` Dave Taht
2015-11-07  6:49                     ` Jonathan Morton
2015-11-07  8:48                   ` Toke Høiland-Jørgensen
2015-11-07 10:51                     ` Jonathan Morton
2015-11-07 13:06                       ` Jonathan Morton
2015-11-07 13:42                         ` Toke Høiland-Jørgensen
2015-11-07 16:34                         ` Toke Høiland-Jørgensen
2015-11-07 13:44                       ` Toke Høiland-Jørgensen
2015-11-07 15:08                       ` Sebastian Moeller
2015-11-07 16:24                         ` Toke Høiland-Jørgensen
2015-11-07 18:25                           ` Sebastian Moeller
2015-11-07 19:32                           ` Kevin Darbyshire-Bryant
2015-11-08 16:29                             ` Dave Taht
2015-11-11 10:23                               ` Kevin Darbyshire-Bryant

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=328DEF4F-F149-42C5-920E-53D16DCF544C@gmx.de \
    --to=moeller0@gmx.de \
    --cc=cake@lists.bufferbloat.net \
    --cc=toke@toke.dk \
    /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