From: Jonathan Morton <chromatix99@gmail.com>
To: codel@lists.bufferbloat.net
Cc: bloat Mainlinglist <bloat@lists.bufferbloat.net>
Subject: [Codel] The Inverse Square Root control law
Date: Thu, 10 May 2012 06:24:52 +0300 [thread overview]
Message-ID: <B0241B62-3933-42BA-B7B5-8E10C3469E81@gmail.com> (raw)
I said just now:
> Now about the inverse sqrt: qualitatively, it is just a convenient method of gradually varying the mark/drop rate in terms of a time interval rather than a packet count interval. The longer the queue remains overfull - controlled by the number of mark/drop events that have occurred - the higher the marking/dropping rate gets. If the queue then empties (and stays empty-ish for a few RTTs), the rate is reset. Meanwhile, if the queue regularly oscillates between "full" and "empty" states, the marking/dropping rate is remembered so that aggressive TCPs receive the correct magnitude signal.
>
> Now as for the *quantitative* reason behind it, it is because as the interval between drops gets shorter, the number of increments per RTT goes up because there is one increment per drop. If the interval is shortened linearly per increment, that means it will in practice shorten exponentially faster, such that the drop rate runs away faster than the TCP can reasonably be expected to respond. This would result in excessive drop rates and oscillatory behaviour typical of an over-sensitive control system. By basing the drop rate on the square root of the incremented variable, the runaway behaviour is curtailed since the drop interval now shortens linearly per RTT.
>
> Maybe a diagram or animation would help to clarify that last paragraph. I'm fairly sure I can draw one.
Well, here's the diagram. I produced it by simulating the first 200 or so drop events under each control law in a spreadsheet.
http://dl.dropbox.com/u/60111136/InverseSqrt.pdf
The exponential behaviour of the "linear" control law is immediately apparent - it is clearly out of control within the first half-second, and triples the drop rate again within the following nominal RTT - as is the linear and much gentler behaviour of the "isqrt" control law actually implemented.
- Jonathan Morton
next reply other threads:[~2012-05-10 3:24 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-10 3:24 Jonathan Morton [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-05-10 3:17 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/codel.lists.bufferbloat.net/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=B0241B62-3933-42BA-B7B5-8E10C3469E81@gmail.com \
--to=chromatix99@gmail.com \
--cc=bloat@lists.bufferbloat.net \
--cc=codel@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