Libertas slow when other processes use udp on localhost
kshehata at aeryon.com
Fri Feb 20 17:25:54 EST 2009
On 18-Feb-2009, at 22:34, Kareem Shehata wrote:
> I think I've found a way to reproduce the strange slowdowns we've
> been seeing in libertas performance when running our software. I've
> created a little test code that sends and receives udp packets, much
> like ping but without the sophistication. Here's the strange part:
> both client and server can run on the same host and communicate via
> localhost, but libertas still slows to a crawl. This doesn't happen
> with our wired connection.
> Our setup:
> Unex 8385 CF module on an arm processor
> Kernel 2.6.22, with latest libertas driver backported
> Steps to reproduce:
> 1) Compile the attached file on your platform (we use gcc to cross-
> compile to the arm)
> 2) Start an scp transfer
> 3) Start a listener with udp_mirror -l (pipe the output to /dev/null
> and background if you only have one terminal)
> 4) Start a sender with udp_mirror -t 200
> 5) Start another sender if it doesn't slow down right away. On our
> setup, it takes anywhere from 2 to 4 to bring it to a crawl.
> Kill the senders and the listener, and all will return to normal.
> Any ideas as to what can cause this? Is there any dependency in the
> libertas driver to kernel scheduling?
> BTW: The code itself is less than perfectly documented, just to get
> it out to you sooner. I can go through and clean things up a little
> if you need to dig into this code. For now, this should just
> compile and work on most platforms (including X86 and ARM).
Not sure if this makes any difference, but this was with firmware
5.0.16p0. I've since tried 5.0.20p2, and it actually seems worse, in
that transfers start out slower, and it takes fewer processes to bring
it to a crawl.
Aeryon Labs Inc.
More information about the libertas-dev