Re: [PATCH] sched: QFQ - quick fair queue scheduler (v2)
flat view
From: Eric Dumazet <hidden>
Date: 2011-03-03 09:35:16
Le mercredi 02 mars 2011 à 19:16 +0100, Patrick McHardy a écrit :
Am 02.03.2011 18:31, schrieb Eric Dumazet:quoted
Le mercredi 02 mars 2011 à 17:18 +0100, Eric Dumazet a écrit :quoted
Le mercredi 02 mars 2011 à 08:11 -0800, Stephen Hemminger a écrit :quoted
I put the iproute2 code into the repository in the experimental branch.Thanks It seems as soon as packets are dropped, qdisc is frozen (no more packets dequeued) Hmm...It seems class deletes are buggy. After one "tc class del dev $ETH classid 11:1 ..." a "tc -s -d qdisc show dev $ETH" triggers an OopsWhat classes and filters did you have before issuing that command?
(Fabio found the origin of the problem in qfq_destroy_class()) Here is the script I wrote to use QFQ on dummy0 device (I then use a normal udpflood workload to stress the thing) More or less copied from other stuff I had, so its probably very stupid ;) # cat egress_dummy0.sh ETH=dummy0 RATE="rate 40Mbit" PRIVNETS="172.16.0.0/12 192.168.0.0/16 10.0.0.0/8" ALLOT="allot 20000" ethtool -K $ETH tso off tc qdisc del dev $ETH root 2>/dev/null tc qdisc add dev $ETH root handle 1: cbq avpkt 1000 rate 1000Mbit \ bandwidth 1000Mbit tc class add dev $ETH parent 1: classid 1:1 \ est 1sec 8sec cbq allot 10000 mpu 64 \ rate 1000Mbit prio 1 avpkt 1500 bounded # output to private nets : 40 Mbit limit tc class add dev $ETH parent 1:1 classid 1:11 \ est 1sec 8sec cbq $ALLOT mpu 64 \ $RATE prio 2 avpkt 1400 bounded tc qdisc add dev $ETH parent 1:11 handle 11: \ est 1sec 8sec qfq tc filter add dev $ETH protocol ip parent 11: handle 3 \ flow hash keys rxhash divisor 16 tc class add dev $ETH classid 11:1 est 0.5sec 2sec qfq weight 100 maxpkt 1100 tc class add dev $ETH classid 11:2 est 0.5sec 2sec qfq weight 200 maxpkt 1200 tc class add dev $ETH classid 11:3 est 0.5sec 2sec qfq weight 300 maxpkt 1300 tc class add dev $ETH classid 11:4 est 0.5sec 2sec qfq weight 400 maxpkt 1400 tc class add dev $ETH classid 11:5 est 0.5sec 2sec qfq weight 500 maxpkt 1500 tc class add dev $ETH classid 11:6 est 0.5sec 2sec qfq weight 600 maxpkt 1600 tc class add dev $ETH classid 11:7 est 0.5sec 2sec qfq weight 700 maxpkt 1700 tc class add dev $ETH classid 11:8 est 0.5sec 2sec qfq weight 800 maxpkt 1800 tc class add dev $ETH classid 11:9 est 0.5sec 2sec qfq weight 900 maxpkt 1900 tc class add dev $ETH classid 11:a est 0.5sec 2sec qfq weight 1000 maxpkt 2000 tc class add dev $ETH classid 11:b est 0.5sec 2sec qfq weight 1100 maxpkt 2048 tc class add dev $ETH classid 11:c est 0.5sec 2sec qfq weight 1200 maxpkt 2048 tc class add dev $ETH classid 11:d est 0.5sec 2sec qfq weight 1300 maxpkt 2048 tc class add dev $ETH classid 11:e est 0.5sec 2sec qfq weight 1400 maxpkt 2048 tc class add dev $ETH classid 11:f est 0.5sec 2sec qfq weight 1500 maxpkt 2048 tc class add dev $ETH classid 11:10 est 0.5sec 2sec qfq weight 1600 maxpkt 2048 for privnet in $PRIVNETS do tc filter add dev $ETH parent 1: protocol ip prio 100 u32 \ match ip dst $privnet flowid 1:11 done tc filter add dev $ETH parent 1: protocol ip prio 100 u32 \ match ip protocol 0 0x00 flowid 1:1