uperf is a network performance tool that supports modelling and replay of various networking patterns. uperf was developed by the Performance Applications Engineering group at Sun Microsystems and is released under the GNU General Public License Version 3.
The CVS version contains support for IPV6, fixes for SCTP and a few minor bug fixes. The SCTP fixes and IPV6 support were graciously contributed by Michael Tuexen.
Nov 13 2012 - Uperf 1.0.4 is now available
Uperf 1.0.4 is now available. It is known to work on Solaris, Linux, FreeBSD and MacOS. You can download the sources here
Jul 15 2009 - Uperf 1.0.3-beta is now available
The following bugs have been fixed since 1.0.2
- 2805151 Assertion failed: ptr, file strand.c, line 192
- 2803723 If MASTER_PORT is already in use, slave should exit
- 2802134 Strands not responding
- 2802120 Errors on slaves are not fully shown by the Master
- 2763527 stack smashing detected
- 2717582 BSWAP_* warnings on Opensolaris
- 2717487 Operation count reported at end of run is wrong for master
- 2508776 uperf crash if terminal size is > 128 columns
- 2450904 uperf hang for some profiles with zero TCP window size
- 2446117 uperf dumps core
- 2373503 uPERF core dumps overflowing buffers
June 18 2009 - Follow uperf on twitter
June 24 2008 - uperf 1.0.2 is available!
- Added -x option to generate output that can be processed by Fenxi
- Added an option to generate traffic to specific ports. (use port=xxx in the options part of the connect or accept flowop)
- UDP traffic can now be rate limited! (use rate=xxx in the options part of read/write flowops)
uperf represents the next generation benchmarking tools (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
- 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 performance under a variety of conditions
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
Downloaduperf currently runs on Solaris (sparc and x64) and Linux. There is some work going on to make it work on windows. You can either
- check out the source code via CVS
- Browse source code via CVS
- Download binaries (The binary package has binaries for Solaris X86, Solaris SPARC and Linux). It also contains sample workloads and the manual.