From: Jonathan Morton <chromatix99@gmail.com>
To: Polina Goltsman <polina.goltsman@student.kit.edu>
Cc: Roland Bless <roland.bless@kit.edu>,
codel@lists.bufferbloat.net, aqm@ietf.org
Subject: Re: [Codel] [aqm] Codel's count variable and re-entering dropping state at small time intervals
Date: Fri, 14 Aug 2015 17:52:20 +0300 [thread overview]
Message-ID: <9EEB70FD-2B99-49AC-8C58-A74CFC0DEFC2@gmail.com> (raw)
In-Reply-To: <55CDE8E3.4080207@student.kit.edu>
> 1. in Cake, count saturates at 2^32-1, am I right (https://github.com/dtaht/sch_cake/blob/master/codel5.h#L352).
>
> could it make sense to saturate count when interval/sqrt(count) and interval/sqrt(count+1) are indistinguishable in timer resolution?
Actually it saturates at 2^16-1, since count is declared as u16 (though it could reasonably be a wider type, too).
At that point, there are about 2560 drops (or marks) per second; if it did go up to 2^32-1, that would be 655360 drops/marks per second. Linux timers on modern hardware generally have microsecond resolution or better, so there is no reason to saturate early even in the latter case.
> 2. I found three more changes from the original Codel:
>
> 2.1 Line292: if (sojourn_time < target || queue is empty) instead of (sojourn_time < target || there is less than MTU bytes in the queue).
>
> was it changed because queue_length_in_bytes < MTU causes sojourn_time < target ?
We found no reason to special-case the last packet in the queue, so we simplified the code by removing it. Detecting MTU (via the “maxpacket” statistic) was rather fragile in the face of GRO and GSO, with some common hardware regularly producing 64K aggregates.
Instead of special-casing the last packet, Cake constrains the target to 1.5 hardware MTUs (detected via the interface API, not via maxpacket) at the shaped rate. This has more nearly the desired effect.
> 2.2. Line 304:
>
> else if (vars->count > 1 && now - vars->drop_next < 8 * interval) {
> /* we were recently dropping; be more aggressive */
> return now - vars->first_above_time >
> codel_control_law(now, interval, vars->rec_inv_sqrt);
> }
>
> 2.3. Line 308:
>
> else if (((now - vars->first_above_time) >> 15) * ((now - codel_get_enqueue_time(skb)) >> 15) > threshold) { return true; }.
> This line is explained in this email from Cake mailing list: https://lists.bufferbloat.net/pipermail/cake/2015-May/000227.html
>
>
> My question is - are these changes valid for a standalone Codel or are they specifically made to optimize Cake's scheduler?
I believe they could be. The intent is to bias interval according to how quickly the queue is growing, so as to react more aggressively to slow-start’s rapid growth than to congestion-avoidance slow growth. It might be worth testing in a standalone context.
- Jonathan Morton
next prev parent reply other threads:[~2015-08-14 14:52 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <55AD2695.8050605@kit.edu>
2015-07-20 17:04 ` [Codel] Fwd: " Dave Taht
2015-07-20 19:34 ` [Codel] " Jonathan Morton
[not found] ` <55CDE8E3.4080207@student.kit.edu>
2015-08-14 14:52 ` Jonathan Morton [this message]
[not found] ` <55CE085F.5080700@student.kit.edu>
2015-08-14 15:59 ` Jonathan Morton
2015-08-14 16:11 ` Jonathan Morton
[not found] ` <7A2801D5E40DD64A85E38DF22117852C70AE040F@wdc1exchmbxp05.hq.corp.viasat.com>
[not found] ` <87a8rlvmxy.fsf@toke.dk>
[not found] ` <7A2801D5E40DD64A85E38DF22117852C8812F7E5@wdc1exchmbxp05.hq.corp.viasat.com>
[not found] ` <87io69twyi.fsf@toke.dk>
[not found] ` <7A2801D5E40DD64A85E38DF22117852C8812FD9E@wdc1exchmbxp05.hq.corp.viasat.com>
[not found] ` <703269EE-2B09-4F2B-9462-6CB644371875@toke.dk>
[not found] ` <7A2801D5E40DD64A85E38DF22117852C8813002D@wdc1exchmbxp05.hq.corp.viasat.com>
2015-10-14 19:05 ` Dave Taht
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=9EEB70FD-2B99-49AC-8C58-A74CFC0DEFC2@gmail.com \
--to=chromatix99@gmail.com \
--cc=aqm@ietf.org \
--cc=codel@lists.bufferbloat.net \
--cc=polina.goltsman@student.kit.edu \
--cc=roland.bless@kit.edu \
/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