Iperf is a program that I take for granted because I’ve used it for so many years. I’m always surprised when I mention iPerf and people say they are not familiar with it or what it does.
iPerf is a utility used to measure bandwidth or performance. It runs on memory by default, so your disk subsystem is not used. Multiple versions exist, including Microsoft Windows, Linux Android, and Apple, which makes it a great cross-platform tool.
A quick disclaimer about performance measurement tools:
Every performance tool will have its own special way of conducting tests and reporting results so don’t be surprised when you run a test using two different tools and get slightly different results. The key is to be consistent with the tool you use and document your methodology. When documenting the methodology, you can easily compare your findings with other tools and when anything changes.
Even a tool that copies a file and measures throughput statistics will have different results depending on the protocol used, how busy the client, server, and network are at that time. Then when you change the operating system or hardware, all of your results will most likely change as well.
Even in running the same tool multiple times you may receive slightly different results. Be sure to pay attention to the results and a possible variance between the results.
Certain types of networks will have consistently inconsistent performances by nature (such as WiFi, long distance or high latency links).
I will cover the various versions of iPerf and their differences below. I know people who prefer certain versions – that’s fine, there is no good or bad version, they all have their pros and cons.
To find iPerf for your specific operating system, go to https://iPerf.fr/iPerf-download.php
Sample iPerf v2.0.9 Commands
iperf –c servername
Performs a TCP upload from the client and server
iperf –c servername –r
Performs a TCP upload then download between the client and server
iperf –c servername –p 80
(server requires same option)
Performs a TCP upload from the client and server on TCP port 80
iperf –c servername –P 3
Performs 3 simultaneous TCP uploads from the client and server
iperf –c servername –t 100
Performs a TCP upload from the client and server for 100 seconds
iperf –c servername –t 100 –i 10
Performs a TCP upload from the client and server for 100 seconds, reporting results every 10 seconds
iperf –c servername –b 100 Kb
Performs a TCP upload from the client using 100 kb/s