How to Measure Network and Disk Throughput with IPERF3

FileCatalyst is a file transfer acceleration tool. Like any software, it is still limited by the performance of the hardware and the network on which it is used. If you are trying to achieve speeds faster than 1 Gbps, with FileCatalyst, read on.

If you already know you’ll need to transfer files faster than 1Gbps, before installing FileCatalyst use IPERF3 to ensure your system is clean and has no bottlenecks.

A tool like IPERF3 can be used to identify the bottlenecks or problems that might occur during  transfer. IPERF3 is a free open-source tool that is widely used for measurements of the maximum achievable throughput between point-to-point connections and it can be used with TCP and UDP protocols.

Bottlenecks can occur when trying to transfer files to and from different locations. Poor throughput can happen either at the network level or the storage level (normally when writing and reading from disk). IPERF3 helps troubleshoot these problems, before you even install FileCatalyst. IPERF3 can also be used to validate that your firewall is properly configured to allow FileCatalyst to work at optimal speed.

IPERF3 probing will save a lot of time during the installation and configuration of FileCatalyst, firewall configuration, and storage configuration. Therefore, we recommend having clean IPERF3 logs before attempting to install FileCatalyst.


Prerequisites

  • Install IPERF3 tools in the machines you want to test.
  • Have access to both machines where you will run the tests. Also we recommend using the same machines where FileCatalyst Server and FileCatalyst Client will be installed.
  • Make sure you allow UDP traffic (to guarantee we will able to use acceleration).

We recommend running IPERF3 under this two scenarios:

  1. For new installations and when leading a proof of concept (POC).
  2. To troubleshoot performance problems.


Command Line Syntax

 The general syntax to run the test is described below:

  1. Server side commands: iperf3 -s [ options ]
  2. Client side commands: iperf3 -c <server’s IP> [ options ]

Where some of the options are listed:

General commands:

Command Line Option Description
-f, –format [kmKM]

 

A letter specifying the format to print bandwidth numbers in. Supported formats are

‘k’ = Kbits/sec           ‘K’ = KBytes/sec

‘m’ = Mbits/sec           ‘M’ = MBytes/sec

-J, –json Output in JSON format

Server-only commands:

Command Line Option Description
-F, –file name Server-side: read from the network and write to the file, instead of throwing the data away.

Client-only commands:

Command Line Option Description
-F, –file name Client-side: read from the file and write to the network, instead of using random data;
-u, –udp Use UDP rather than TCP.
-b, –bandwidth n[KM] Set target bandwidth to n bits/sec (default 1 Mbit/sec for UDP, unlimited for TCP). If there are multiple streams (-P flag), the bandwidth limit is applied separately to each stream. A must when testing UDP
-R, –reverse Run in reverse mode (server sends, client receives).
-t, –time n The time in seconds to transmit for. Default is 10 seconds.


For more information
, please see the official site: https://iperf.fr/iperf-doc.php#3doc

Please note for the test listed in the following section, the server used has IP 172.20.7.22 and the client has 172.20.5.200 IP.

Network Tests

UDP throughput:

Server: iperf -s

Iperf1-server2-udp

Iperf1-server1-udp

Client: iperf3 -c 172.20.7.22 -P 2 -t 10 -b 1G -u

Iperf1-client3-udp

udp throughput client 2

With these results, we can see:

  • Packet loss
  • If UDP traffic is allowed
  • The network jitter (Jitter is the variation in the delay of received packets, as a result of network congestion, improper queuing, etc.)

TCP throughput:

Under certain circumstances, we might need to test TCP throughput, most likely to check the multi-stream TCP behavior. If this is necessary, you can use the examples below as a reference.

Server: iperf3 -s

tcp throughput server 1

tcp throughput server 2

Client: iperf3 -c 172.20.7.22 -P 2 -t 30. This test will run 2 TCP streams during 30s.

Iperf1-client2

client side iperf3

Disk Tests

Disk testing using IPERF3: Disk to Memory

If you run the test multiple times, make sure of the following:

  • Using a different file every time you run OR
  • Use a command to clear the cache of the tiles:
    sync; echo 3 > /proc/sys/vm/drop_caches** (as root user)
    Use the right command for your OS

For this test, 52GB and 20GB files were used, running from the client to the server machine.

For the first test, run the test as we did before using the following commands:

  • Server: iperf3 -s
  • Client: iperf3 -c 172.20.7.22 -i2 -t30 -b 1G -u

Using a 20GB file:

Server: iperf3 -s

Iperf1-server20gb-write-udp

Client: iperf3 – c 172.20.722 -f /home/administrator/Desktop/20GB0..mov -i2  -u  -b 1G -t30

Iperf1-client20gb-write-udp


Using a 52GB file:

Server: iperf3 -s

Iperf1-server-write-udp


Client:
iperf3  -c 172.20.7.22  -f /home/administrator/Desktop/52GB0.mov -i2  -u  -b 1G -t30

Iperf1-client4-write-udp

Disk testing using IPERF3: Memory to Disk

The test will be performed the same as Disk to memory test, however the main difference is instead of using a file on client side, this will be from Server side as is shown allow:

Server:  iperf3 -s  -f /home/administrator/Desktop/52GB0.mov
Client: iperf3  -c 172.20.7.22  -i2  -u  -b 1G -t30

Important Note: both Test 3 and Test 4 will run until the end of the file or the end of the test duration and the slowest of the results will show the bottleneck.