[netperf-talk] global question concerning Netperf test and SMP support

Andrew Gallatin gallatin at cs.duke.edu
Wed Apr 4 10:58:44 PDT 2012


Simon,

A random few thoughts:

Why do you use a 128 byte TCP message size?  Unless there is some
particular use case you're interested in, this is going to stress
things like the client's system call interface, and not so much the
networking system.  For 10GbE line rate, you're going to have to issue
more than 10 million syscalls / second.  Also note the -- -M parameter
to adjust the *server*'s message size.

Finding the "best" UDP message size often depends on the OS.  For Linux
where the syscall overhead is low, but the ip frag/reassembly overhead
can be high, you generally get the best results using the IP MTU - 28.
Eg, -tUDP_STREAM -- -m 1472.  For a lot of BSDs / OSX, the syscall
overhead is larger than the IP fragmentation / reassembly overhead, so
regardless of the MTU you generally get better results with a larger
message size (8K or 16K for example).  For TCP, you should almost
always omit the message size (again, unless you're trying to test
a particular use case).

A reasonable way to "guess" at the limits of the system is to run the
lmbench bw_mem benchmark.  Unless you're using the TCP_SENDFILE test,
there will be a kernel -> user, or user -> kernel memory copy in every
netperf test.  (TCP_SENDFILE omits the user->kernel send-side copy on
most non-braindead OSes)

Most of the synchronization issues for multiple netperfs go away if
you use a test that is sufficiently long.  There is also a fork
of netperf which does the synchronization.  See the archives:
http://www.netperf.org/pipermail/netperf-talk/2011-December/000890.html

HTH,

Drew


More information about the netperf-talk mailing list