iperf3: A TCP, UDP, and SCTP network bandwidth measurement tool (BSD license)
https://github.com/esnet/iperf
deefb95fea
Mostly this change consists of adding FreeBSD-specific code to handle this feature. The concepts and system calls are very similar to what's already done for Linux. One difference is that on FreeBSD, the CPU affinity mask is saved before -A processing and restored afterwards. This causes a slight change to the function signatures for iperf_setaffinity() and iperf_clearaffinity() (these functions however are not documented as a part of the libiperf3 API). Slightly improve some of the documentation for the -A command line option, to hopefully stave off some of the questions about this feature. Mostly based on a submitted patch. Issue: 128 (better error message for CPU affinity failure) Submitted by: Susant Sahani <ssahani@redhat.com> |
||
---|---|---|
config | ||
examples | ||
src | ||
aclocal.m4 | ||
AUTHORS | ||
bootstrap.sh | ||
configure | ||
configure.ac | ||
INSTALL | ||
LICENSE | ||
make_release | ||
Makefile.am | ||
Makefile.in | ||
README | ||
RELEASE_NOTES | ||
test_commands.sh | ||
TODO |
= Summary = iperf3 is a tool for measuring achievable bandwidth on IP networks. iperf3 is NOT backwards compatible with the original iperf. Supported platforms: * Linux * FreeBSD * Mac OSX = Building iperf3 = == Prerequisites: == * libuuid: this is not installed by default for Debian/Ubuntu Systems to install: apt-get install uuid-dev == Building == ./configure; make; make install (Note: If configure fails, try running ./bootstrap.sh first) = Latest version = To check out the most recent code, do: hg clone http://code.google.com/p/iperf/ = Bug Reports = Before submitting a bug report, try checking out the latest version of the code, and confirm that its not already fixed. Then submit to: https://code.google.com/p/iperf/issues/list For more information see: http://code.google.com/p/iperf/ = Changes from iperf 2.x = New options: -V, --verbose more detailed output than before -J, --json output in JSON format -Z, --zerocopy use a 'zero copy' sendfile() method of sending data -O, --omit N omit the first n seconds (to ignore slowstart) -T, --title str prefix every output line with this string -F, --file name xmit/recv the specified file -A, --affinity n/n,m set CPU affinity (Linux and FreeBSD only) -k, --blockcount #[KMG] number of blocks (packets) to transmit (instead of -t or -n) -L, --flowlabel set IPv6 flow label (Linux only) Changed flags: -C, --linux-congestion set congestion control algorithm (Linux only) (-Z in iperf2.0) Deprecated options: Not planning to support these iperf2 flags. If you really miss these options, please submit a request in the issue tracker: -d, --dualtest Do a bidirectional test simultaneously -r, --tradeoff Do a bidirectional test individually -T, --ttl time-to-live, for multicast (default 1) -x, --reportexclude [CDMSV] exclude C(connection) D(data) M(multicast) S(settings) V(server) reports -y, --reportstyle C report as a Comma-Separated Values Also deprecated is the ability to set the options via environment variables. For sample command line usage, see: http://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf-and-iperf3/ Using the default options, iperf is meant to show typical well designed application performance. 'Typical well designed application' means avoiding artificial enhancements that work only for testing (such as splice()'ing the data to /dev/null). iperf does also have flags for 'extreme best case' optimizations but they must be explicitly activated. These flags include: -Z, --zerocopy use a 'zero copy' sendfile() method of sending data -A, --affinity n/n,m set CPU affinity = Known Issues = * UDP performance: iperf2/iperf3 both only are only about 50% as fast as nuttcp in UDP mode. We are looking into this, but in the meantime, if you want to get UDP above 5Gbps, we recommend using nuttcp instead (http://www.nuttcp.net/) * Interval reports on high-loss networks: The way iperf3 is currently implemented, the sender write command will block until the entire block has been written. This means that it might take several seconds to send a full block if the network has high loss, and the interval reports will have widely varying interval times. We are trying to determine the best solution to this, but in the meantime, try using a smaller block size if you get strange interval reports. For example, try "-l 4K". * -Z flag on OSX sometimes hangs