(Whoops, fumble fingers, continuing)

On Wed, Jul 30, 2008 at 3:12 PM, Andrew Gallatin <[EMAIL PROTECTED]> wrote:
> Iperf does an enormous amount of work for each socket read with
> UDP.  For every single receive,  it:
>
> - timestamps the packet via gettimeofday() which can be incredibly
expensive on some platforms which do not use TSC for the
timecounter.

- calls ReportPacket(), which does a large number of thread operations
to coordinate with the reporter thread.

To improve UDP performance, I'd try several things in order:

1) use a larger message size (-l 8192) on both sides.  This will
reduce the work done per-byte

2) Try replacing the gettimeofday() calls in
Server::Run() by just memsetting the tv to 0.  I have not tried
this, and something may break if this is done.

3) Build without threads by hacking config.h by commenting out
HAVE_POSIX_THREAD and HAVE_PTHREAD after running
configure, but prior to building.

Do any of these things help?

For me, #3 improves 10GbE UDP multicast receive performance
from 1.5Gb/s to line rate using a 2.6.22 kernel running on
a RHEL4 box (2.0GHz athlon64x2)

Drew

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Iperf-users mailing list
Iperf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iperf-users

Reply via email to