| = 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 |
| -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 |
| |
| |
| |