SkoltechSummerCamp / sandbox

0 stars 6 forks source link

Анализ iPerv 2 vs iPerf 3 #12

Open eugenemavrin opened 2 years ago

eugenemavrin commented 2 years ago

Сравнить iPerf 2 и iPerf 3:

Для анализа предлагаю взять несколько виртуальных серверов и тестировать с ними. ssh-доступ к ним получить у @eugenemavrin

Vor-Art commented 2 years ago

Evaluation

To calculate the correct estimate, I carried out each measurement 5 times, then discarded the boundary values and included the average of 3 speeds in the result.

Amsterdam

iperf3


  1. server: iperf3 -s client: iperf3 -O 2 -c amsterdam.5gst.ru -Z -P 14

    [SUM]   29.5 Mbits/sec           sender
    [SUM]   28.9 Mbits/sec           receiver
  2. client: iperf3 -O 2 -c amsterdam.5gst.ru -Z

    [ 5]    29.0 Mbits/sec           sender
    [ 5]    29.5 Mbits/sec           receiver
  3. client: iperf3 -O 2 -c amsterdam.5gst.ru -A 1/3

    [ 5]    28.9 Mbits/sec           sender
    [ 5]    29.0 Mbits/sec           receiver
  4. client: iperf3 -O 2 -c amsterdam.5gst.ru

    [ 5]    28.7 Mbits/sec           sender
    [ 5]    28.9 Mbits/sec           receiver

  5. server: iperf3 -s client: iperf3 -O 2 -c amsterdam.5gst.ru -u -b 0

    [  5]   236 Mbits/sec           sender
    [  5]   29.4 Mbits/sec          receiver
  6. client: iperf3 -O 2 -c amsterdam.5gst.ru -u -b 0 -Z

    [  5]   249 Mbits/sec           sender
    [  5]   29.4 Mbits/sec          receiver
  7. client: iperf3 -O 2 -c amsterdam.5gst.ru -u -b 0 -P 14

    [  5]   310 Mbits/sec           sender
    [  5]   29.4 Mbits/sec          receiver
  8. client: iperf3 -O 2 -c amsterdam.5gst.ru -u -b 0 -P 14 -Z

    [  5]   310 Mbits/sec           sender
    [  5]   29.4 Mbits/sec          receiver
  9. client: iperf3 -O 2 -c singapore.5gst.ru -u -b 0 -P 14 -Z -l 32k

    [  5]   310 Mbits/sec           sender
    [  5]   29.4 Mbits/sec          receiver

iperf2


  1. server: iperf -s client: iperf -c amsterdam.5gst.ru

    [SUM]   29.6 Mbits/sec           sender

  2. server: iperf -s -u client: iperf -c amsterdam.5gst.ru -u -b9G -w2m

    [  5]   307 Mbits/sec           sender
  3. client: iperf -c amsterdam.5gst.ru -u -b9G -w2m -l 35k

    [  5]   314 Mbits/sec           sender
    [  5]   63.4 Mbits/sec          receiver
Vor-Art commented 2 years ago

client: iperf3 -c amsterdam.5gst.ru -u -b0 -R

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.05  sec  1.26 GBytes  1.08 Gbits/sec  0.000 ms  0/991090 (0%)  sender
[  5]   0.00-10.00  sec  16.4 MBytes  13.7 Mbits/sec  0.047 ms  878926/891479 (99%)  receiver
Vor-Art commented 2 years ago

Как сейчас запускается клиент в приложении:

      private const val DEFAULT_COMMON_CLIENT_ARGS = "-f b -P 10 --sum-only -i 0.1 -b 120m"
      private const val DEFAULT_DOWNLOAD_CLIENT_ARGS = "-u -R"
      private const val DEFAULT_DOWNLOAD_SERVER_ARGS = "-u"
      private const val DEFAULT_UPLOAD_CLIENT_ARGS = ""
      private const val DEFAULT_UPLOAD_SERVER_ARGS = ""
      private const val DEFAULT_TIMEOUT = 1000
      private const val DEFAULT_EQUALIZER_MAX_STORING = 4
      private const val DEFAULT_EQUALIZER_DOWNLOAD_VALUES_SKIP = 0
      private const val DEFAULT_EQUALIZER_UPLOAD_VALUES_SKIP = 1
Vor-Art commented 2 years ago

Conclusion iperf3

Плюсы

Минусы

В остальном отличия минимальны.

Android :

