Re: [RFC] sched: CHOKe packet scheduler (v0.4)

Stephen Hemminger
2011-01-11T23:48:10Z

On Tue, 11 Jan 2011 07:34:10 +0100
Eric Dumazet <eric.dumazet@gmail.com> wrote:

> Le mardi 11 janvier 2011 à 07:18 +0100, Eric Dumazet a écrit :
> > Le lundi 10 janvier 2011 à 17:10 -0800, Stephen Hemminger a écrit :
> > > OK, put that in.
> >
> > Thanks !
> >
> > > >
> > > > Here we missed :
> > > >
> > > > q->tab = ntab;
> > > >
> >
> > We also need to change
> >
> > .peek = qdisc_peek_head,
> >
> > to
> >
> > .peek = choke_peek_head,
> >
> > static struct sk_buff *choke_peek_head(struct Qdisc *sch)
> > {
> > struct choke_sched_data *q = qdisc_priv(sch);
> >
> > return (q->head != q->tail) ? q->tab[q->head] : NULL;
> > }
> >
> >
>
>
> And to correctly work with CBQ (at least...), we need to update
> sch->q.qlen = choke_len(q) - q->holes;
> in dequeue() and enqueue()
>
> Here is the version I successfully tested, with 30000 packets in
> queue :)
>
> qdisc choke 11: parent 1:11 limit 70000b min 10000b max 30000b ewma 1 Plog 16 Scell_log 11
> Sent 62099201 bytes 112920 pkt (dropped 367712, overlimits 282668 requeues 0)
> rate 21344Kbit 4851pps backlog 39877589b 30001p requeues 0
> marked 0 early 282668 pdrop 0 other 0

Maybe we should take over one of the red counters for the probabilistic match drop.