qperf“, is one of the many tools used to measure bandwidth and latency between two nodes. qperf works over many transports including TCP/IP, RDMA, UDP, and SCTP. qperf measures throughput on different sockets in the IP stack.




To install qperf on a RedHat Based systems, use the below command.

# yum install qperf


To lists available tests, use the below command:

# qperf --help tests# qperf --help tests
    conf                    Show configuration
    quit                    Cause the server to quit
Socket Based
    rds_bw                  RDS streaming one way bandwidth
    rds_lat                 RDS one way latency
    sctp_bw                 SCTP streaming one way bandwidth
    sctp_lat                SCTP one way latency
    tcp_bw                  TCP streaming one way bandwidth
    tcp_lat                 TCP one way latency
    udp_bw                  UDP streaming one way bandwidth
    udp_lat                 UDP one way latency
RDMA Send/Receive
    rc_bi_bw                RC streaming two way bandwidth
    rc_bw                   RC streaming one way bandwidth
    rc_lat                  RC one way latency
    uc_bi_bw                UC streaming two way bandwidth
    uc_bw                   UC streaming one way bandwidth
    uc_lat                  UC one way latency


Basic Syntax

qperf has the notion of a “client” and “server” for testing network throughput between two systems. To use qperf, configure 2 machines:

  • On the listener, run qperf without options.
  • On the other machine, run “qperf [hostname] [options to test]“.

Few of the most commonly used qperf options are :

  • tcp_bw
  • tcp_lat
  • udp_bw

See the man page of qperf for more options.


Open firewall ports for qperf


The qperf server listens on TCP Port 19765 by default. This can be changed with the –listen_port option. This port will need to be allowed in any firewall present.


On iptables:

# iptables -I INPUT -m tcp --dport 19765 -j ACCEPT


On firewalld:

firewall-cmd --add-port=19765/tcp


If you are not on production systems or do not need iptables or firewald to be enabled, you can go ahead and simply disable them.


Measuring Bandwidth with qperf



To measure the network bandwidth between 2 servers, we have to configure one of them to server as the listener as shown below.

# qperf



Now we can have the other system connect to the listener as a client machine. Use the command below to do so.

# qperf tcp_bw
    bw = 314 MB/sec


Here, – is the lister machine (Server) IP address.


As with any performance test, you should not rely on 1 iteration of the test. Try the above command 3 or more times to find an average value.


Measuring Latency with qperf



As with the above example, we need to start the listener on one of the machines.

# qperf



Use the below command on the client-server in order to measure the latency between 2 servers.

# qperf -vvs tcp_lat
    latency         =    311 us
    msg_rate        =   3.22 K/sec
    loc_send_bytes  =   3.22 KB
    loc_recv_bytes  =   3.22 KB
    loc_send_msgs   =  3,218 
    loc_recv_msgs   =  3,217 
    rem_send_bytes  =   3.22 KB
    rem_recv_bytes  =   3.22 KB
    rem_send_msgs   =  3,217 
    rem_recv_msgs   =  3,217


As shown in the output above, latency value is 311 Microseconds and then there are few other details as well. loc_xx shows details from the local system perspective and rem_xx shows the same from the remote system perspective. Refer man page of qperf for more options/verbosity.


Other Tests


There are Other tests available with qperf, including UDP bandwidth and latency, SCTP bandwidth and latency, and other protocols which run on RDMA. See the TESTS section of man qperf for more details.


Was this answer helpful? 0 Users Found This Useful (0 Votes)