iPerf3 and iperf2 : he.net - Network Tools (NoveMiBer 2015 by Hurricane Electric - 25 MiB) iPerf3 and iperf2 : Magic iPerf (NoveMiBer 2015 by NextDoorDeveloper - 786 KiB) iPerf3 and iperf2 : Pre-compiled iperf/iperf3 binaries for Android + Dockerfile with SDK and NDK for manual build (Source: GitHub)

Docker by Brent Salisbury

iPerf 3 for Docker (Source: GitHub)

Example:

Client: NEW IPERF3 COMMANDS
iperf3 -c remotehost -i.5 -0 2 Run the test for 2 package before collecting results, to allow for TCP slowstart to finish. (Omit mode)
iperf3 -Z -c remotehost Use the sendfile() system call for "Zero Copy" mode. This uses much less CPU on older hardware.
iperf3 -c remotehost1 -T s1 & iperf3 -c remotehost2 -T s2 Run tests to multiple interfaces at once, and label the lines to indicate which test is which
iperf3 -A 4,4 -c remotehost Set the CPU affinity for the sender,receiver (cores are numbered from 0). This has the same affect as doing 'numactl -C 4 iperf3' on both client and server.
iperf3 -c remotehost -A2,2 -T "test1" & ; iperf3 -c remotehost -p 5400 -A3,3 -T "test2" & Run 2 streams on 2 different cores, and label each using the "-T" flag.
$ iperf3 -O 3 -c hostname 

SENDER START
Connecting to host REMOTE, port 5208
[ 15] local LOCAL port 37535 connected to REMOTE port 5208
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[ 15]   0.00-1.00   sec  4.96 MBytes  41.6 Mbits/sec    0    987 KBytes       (omitted)
[ 15]   1.00-2.00   sec   332 MBytes  2786 Mbits/sec    0   65.4 MBytes       (omitted)
[ 15]   2.00-3.00   sec  1.12 GBytes  9636 Mbits/sec    0   72.1 MBytes       (omitted)
[ 15]   0.00-1.00   sec  1.12 GBytes  9657 Mbits/sec    0   72.1 MBytes       
[ 15]   1.00-2.00   sec  1.12 GBytes  9657 Mbits/sec    0   72.1 MBytes       
[ 15]   2.00-3.00   sec  1.12 GBytes  9657 Mbits/sec    0   72.1 MBytes       
[ 15]   3.00-4.00   sec  1.12 GBytes  9657 Mbits/sec    0   72.1 MBytes       
[ 15]   4.00-5.00   sec  1.12 GBytes  9657 Mbits/sec    0   72.1 MBytes       
[ 15]   5.00-6.00   sec  1.12 GBytes  9657 Mbits/sec    0   72.1 MBytes       
[ 15]   6.00-7.00   sec  1.13 GBytes  9666 Mbits/sec    0   72.1 MBytes       
[ 15]   7.00-8.00   sec  1.12 GBytes  9658 Mbits/sec    0   72.1 MBytes       
[ 15]   8.00-9.00   sec  1.12 GBytes  9657 Mbits/sec    0   72.1 MBytes       
[ 15]   9.00-10.00  sec  1.12 GBytes  9660 Mbits/sec    0   72.1 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[ 15]   0.00-10.00  sec  11.2 GBytes  9659 Mbits/sec    0             sender
[ 15]   0.00-10.00  sec  11.3 GBytes  9719 Mbits/sec                  receiver

iperf Done.

SENDER END

links:

Vor-Art commented 2 years ago

TOOL FEATURE COMPARISON

Feature iperf2.0.5 iperf2.0.13+ iperf3.7+ nuttcp 8.x
multi-threading -P -P    
JSON output     --json  
CSV output -y -y    
FQ-based pacing   --fq-rate --fq-rate  
multicast support --ttl --ttl   -m
bi-directional testing --dualtest --dualtest --bidir  
retransmit and CWND report   -e on by default -br / -bc
skip TCP slow start     --omit  
set TCP congestion control alg. -Z -Z --congestion  
zero-copy (sendfile)     --zerocopy  
UDP burst mode       -Ri#/#
Select CPU core     -A -xc#/#
MS Windows support yes yes no no

TOOL FEATURE COMPARISON

Vor-Art commented 2 years ago

Измерение на скоростях 40-100 Gbps

Vor-Art commented 2 years ago

iperf3 FAQ - много полезной информации даже по настройке клиента.