[Codel] sprout

Dave Taht dave.taht at gmail.com
Thu Jul 11 13:17:47 EDT 2013


On Thu, Jul 11, 2013 at 9:54 AM, Kathleen Nichols <nichols at pollere.com> wrote:
>
> Yes. I think that's a sort of "application - dependent" bit of code perhaps.
> Van and I had various discussions about this and put that in with very
> low bandwidth applications in mind, where some "maximums" might
> be much smaller than others.

Well perhaps a better number to turn off the scheduler at is a backlog
of 0, as a single packet is 13ms at 1Mbit. I'll fiddle at some really
low rates over the next  couple days.

Stopping at 1500 makes not a lot of sense as at the level codel is at
there is always underlying buffering everywhere in the linux stack I
see.

Even with htb there is always one packet outstanding outside of codel...

(note: in the nfq_codel case I'd also tried keeping a per queue
maxpacket, so as an ack-only stream would retain some probability of a
drop)

>
> On 7/11/13 9:22 AM, Eric Dumazet wrote:
>> On Thu, 2013-07-11 at 08:45 -0700, Kathleen Nichols wrote:
>>
>>> Dave, not completely sure which reservation about maxpacket is in reference.
>>
>> Hi Kathleen
>>
>> I believe Dave is referring to the fact that we update maxpacket every
>> time we dequeue a packet, and with GSO packet it makes little sense
>> because after a while maxpacket is set to ~65535, the limit of the GSO
>> packet size.
>>
>> We might remove this code, and make maxpacket a constant.
>>
>> diff --git a/include/net/codel.h b/include/net/codel.h
>> index 389cf62..470e1ff 100644
>> --- a/include/net/codel.h
>> +++ b/include/net/codel.h
>> @@ -170,7 +170,7 @@ static void codel_vars_init(struct codel_vars *vars)
>>
>>  static void codel_stats_init(struct codel_stats *stats)
>>  {
>> -       stats->maxpacket = 256;
>> +       stats->maxpacket = 1500;
>>  }
>>
>>  /*
>> @@ -221,9 +221,6 @@ static bool codel_should_drop(const struct sk_buff *skb,
>>         vars->ldelay = now - codel_get_enqueue_time(skb);
>>         sch->qstats.backlog -= qdisc_pkt_len(skb);
>>
>> -       if (unlikely(qdisc_pkt_len(skb) > stats->maxpacket))
>> -               stats->maxpacket = qdisc_pkt_len(skb);
>> -
>>         if (codel_time_before(vars->ldelay, params->target) ||
>>             sch->qstats.backlog <= stats->maxpacket) {
>>                 /* went below - stay below for at least interval */

Well you can nuke the variable entirely and the second part of the
conditional...

>>
>>
>



-- 
Dave Täht

Fixing bufferbloat with cerowrt: http://www.teklibre.com/cerowrt/subscribe.html



More information about the Codel mailing list