[ofa-general] Running netperf and iperf over SDP

Rick Jones rick.jones2 at hp.com
Mon Oct 29 10:05:30 PDT 2007


Moshe Kazir wrote:
> While running netperf and iperf over SDP I get unstable Performance
> results.
> 
> On iperf I get more then 25 % difference between minimum and maximum.
> 
> On netperf I get the following amazing result. ->
> 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  # while   LD_PRELOAD=/usr/lib64/libsdp.so ./netperf  -H 192.168.7.172
> -- -m 512 -M 1047 ; do echo . ; done
> TCP STREAM TEST to 192.168.7.172
> Recv   Send    Send
> Socket Socket  Message  Elapsed
> Size   Size    Size     Time     Throughput
> bytes  bytes   bytes    secs.    10^6bits/sec
> 
> 126976 126976    512    10.00    3247.39
> .
> TCP STREAM TEST to 192.168.7.172
> Recv   Send    Send
> Socket Socket  Message  Elapsed
> Size   Size    Size     Time     Throughput
> bytes  bytes   bytes    secs.    10^6bits/sec
> 
> 126976 126976    512    10.00    1222.48
> .
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 
> Can some one spar me a hint ?
> What I'm doing wrong ?

I would start by telling netperf you want CPU utilization measured.  That way we 
can see if there is a correlation between the CPU utilization and the throughput.

Also, if this were a "pure" TCP test, you would have a race between the nagle 
algorithm and the speed at which ACK's come-back from the receiver affecting the 
distribution of TCP segment sizes being transmitted since your send size is so 
much smaller than the MTU of the link.  IIRC for IPoIB in 1.2.mumble the MTU is 
65520 or something like that.  You might consider taking snapshots of the 
link-level statistics (does ethtool -S work for an IB interface?) from before 
and after each netperf test and run them through beforeafter:

ftp://ftp.cup.hp.com/dist/networking/tools/

You might also experiment with setting TCP_NODELAY - although since this is 
LD_PRELOADED SDP I'm not sure what that really means/does.

Any particular reason you are telling the netperf side to post 1047 byte 
receives when you are making 512 byte calls to send()?

> 
> The test run on x86_64 , sles 10 sp1 , OFED-1.2.5  

I'm guessing you have multiple cores - how do interrutps from the HCA (?) get 
distributed?  What happens when you use the -T option of netperf to vary the CPU 
binding of either netperf or netserver:

netperf -T N,M    #bind netperf to CPU N, netserver to CPU M
netperf -T N,     #just bind netperf to CPU N, netserver unbound
netperf -T  ,M    #netperf unbound, netserver bound to CPU M

relative to where the interrupts from the HCA go?

Finally, well for now :), there are "direct" SDP tests in netperf.  Make sure 
you are on say 2.4.4:

http://www.netperf.org/svn/netperf2/tags/netperf-2.4.4/   or
ftp://ftp.netperf.org/netperf

and add --enable-sdb to the ./configure command.

happy benchmarking,

rick jones



More information about the general mailing list