Open eugenemavrin opened 2 years ago
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.
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
client:
iperf3 -O 2 -c amsterdam.5gst.ru -Z
[ 5] 29.0 Mbits/sec sender [ 5] 29.5 Mbits/sec receiver
client:
iperf3 -O 2 -c amsterdam.5gst.ru -A 1/3
[ 5] 28.9 Mbits/sec sender [ 5] 29.0 Mbits/sec receiver
client:
iperf3 -O 2 -c amsterdam.5gst.ru
[ 5] 28.7 Mbits/sec sender [ 5] 28.9 Mbits/sec receiver
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
client:
iperf3 -O 2 -c amsterdam.5gst.ru -u -b 0 -Z
[ 5] 249 Mbits/sec sender [ 5] 29.4 Mbits/sec receiver
client:
iperf3 -O 2 -c amsterdam.5gst.ru -u -b 0 -P 14
[ 5] 310 Mbits/sec sender [ 5] 29.4 Mbits/sec receiver
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
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
server:
iperf -s
client:iperf -c amsterdam.5gst.ru
[SUM] 29.6 Mbits/sec sender
server:
iperf -s -u
client:iperf -c amsterdam.5gst.ru -u -b9G -w2m
[ 5] 307 Mbits/sec sender
client:
iperf -c amsterdam.5gst.ru -u -b9G -w2m -l 35k
[ 5] 314 Mbits/sec sender [ 5] 63.4 Mbits/sec receiver
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
Как сейчас запускается клиент в приложении:
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
iperf3 -s
, а вся конфигурация происходит через клиента.-O n
, который пропускает первых n
пакетов при учёте скорости. Помогает получать более репрезентативные данные, т.к. первые пакеты иногда шалят.-T str
, позволяющий добавлять префикс при выводе. Полезно при запуске нескольких тестов подряд.-Z
и -A n/m,n
, позволяющие более лучше настроить измерения для слабых железок.--sum-only
, оставляющего только итоги. Придётся немного доработать парсер.В остальном отличия минимальны.
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)
iPerf 3 for Docker (Source: GitHub)
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
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 |
iperf3 FAQ - много полезной информации даже по настройке клиента.
Сравнить iPerf 2 и iPerf 3:
Для анализа предлагаю взять несколько виртуальных серверов и тестировать с ними. ssh-доступ к ним получить у @eugenemavrin