Simple click config is VERY slow on our system; also the PollDevice doesn't work on our tulip.

Tao Zhao taozhao at cs.nyu.edu
Mon Mar 4 19:54:24 EST 2002


Thanks for your assistance.

> Did you include a ToDevice in the config? You must, when you use
> PollDevice. Even Idle->ToDevice(whatever) is enough.

When I add Idle->ToDevice(eth1) to the configuration file, ping packets
went through for a minute then the click crashed. "Unable to handle kernel
paging request at virtual address xxxx" is the message besides the
register and stack dump.

> Normally there aren't that many tasks. However, each DelayUnqueue
> contains a task. 300 DelayUnqueues == 301 tasks == FromDevice is
> serviced 300 times less often == large, variable delay.

In fact although I had 300 elements in the configuration, only 100 of them
were DelayUnqueues. You may want to check with your task list
implementation: in the situation where 100 task in the task list and each
of them just wakes up and goes away (upstream queue is empty all the
time), the click took more than 300ms to deliver the ping packets. It's
kind of fishy. Also the delay is only 2-3 ms in the beginning and increase
linearly with time until it reaches around 300ms after 1-2 minutes. 

I also tested with 50 and 200 background DelayUnqueue tasks, the delay is
80ms and 700ms respectively. Note that in all these 3 tests (100
tasks, 50 tasks and 200 tasks), the packets actually go directly to
ToLinux from FromDevice; those tasks are only background tasks doing
nothing when waked up.

> -> NotifierQueue(256)
> -> DelayUnqueue(0.00001s)

We used above elements as suggested, and it worked well for light
load (after hacking the kmalloc again: the click module seems to kmalloc
large chunk several times in the newer version). I'll test the
performance under heavy traffic tomorrow.

Thanks again for your help,
-Tao










More information about the click mailing list