uperf is a network performance tool that supports modelling and replay of various networking patterns. uperf was initially developed by the Performance Applications Engineering group at Sun Microsystems. Since 2008, it is being developed by the community. uperf is released under the GNU General Public License Version 3.
The latest version of uperf is 1.0.7 was released April 2020.
DownloadUperf is known to work on Linux, Android, Solaris, FreeBSD and MacOS. You can download uperf sources from https://github.com/uperf/uperf
You can download Ubuntu binaries from Volodymyr Kononenko's PPA at https://launchpad.net/~vmkononenko/+archive/ubuntu/uperf
On FreeBSD, Uperf is available as a binary package (pkg install uperf) and a port (cd /usr/ports/benchmarks/uperf && make install clean). Details
Follow uperf on twitter
uperf represents a new kind of benchmarking tool (like filebench) where instead of running a fixed benchmark or workload, a description (or model) of the workload is provided and the tool generates the load according to the model. By distilling the benchmark or workload into a model, you can now do various things like change the scale of the workload, change different parameters, change protocols, etc and analyse the effect of these changes on your model. You can also study the effect of interleaving CPU activity, or think times or the use of SSL instead of TCP among many other things.
Some of the questions you could answer using uperf are
- Bandwidth and latency (unidirectional and bi-directional) with different protocols like TCP, UDP, SCTP, SSL, VSOCK
- Connection setup and teardown scalability for different protocols
- Effect of noise on ongoing network connections
- Does it matter if I use processes instead of threads to do network communication?
- What is the L2 cache miss rate for connection setup?
- Is sendfilev(3EXT) (with one file) equivalent to sendfilev(3EXT)?
- Understand TCP, UDP, SCTP, SSL, VSOCK performance under a variety of conditions
- Test various TCP Congestion control algorithms
More information regarding uperf can be found at the following blogs
- uperf - A network benchmark tool - Neelakanth Nadgir
- uperf - Theory and Examples - Eric He
- Comparing ping-pong rates on Solaris and Linux using uperf - Charles Suresh
- Introducing UPERF - an open source network performance measurement tool - Amitabha Banerjee