From: Jeff Weeks <jweeks@sandvine.com>
To: Jonathan Morton <chromatix99@gmail.com>,
"codel@lists.bufferbloat.net" <codel@lists.bufferbloat.net>
Subject: Re: [Codel] drop state short-circuit...
Date: Tue, 11 Aug 2015 18:50:33 +0000 [thread overview]
Message-ID: <274D3A0FA900FD47AA6B56991AAA32FDC53BB5B1@wtl-exchp-1.sandvine.com> (raw)
In-Reply-To: <CAJq5cE3MLFz5gcZFnH_SW_VrU=KZ5m4+=a+xVH4mHdSWsOAanw@mail.gmail.com>
Thanks!
I'm a bit skeptical of 'count' usage in general, yes.
Say the codel algorithm is managing a large queue, using the default parameters.
That queue could fill, and codel would enter the drop state, and we'd then start dropping packets at 100ms, 70ms, 57ms, 50ms, etc... (i.e., 100/sqrt(count)).
If the queue size is reasonable, this converges quickly on the correct drop rate.
However, if the queue is larger, it takes considerably longer to reach the correct drop rate.
I has previously (perhaps incorrectly) thought that the queue size becomes somewhat irrelevant when using codel, as the queue is effectively managed by inspecting packet latencies, rather than blindly queuing and dequeuing, but that's not entirely true, it seems, as there's no limit placed on the enqueue operation.
In other words, given a high enough input rate, and a large enough queue, codel will still output packets considerably beyond the target ms, no?
Put another way -- if the codel algorithm starts in a heavily congested pipe, it will take many seconds before it can adjust to a 1ms interval (count would have to rise to 10,000). While adjusting, it's very likely to output many packets with high latencies.
Is this a concern for the algorithm?
--Jeff
________________________________
From: Jonathan Morton [chromatix99@gmail.com]
Sent: Tuesday, August 11, 2015 1:35 PM
To: Jeff Weeks
Cc: codel@lists.bufferbloat.net
Subject: Re: [Codel] drop state short-circuit...
The logic is that if the stored count was effectively controlling the queue, we want to keep using that value if the network is still under load. If 16 intervals (1.6 seconds) pass without re-entering drop state, we can assume the link is no longer saturated (by this flow) and reset count.
I think the value 16 itself is mostly arbitrary.
I'm a bit skeptical of the way count is saved and restored in the reference versions - it's hard to follow. Cake's version explicitly keeps the old value, but halves it, allowing it to grow back to its original value if required. It would also be reasonable to scale the backoff with time, rather than thresholding it.
- Jonathan Morton
next prev parent reply other threads:[~2015-08-11 18:50 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-11 17:14 Jeff Weeks
2015-08-11 17:35 ` Jonathan Morton
2015-08-11 18:50 ` Jeff Weeks [this message]
2015-08-11 19:13 ` 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=274D3A0FA900FD47AA6B56991AAA32FDC53BB5B1@wtl-exchp-1.sandvine.com \
--to=jweeks@sandvine.com \
--cc=chromatix99@gmail.com \
--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