[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110304091859.395f2752@nehalam>
Date: Fri, 4 Mar 2011 09:18:59 -0800
From: Stephen Hemminger <shemminger@...tta.com>
To: Eric Dumazet <eric.dumazet@...il.com>
Cc: David Miller <davem@...emloft.net>,
Fabio Checconi <fabio@...dalf.sssup.it>,
Luigi Rizzo <rizzo@....unipi.it>, netdev@...r.kernel.org
Subject: Re: [PATCH] sched: QFQ - quick fair queue scheduler (v4)
On Fri, 04 Mar 2011 07:50:26 +0100
Eric Dumazet <eric.dumazet@...il.com> wrote:
> Le jeudi 03 mars 2011 à 16:30 -0800, Stephen Hemminger a écrit :
> > This is an implementation of the Quick Fair Queue scheduler developed
> > by Fabio Checconi. The same algorithm is already implemented in ipfw
> > in FreeBSD. Fabio had an earlier version developed on Linux, I just
> > cleaned it up. Thanks to Eric Dumazet for doing the testing and
> > finding bugs.
> >
> > Signed-off-by: Stephen Hemminger <shemminger@...tta.com>
> >
> > ---
> > v4 - change slots[] to hlist from simple linked list
> >
> > include/linux/pkt_sched.h | 15
> > net/sched/Kconfig | 11
> > net/sched/Makefile | 1
> > net/sched/sch_qfq.c | 1133 ++++++++++++++++++++++++++++++++++++++++++++++
> > 4 files changed, 1160 insertions(+)
>
> Thanks
>
> Still crashing hard here in qfq_reset_qdisc(), when packets are present
> in queues.
>
> Probably hlist_for_each_entry_safe() is needed, since
> qfq_deactivate_class() is called ...
>
> Also rename cl->next to cl->hnode so that following is clearer ?
>
> - hlist_for_each_entry(cl, n, &grp->slots[j], next) {
> + hlist_for_each_entry_safe(cl, n, next, &grp->slots[j], hnode) {
>
> Fabio, any idea why everything is blocked after a few packets for me ?
>
> Here is script to reproduce the problem :
>
> # cat qfq_setup.sh
> modprobe dummy
>
> ifconfig dummy0 10.2.2.254 netmask 255.255.255.0 up
>
> for i in `seq 1 16`
> do
> arp -H ether -i dummy0 -s 10.2.2.$i 00:00:0c:07:ac:$(printf %02x $i)
> done
>
> DEV=dummy0
> RATE="rate 40Mbit"
> TNETS="10.2.2.0/25"
> ALLOT="allot 20000"
>
> tc qdisc del dev dummy0 root 2>/dev/null
>
> tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 rate 1000Mbit \
> bandwidth 1000Mbit
QFQ is non work conserving, it may choose to send a smaller packet
ahead of a larger packet in other flow...
--
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists