CBQ troubles, processor overload

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey there everyone,
	I appreciated everyone's help so much in the last few posts I
decided to post some more! :)
	We implemented our bandwidth management machine on the network
last week and everything looked great. After looking at it today,
anything past the machine is losing major packets and the latency is
high. 
	I'm using RedHat 9.0 on a Pentium 4 2.8ghz with 512mb of ram. I
set up tc to run cbq as the root qdisc. I run a perl script to pull data
from our customer database (IP address and customer number) and add it
in to TC. Here are the commands I run:

	/usr/sbin/tc qdisc del dev eth1 root
	(used to delete the current setup so a fresh start can be made)

	/usr/sbin/tc qdisc add dev eth1 root handle 10:0 cbq bandwidth
200mbit avpkt 1000
	(the root qdisc)

	/usr/sbin/tc class add dev eth1 parent 10: classid 10:1 cbq
bandwidth 200Mbit rate 200Mbit allot 1514 weight 2Mbit prio 8 maxburst
10 avpkt 1000
	(the parent class for all our non-customers)

	/usr/sbin/tc class add dev eth1 parent 10: classid 10:$classid
cbq bandwidth 200Mbit rate $rate allot 1514 prio 5 maxburst 20 avpkt
1000 bounded
	(the parent class for all our customers to split)

	/usr/sbin/tc qdisc add dev eth1 parent 10:$classid sfq quantum
1514 perturb 15
	(used for fair sharing)

	/usr/sbin/tc filter add dev eth1 parent 10:0 protocol ip prio 25
u32 match ip dst $ip flowid 10:$classid
	(filter for customer based on IP)

	The problem I'm running into is that the processor gets
overloaded because of the amount of work tc is doing. I assumed it would
be able to handle the apx 5000 customers we have on it. I have a bridge
set up between two devices that run from the internet to the local
network. This bridge takes up 20% of the CPU when tc is not enabled.
When tc becomes enabled, it finishes off the rest of the CPU and eats
most of the queue as well.
	I'm wondering if the commands I'm using are being implemented
correctly, if I'm using the right setup, and if I'm using the right
qdiscs or if there's a better alternative. I stole most of this code
from the guy who worked here before me. The commands seemed to work for
another project we had but we have a lot more customers now than we did
before. I would assume the machine we're running would be able to handle
it but I'm not sure.
	Any help would be greatly appreciated. I understand what you all
have to put up with sometimes and you are terrific for helping out those
of us in need. Thanks.

Adam Towarnyckyj

_______________________________________________
LARTC mailing list / LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux