Calculations of iPerf Tool on the Server

  • 7018622
  • 15-Feb-2017
  • 20-Mar-2017

Environment

PlateSpin Migrate 12.2

Situation

This article discusses about how to calculate iPerf tool on the server.

Resolution

See the instructions below on calculating iPerf tool on the server.

We strongly recommend that this online calculator be used in order to correctly set expectations regarding throughput.  This can help in calculating the expected maximum TCP throughput given applicable customer network characteristics.

Link below is the Network Throughput Calculator

http://wintelguy.com/wanperf.pl

Tuning of the TCP window size is based on a number of factors, including network link speed and network latency.  For our purposes relating to PlateSpin products, the initial choice of TCP window size for tuning is based on standard calculations (widely available on the Internet and elsewhere) as follows:

WinSizeInBytes=((LINK_SPEED(Mbps)/8)*DELAY(sec))*1000*1024

For example, for a 54 Mbps link with 150 ms latency, the proper initial window size would be:

    (54/8)*0.15*1000*1024 = 1,036,800 bytes

For a 1000 Mbps link with 10 ms latency, the proper initial window size would be:

    (1000/8)*.01*1000*1024 = 1,280,000 bytes

In order to get a latency value for the network, use ping from the command prompt (Windows) or the terminal (Linux). Although the ping round-trip time (RTT) is arguably different than the actual latency, the value obtained is sufficiently close for use in this method.

Windows Command:

The following is a sample output from a Windows ping command, where the latency is observed to be 164 ms on average:

    ping 10.10.10.232 -n 5

Pinging 10.10.10.232 with 32 bytes of data:
Reply from 10.10.10.232: bytes=32 time=154ms TTL=61
Reply from 10.10.10.232: bytes=32 time=157ms TTL=61
Reply from 10.10.10.232: bytes=32 time=204ms TTL=61
Reply from 10.10.10.232: bytes=32 time=153ms TTL=61
Reply from 10.10.10.232: bytes=32 time=153ms TTL=61

Ping statistics for 10.10.10.232:
    Packets: Sent = 5, Received = 5, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 153ms, Maximum = 204ms, Average = 164ms

Linux Command:

The following is a sample output from a Linux ping command, where the latency is observed to be 319 ms on average:

    ping 10.10.10.232 -c 5

Ping 10.10.10.232 (10.10.10.232) 56(84) bytes of data.
64 bytes from 10.10.10.232: icmp_seq=1 ttl=62 time=0.328 ms
64 bytes from 10.10.10.232: icmp_seq=2 ttl=62 time=0.280 ms
64 bytes from 10.10.10.232: icmp_seq=3 ttl=62 time=0.322 ms
64 bytes from 10.10.10.232: icmp_seq=4 ttl=62 time=0.349 ms
64 bytes from 10.10.10.232: icmp_seq=5 ttl=62 time=0.316 ms

10.10.10.232 ping statistics
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.280/0.319/0.349/0.022 ms

In practice, you should use the -n or -c option to specify a larger number of ping packets in order to more closely measure the latency value.

We recommend that you increase and decrease the win_size by increments of about 10 percent of the original value.

For example, for the example of 1,280,000 bytes above, you might increase or decrease win_size in
increments of about 100,000 bytes.

The -w option of iperf allows specifying units such as K (kilobytes) or M (megabytes).

Using the same example, you could use -w values of 1.28M, 1.38M, 1.18M, and so on as the win_size in Step 4. Of course, it is assumed that only the run step is repeated for each iteration of the iPerf tool.

Sample output from an iperf client iteration looks similar to the following:

iperf.exe -c 10.10.10.232 -w 1.1M

Client connecting to 10.10.10.232, TCP port 5001
TCP window size: 1.10 MByte

[296] local 10.10.10.224 port 64667 connected with 10.10.10.232 port 5001
[ ID] Interval Transfer Bandwidth
[296] 0.0-10.2 sec 11.3 MBytes 9.29 Mbits/sec

Sample output from the referenced target server looks similar to the following:

    ./iperf -s -w .6M

Server listening on TCP port 5001
TCP window size: 1.20 MByte (WARNING: requested 614 Kbyte)

[ 4] local 10.10.10.232 port 5001 connected with 10.10.10.224 port 64667
[ 4] 0.0-10.2 sec 11.3 MBytes 9.29 Mbits/sec

Use several iterations to determine the optimal value for the TCP window size. Remember to use only 1/2 the desired value when specifying the -w option for iperf on Linux.

Increased throughput indicates that you are getting closer to an optimal TCP window size. Finally, as you get closer to an optimal value, use longer iterations in order to more closely simulate real running conditions. To achieve a longer iteration, use the -t <time_in_seconds> option to iperf. This option needs to be specified only on the client side.

For example:

    iperf.exe -c 10.10.10.232 -w 1.25M -t 60

After an optimal value has been determined, configure this value in the
FileTransferSendReceiveBufferSize parameter for the appropriate PlateSpin server at:
 
    https://<my_ps_server>/PlatespinConfiguration/

This global value applies to all workloads on the PlateSpin server, so care should be taken to group workloads and their respective networks in a sensible manner across available PlateSpin servers.