fasterdata.es.netfasterdata.es.netESnet Network Performance Knowledge Base

bwctl

bwctl is a very useful tool for measuring memory-to-memory performance. If your disk subsystem are fast enough, disk-to-disk performance should be similar to the throughput you can achieve using bwctl.

bwctl is a wrapper for the iperf tool, and ensures only one iperf test is run at any one time. You need to install both the bwctl client and iperf on your test host.

Both are also available as rpms for Linux.

There are a number of public bwctl servers you can run a test to. ESnet bwctl servers are open to the entire R&E community.

Sample bwctl commands:

bwctl -c receive_host  
    This will use your host as the sender, and run a 10 second test.
bwctl -c receive_host -t 30 -f m -i 2 -x
    This will use your host as the sender, run a 30 second test, format the results in Megabits/sec. Also output results every 2 secs for both the client and server.
bwctl -c hostname:55555 -t 30 -f m -w 16M -i 2 -x
    This will run the same test, but will connect to the bwctl daemon on the remote host that is running on the non-standard port 55555 (more on ports below). The TCP window will be 16MB.
bwctl -s send_host -P 4 -t 30 -f M -w 4M -S 32
    This will use your host as the receiver, and run 4 parallel streams, format the results in MegaBytes/sec,  use a 4 MB TCP buffer, and set the TOS (type of service) bit to 32 (which is the ESnet scavenger class of service).
bwctl -c receive_host -s send_host -t 30 -f M -x
    This is very useful if you are not logged into one of the two endpoints. It runs a 30 second test from send_host to recv_host.
bwctl -L 1000 -c receive_host -t 30 -f m -i 2 

By default bwctl exits if it can not get a test slot within 5 minutes. Use the -L flag for heavily used servers where you might have to wait longer.

The main bwctl control port is 4823. Make sure all these ports are not blocked by any firewalls. In a firewalled environment you may need to create a file $HOME/.bwctlrc that contains the following:

# ESnet runs iperf on these ports
# make sure your site firewall is configured to allow these
iperf_ports 5001-5100
# ESnet's bwctld is configured to use these ports
# make sure they are open too
peer_port 6001-6050
# if iperf is not installed in /usr/bin, specify location here
iperf_path /path/to/iperf

More Information
bwctl homepage
bwctl tutorial from Internet2