I am currently setting up some tests with iperf
to add artificial load between two linux servers node0
and node1
.
When I run it without any bandwidth specification, iperf goes for the maximum (that is 25Gbits/sec) and we can see that we are quite good as we reach 23.5Gbits/s.
nh0@node0:~$ iperf -c node1 -f 'g'
---------------------------------------------
Client connecting to node1, TCP port 5001
TCP window size: 0.00 GByte (default)
---------------------------------------------
[ 3] local 192.168.1.1 port 39002 connected with 192.168.1.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 27.4 GBytes 23.5 Gbits/sec
However, with the option -b
, I can set up for instance 1Gbit/s as the bandwidth to utilize. This also works out fine:
nh0@node0:~$ iperf -c node1 -f 'g' -b 1g
---------------------------------------------
Client connecting to node1, TCP port 5001
TCP window size: 0.00 GByte (default)
---------------------------------------------
[ 3] local 192.168.1.1 port 39004 connected with 192.168.1.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.16 GBytes 1.00 Gbits/sec
However, when I increase up to 3Gbit/s, we surprisingly see that just reach a very small amount!
nh0@node0:~$ iperf -c node1 -f 'g' -b 3g
---------------------------------------------
Client connecting to node1, TCP port 5001
TCP window size: 0.00 GByte (default)
---------------------------------------------
[ 3] local 192.168.1.1 port 39008 connected with 192.168.1.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 0.00 GBytes 0.00 Gbits/sec
Using the formatter -f 'm'
here, shows that we reach 0.10Mbit/sec in that test.
Why do we see the bandwidth drop here? And how to fix that?
As the first test shows, we are able to reach such high bandwidths, so this is not the issue.
I use: iperf version 2.0.13 (21 Jan 2019) pthreads