Тесты выполнялись в локальной сети Gigabit Ethernet без сторонней нагрузки. Устройства были подключены к одному коммутатору D-Link. Управление платой HiFive Unleashed выполнялось по протоколу SSH. На плате была установлена ОС Linux с ядром версии 5.2.9, собранным специально для этой платы.
Измерение производительности с помощью iperf3
Тесты выполнялись при установленных по умолчанию параметрах сетевых интерфейсов, показанных ниже.
Хост HiFive
root@freedom-u540:~# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Link detected: yes
Хост x86_64
[root@Lhotze ~]# ethtool enp4s0 Settings for enp4s0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: Symmetric Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on MDI-X: off (auto) Supports Wake-on: pumbg Wake-on: g Current message level: 0x00000007 (7) drv probe link Link detected: yes
Из приведенного вывода видно, что оба интерфейса работают в полнодуплексном режиме со скоростью линии 1000 Мбит/с.
Далее были выполнены два теста, в одном из которых хост HiFive выступал в качестве клиента, в другом был сервером. Скорость определялась с помощью программы iperf3 с принятыми по умолчанию параметрами (протокол TCP, скорость передачи не ограничена.
Клиент HiFive
Вывод клиента
root@freedom-u540:~# iperf3 -c 192.168.0.10
Connecting to host 192.168.0.10, port 5201
[ 5] local 192.168.0.3 port 46756 connected to 192.168.0.10 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.02 sec 15.1 MBytes 124 Mbits/sec 0 148 KBytes
[ 5] 1.02-2.03 sec 15.0 MBytes 125 Mbits/sec 0 157 KBytes
[ 5] 2.03-3.03 sec 15.0 MBytes 126 Mbits/sec 0 164 KBytes
[ 5] 3.03-4.04 sec 15.2 MBytes 126 Mbits/sec 0 181 KBytes
[ 5] 4.04-5.03 sec 15.0 MBytes 127 Mbits/sec 0 181 KBytes
[ 5] 5.03-6.01 sec 15.0 MBytes 128 Mbits/sec 0 181 KBytes
[ 5] 6.01-7.07 sec 16.2 MBytes 129 Mbits/sec 0 230 KBytes
[ 5] 7.07-8.06 sec 15.0 MBytes 127 Mbits/sec 0 230 KBytes
[ 5] 8.06-9.04 sec 15.0 MBytes 128 Mbits/sec 0 230 KBytes
[ 5] 9.04-10.03 sec 15.0 MBytes 127 Mbits/sec 0 230 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.03 sec 152 MBytes 127 Mbits/sec 0 sender
[ 5] 0.00-10.04 sec 152 MBytes 127 Mbits/sec receiver
iperf Done.
Вывод сервера
[root@Lhotze src]# iperf3 -s ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 192.168.0.3, port 46754 [ 5] local 192.168.0.10 port 5201 connected to 192.168.0.3 port 46756 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 14.6 MBytes 123 Mbits/sec [ 5] 1.00-2.00 sec 14.9 MBytes 125 Mbits/sec [ 5] 2.00-3.00 sec 15.0 MBytes 126 Mbits/sec [ 5] 3.00-4.00 sec 15.1 MBytes 126 Mbits/sec [ 5] 4.00-5.00 sec 15.2 MBytes 127 Mbits/sec [ 5] 5.00-6.00 sec 15.3 MBytes 129 Mbits/sec [ 5] 6.00-7.00 sec 15.3 MBytes 129 Mbits/sec [ 5] 7.00-8.00 sec 15.1 MBytes 127 Mbits/sec [ 5] 8.00-9.00 sec 15.3 MBytes 128 Mbits/sec [ 5] 9.00-10.00 sec 15.1 MBytes 127 Mbits/sec [ 5] 10.00-10.04 sec 665 KBytes 128 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-10.04 sec 152 MBytes 127 Mbits/sec receiver -----------------------------------------------------------
Результат показывает среднюю скорость обмена через сеть 127 Мбит/с, что составляет лишь 12,7% от номинальной скорости линии. Вариации скорости в процессе измерения невелики, а объем переданных данных составил 152 Мбайта, что позволяет считать результат измерения достаточно достоверным.
Для выяснения причин столь малой скорости меняем роли участвующих в тесте хостов – HiFive становится сервером, а x86_64 – клиентом.
Сервер HiFive
Вывод сервера
root@freedom-u540:~# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.0.10, port 55746
[ 5] local 192.168.0.3 port 5201 connected to 192.168.0.10 port 55748
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 26.2 MBytes 220 Mbits/sec
[ 5] 1.00-2.00 sec 25.9 MBytes 217 Mbits/sec
[ 5] 2.00-3.00 sec 25.6 MBytes 215 Mbits/sec
[ 5] 3.00-4.00 sec 26.2 MBytes 220 Mbits/sec
[ 5] 4.00-5.00 sec 25.9 MBytes 217 Mbits/sec
[ 5] 5.00-6.00 sec 29.8 MBytes 250 Mbits/sec
[ 5] 6.00-7.00 sec 28.5 MBytes 240 Mbits/sec
[ 5] 7.00-8.00 sec 25.8 MBytes 216 Mbits/sec
[ 5] 8.00-9.00 sec 26.1 MBytes 219 Mbits/sec
[ 5] 9.00-10.00 sec 25.8 MBytes 217 Mbits/sec
[ 5] 10.00-10.02 sec 580 KBytes 259 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.02 sec 266 MBytes 223 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Вывод клиента
[root@Lhotze src]# iperf3 -c 192.168.0.3 Connecting to host 192.168.0.3, port 5201 [ 5] local 192.168.0.10 port 55748 connected to 192.168.0.3 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 28.9 MBytes 242 Mbits/sec 27 527 KBytes [ 5] 1.00-2.00 sec 26.2 MBytes 220 Mbits/sec 0 595 KBytes [ 5] 2.00-3.00 sec 26.2 MBytes 220 Mbits/sec 0 645 KBytes [ 5] 3.00-4.00 sec 26.2 MBytes 220 Mbits/sec 1 485 KBytes [ 5] 4.00-5.00 sec 25.0 MBytes 210 Mbits/sec 0 522 KBytes [ 5] 5.00-6.00 sec 30.0 MBytes 252 Mbits/sec 0 563 KBytes [ 5] 6.00-7.00 sec 28.8 MBytes 241 Mbits/sec 0 601 KBytes [ 5] 7.00-8.00 sec 26.2 MBytes 220 Mbits/sec 0 634 KBytes [ 5] 8.00-9.00 sec 25.0 MBytes 210 Mbits/sec 1 471 KBytes [ 5] 9.00-10.00 sec 26.2 MBytes 220 Mbits/sec 0 542 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 269 MBytes 226 Mbits/sec 29 sender [ 5] 0.00-10.02 sec 266 MBytes 223 Mbits/sec receiver iperf Done.
В этом случае скорость получается почти вдвое выше, но все равно составляет лишь 22,3% от номинальной. Однако при внимательном рассмотрении вывода видно, что используемое отправителем (клиент) окно контроля насыщения TCP (правый столбец вывода на стороне клиента – Cwnd) существенно отличалось. Клиент HiFive задавал cwnd от 148 до 230 кбайт, а клиент x86_64 – от 471 до 645 кбайт. Это наводит на мысль о том, что скорость, определяемая iperf3 ограничивалась не на физическом или канальном уровне, а на транспортном (TCP). Отметим это и двинемся дальше.
Зависимость от физических параметров интерфейсов
Устанавливаем на сервере HiFive скорость сетевого интерфейса 100 и 10 Мбит,с и повторяем тесты. Параметры интерфейса на клиенте не изменяются.
Вывод сервера
root@freedom-u540:~# ethtool -s eth0 speed 100 autoneg off
root@freedom-u540:~# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.0.10, port 38296
[ 5] local 192.168.0.3 port 5201 connected to 192.168.0.10 port 38298
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 5.72 MBytes 48.0 Mbits/sec
[ 5] 1.00-2.00 sec 8.22 MBytes 68.9 Mbits/sec
[ 5] 2.00-3.00 sec 7.27 MBytes 61.0 Mbits/sec
[ 5] 3.00-4.00 sec 7.28 MBytes 61.1 Mbits/sec
[ 5] 4.00-5.00 sec 8.61 MBytes 72.1 Mbits/sec
[ 5] 5.00-6.00 sec 8.09 MBytes 67.9 Mbits/sec
[ 5] 6.00-7.00 sec 8.16 MBytes 68.4 Mbits/sec
[ 5] 7.00-8.00 sec 7.27 MBytes 61.0 Mbits/sec
[ 5] 8.00-9.00 sec 7.32 MBytes 61.2 Mbits/sec
[ 5] 9.00-10.00 sec 8.92 MBytes 75.0 Mbits/sec
[ 5] 10.00-10.00 sec 31.1 KBytes 78.1 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 76.9 MBytes 64.5 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Вывод клиента
[root@Lhotze src]# iperf3 -c 192.168.0.3 Connecting to host 192.168.0.3, port 5201 [ 5] local 192.168.0.10 port 38298 connected to 192.168.0.3 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 6.79 MBytes 56.9 Mbits/sec 0 267 KBytes [ 5] 1.00-2.00 sec 9.64 MBytes 80.9 Mbits/sec 0 494 KBytes [ 5] 2.00-3.00 sec 7.26 MBytes 60.9 Mbits/sec 0 494 KBytes [ 5] 3.00-4.00 sec 6.90 MBytes 57.9 Mbits/sec 0 494 KBytes [ 5] 4.00-5.00 sec 8.26 MBytes 69.3 Mbits/sec 0 494 KBytes [ 5] 5.00-6.00 sec 9.13 MBytes 76.6 Mbits/sec 0 494 KBytes [ 5] 6.00-7.00 sec 8.02 MBytes 67.2 Mbits/sec 0 494 KBytes [ 5] 7.00-8.00 sec 6.96 MBytes 58.4 Mbits/sec 0 494 KBytes [ 5] 8.00-9.00 sec 6.52 MBytes 54.7 Mbits/sec 0 494 KBytes [ 5] 9.00-10.00 sec 9.26 MBytes 77.7 Mbits/sec 0 494 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 78.7 MBytes 66.1 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 76.9 MBytes 64.5 Mbits/sec receiver iperf Done.
При работе сетевого интерфейса на сервере HiFive со скоростью 100 Мбит/с средняя скорость обмена составила 64,5 Мбит/с или 64,5% от номинальной скорости более медленного интерфейса. Размер окна cwnd при этом в течение 9 из 10 интервалов измерения был постоянным (494 кбайта) и лишь в первом интервале составил 267 кбайт.
Устанавливаем на интерфейсе сервера HiFive скорость 10 Мбит/с и повторяем тест.
Вывод сервера
root@freedom-u540:~# ethtool -s eth0 speed 10 autoneg off
root@freedom-u540:~# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.0.10, port 38330
[ 5] local 192.168.0.3 port 5201 connected to 192.168.0.10 port 38332
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 546 KBytes 4.47 Mbits/sec
[ 5] 1.00-2.00 sec 785 KBytes 6.42 Mbits/sec
[ 5] 2.00-3.00 sec 993 KBytes 8.13 Mbits/sec
[ 5] 3.00-4.00 sec 998 KBytes 8.17 Mbits/sec
[ 5] 4.00-5.00 sec 998 KBytes 8.18 Mbits/sec
[ 5] 5.00-6.00 sec 993 KBytes 8.13 Mbits/sec
[ 5] 6.00-7.00 sec 1001 KBytes 8.20 Mbits/sec
[ 5] 7.00-8.00 sec 994 KBytes 8.14 Mbits/sec
[ 5] 8.00-9.00 sec 996 KBytes 8.15 Mbits/sec
[ 5] 9.00-10.00 sec 1003 KBytes 8.22 Mbits/sec
[ 5] 10.00-10.01 sec 7.07 KBytes 7.71 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.01 sec 9.09 MBytes 7.62 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Вывод клиента
[root@Lhotze src]# iperf3 -c 192.168.0.3 Connecting to host 192.168.0.3, port 5201 [ 5] local 192.168.0.10 port 38332 connected to 192.168.0.3 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 730 KBytes 5.98 Mbits/sec 0 41.0 KBytes [ 5] 1.00-2.00 sec 840 KBytes 6.88 Mbits/sec 0 65.0 KBytes [ 5] 2.00-3.00 sec 1.09 MBytes 9.18 Mbits/sec 0 65.0 KBytes [ 5] 3.00-4.00 sec 902 KBytes 7.39 Mbits/sec 0 65.0 KBytes [ 5] 4.00-5.00 sec 1.09 MBytes 9.18 Mbits/sec 0 65.0 KBytes [ 5] 5.00-6.00 sec 933 KBytes 7.65 Mbits/sec 0 65.0 KBytes [ 5] 6.00-7.00 sec 933 KBytes 7.65 Mbits/sec 0 65.0 KBytes [ 5] 7.00-8.00 sec 933 KBytes 7.65 Mbits/sec 0 65.0 KBytes [ 5] 8.00-9.00 sec 1.09 MBytes 9.18 Mbits/sec 0 65.0 KBytes [ 5] 9.00-10.00 sec 933 KBytes 7.64 Mbits/sec 0 65.0 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 9.34 MBytes 7.84 Mbits/sec 0 sender [ 5] 0.00-10.01 sec 9.09 MBytes 7.62 Mbits/sec receiver iperf Done.
В этом случае скорость обмена составила 7,62 Мбит/с или 72,6% от номинальной скорости более медленного интерфейса. Окно насыщения во всех интервалах измерения кроме первого имело размер 65 кбайт, а в первом интервале – 41 кбайт.
Из приведенного выше вывода очевидно, что во всех вариантах теста скорость обмена по сети была существенно ниже номинальной скорости линии, определяемой более медленным интерфейсом. Особенно сильно это проявлялось при скорости 1000 Мбит/с.
Далее были выполнены измерения с помощью программы iperf на клиенте HiFive (сервером служила программа iperf3) на скорости интерфейса 10, 100 и 1000 Мбит/с с заданием в каждом случае максимальной скорости передачи клиента (опция -b) в соответствии с номинальной скоростью линии.
1000 Мбит/с
root@freedom-u540:~# iperf -p 5201 -b 1G -c 192.168.0.10
------------------------------------------------------------
Client connecting to 192.168.0.10, TCP port 5201
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.3 port 46780 connected with 192.168.0.10 port 5201
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 222 MBytes 186 Mbits/sec
100 Мбит/с
root@freedom-u540:~# ethtool -s eth0 speed 100 autoneg off
root@freedom-u540:~# iperf -p 5201 -b 100M -c 192.168.0.10
------------------------------------------------------------
Client connecting to 192.168.0.10, TCP port 5201
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.3 port 46782 connected with 192.168.0.10 port 5201
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 52.4 MBytes 43.9 Mbits/sec
10 Мбит/с
root@freedom-u540:~# ethtool -s eth0 speed 10 autoneg off
root@freedom-u540:~# iperf -p 5201 -b 10M -c 192.168.0.10
------------------------------------------------------------
Client connecting to 192.168.0.10, TCP port 5201
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.3 port 46786 connected with 192.168.0.10 port 5201
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 9.00 MBytes 7.54 Mbits/sec
И снова, как в случае iperf3 измеренная скорость существенно ниже номинальной скорости линии, а относительная скорость растет при снижении скорости более медленного интерфейса
После этого была восстановлена скорость 1000 Мбит/с на интерфейсе хоста HiFive и менялась скорость интерфейса на сервере (100 и 10 Мбит/с), при этом клиенту iperf на хосте HiFive задавалась полная скорость (1000 Мбит/с)
Сервер 100 Мбит/с
------------------------------------------------------------
Client connecting to 192.168.0.10, TCP port 5201
TCP window size: 102 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.3 port 46788 connected with 192.168.0.10 port 5201
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 42.5 MBytes 35.6 Mbits/sec
Сервер 10 Мбит/с
root@freedom-u540:~# iperf -p 5201 -b 1G -c 192.168.0.10 ------------------------------------------------------------ Client connecting to 192.168.0.10, TCP port 5201 TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.0.3 port 46790 connected with 192.168.0.10 port 5201 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.1 sec 4.50 MBytes 3.73 Mbits/sec
Скорость обмена через сеть в обоих случаях не достигала и 40% от номинальной скорости линии у клиента.
Зависимость от скорости передачи на стороне клиента
Далее была восстановлены принятые по умолчанию настройки обоих сетевых интерфейсов (полнодуплексный режим, 1000 Мбит/с) и менялась скорость передачи пакетов на уровне клиента HiFive. Напомним, что по умолчанию iperf3 для тестов TCP использует полную скорость линии.
Приводится вывод лишь клиентской стороны, поскольку он более информативен.
Скорость передачи на стороне клиента 1000 Мбит/с
root@freedom-u540:~# iperf3 -c 192.168.0.10 -b 1000M
Connecting to host 192.168.0.10, port 5201
[ 5] local 192.168.0.3 port 56086 connected to 192.168.0.10 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 16.4 MBytes 137 Mbits/sec 0 158 KBytes
[ 5] 1.00-2.00 sec 16.4 MBytes 137 Mbits/sec 0 158 KBytes
[ 5] 2.00-3.01 sec 16.6 MBytes 139 Mbits/sec 0 158 KBytes
[ 5] 3.01-4.00 sec 16.2 MBytes 137 Mbits/sec 0 158 KBytes
[ 5] 4.00-5.00 sec 16.4 MBytes 137 Mbits/sec 0 167 KBytes
[ 5] 5.00-6.01 sec 16.5 MBytes 138 Mbits/sec 0 167 KBytes
[ 5] 6.01-7.00 sec 16.4 MBytes 138 Mbits/sec 0 167 KBytes
[ 5] 7.00-8.00 sec 16.5 MBytes 139 Mbits/sec 0 167 KBytes
[ 5] 8.00-9.00 sec 16.4 MBytes 137 Mbits/sec 0 167 KBytes
[ 5] 9.00-10.00 sec 16.5 MBytes 139 Mbits/sec 0 167 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 164 MBytes 138 Mbits/sec 0 sender
[ 5] 0.00-10.01 sec 164 MBytes 138 Mbits/sec receiver
iperf Done.
Постепенное снижение скорости передачи на клиенте от 1000 до 140 Мбит/с давало близкие результаты со средней скоростью обмена чуть меньше 140 Мбит/с. Однако при скорости передачи клиента меньше 140 Мбит/с средняя скорость обмена между клиентом уже совпадала со скоростью передачи.
Скорость передачи на стороне клиента 140 Мбит/с
root@freedom-u540:~# iperf3 -c 192.168.0.10 -b 140M
Connecting to host 192.168.0.10, port 5201
[ 5] local 192.168.0.3 port 56110 connected to 192.168.0.10 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 16.5 MBytes 138 Mbits/sec 0 153 KBytes
[ 5] 1.00-2.00 sec 16.5 MBytes 138 Mbits/sec 0 168 KBytes
[ 5] 2.00-3.00 sec 16.4 MBytes 138 Mbits/sec 0 177 KBytes
[ 5] 3.00-4.01 sec 16.5 MBytes 138 Mbits/sec 0 177 KBytes
[ 5] 4.01-5.00 sec 16.2 MBytes 137 Mbits/sec 0 177 KBytes
[ 5] 5.00-6.00 sec 16.4 MBytes 137 Mbits/sec 0 177 KBytes
[ 5] 6.00-7.00 sec 16.4 MBytes 137 Mbits/sec 0 177 KBytes
[ 5] 7.00-8.01 sec 16.5 MBytes 138 Mbits/sec 0 177 KBytes
[ 5] 8.01-9.00 sec 16.1 MBytes 136 Mbits/sec 0 177 KBytes
[ 5] 9.00-10.01 sec 16.4 MBytes 137 Mbits/sec 0 177 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 164 MBytes 137 Mbits/sec 0 sender
[ 5] 0.00-10.01 sec 164 MBytes 137 Mbits/sec receiver
iperf Done.
Скорость передачи на стороне клиента 130 Мбит/с
root@freedom-u540:~# iperf3 -c 192.168.0.10 -b 130M
Connecting to host 192.168.0.10, port 5201
[ 5] local 192.168.0.3 port 56114 connected to 192.168.0.10 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 15.5 MBytes 130 Mbits/sec 0 158 KBytes
[ 5] 1.00-2.00 sec 15.5 MBytes 130 Mbits/sec 0 158 KBytes
[ 5] 2.00-3.00 sec 15.5 MBytes 130 Mbits/sec 0 158 KBytes
[ 5] 3.00-4.00 sec 15.5 MBytes 130 Mbits/sec 0 167 KBytes
[ 5] 4.00-5.00 sec 15.5 MBytes 130 Mbits/sec 0 167 KBytes
[ 5] 5.00-6.00 sec 15.5 MBytes 130 Mbits/sec 0 167 KBytes
[ 5] 6.00-7.00 sec 15.5 MBytes 130 Mbits/sec 0 167 KBytes
[ 5] 7.00-8.00 sec 15.5 MBytes 130 Mbits/sec 0 167 KBytes
[ 5] 8.00-9.00 sec 15.5 MBytes 130 Mbits/sec 0 167 KBytes
[ 5] 9.00-10.00 sec 15.5 MBytes 130 Mbits/sec 0 167 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 155 MBytes 130 Mbits/sec 0 sender
[ 5] 0.00-10.01 sec 155 MBytes 130 Mbits/sec receiver
iperf Done.
Скорость передачи на стороне клиента 100 Мбит/с
root@freedom-u540:~# iperf3 -c 192.168.0.10 -b 100M
Connecting to host 192.168.0.10, port 5201
[ 5] local 192.168.0.3 port 56126 connected to 192.168.0.10 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 12.0 MBytes 100 Mbits/sec 0 151 KBytes
[ 5] 1.00-2.00 sec 11.9 MBytes 99.9 Mbits/sec 0 151 KBytes
[ 5] 2.00-3.01 sec 12.0 MBytes 100 Mbits/sec 0 151 KBytes
[ 5] 3.01-4.00 sec 11.9 MBytes 100 Mbits/sec 0 151 KBytes
[ 5] 4.00-5.00 sec 11.9 MBytes 99.6 Mbits/sec 0 151 KBytes
[ 5] 5.00-6.01 sec 12.0 MBytes 100 Mbits/sec 0 151 KBytes
[ 5] 6.01-7.00 sec 11.9 MBytes 100 Mbits/sec 0 151 KBytes
[ 5] 7.00-8.01 sec 12.0 MBytes 100 Mbits/sec 0 151 KBytes
[ 5] 8.01-9.00 sec 11.9 MBytes 99.9 Mbits/sec 0 151 KBytes
[ 5] 9.00-10.00 sec 11.9 MBytes 99.7 Mbits/sec 0 151 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 119 MBytes 100 Mbits/sec 0 sender
[ 5] 0.00-10.01 sec 119 MBytes 99.9 Mbits/sec receiver
iperf Done.
Скорость передачи на стороне клиента 50 Мбит/с
root@freedom-u540:~# iperf3 -c 192.168.0.10 -b 50M Connecting to host 192.168.0.10, port 5201 [ 5] local 192.168.0.3 port 56130 connected to 192.168.0.10 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 5.98 MBytes 50.1 Mbits/sec 0 130 KBytes [ 5] 1.00-2.00 sec 6.00 MBytes 50.3 Mbits/sec 0 130 KBytes [ 5] 2.00-3.00 sec 6.00 MBytes 50.2 Mbits/sec 0 130 KBytes [ 5] 3.00-4.00 sec 5.88 MBytes 49.5 Mbits/sec 0 130 KBytes [ 5] 4.00-5.00 sec 6.00 MBytes 50.3 Mbits/sec 0 130 KBytes [ 5] 5.00-6.00 sec 6.00 MBytes 50.2 Mbits/sec 0 130 KBytes [ 5] 6.00-7.00 sec 5.88 MBytes 49.4 Mbits/sec 0 130 KBytes [ 5] 7.00-8.00 sec 6.00 MBytes 50.3 Mbits/sec 0 130 KBytes [ 5] 8.00-9.01 sec 6.00 MBytes 50.1 Mbits/sec 0 130 KBytes [ 5] 9.01-10.00 sec 5.88 MBytes 49.5 Mbits/sec 0 130 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 59.6 MBytes 50.0 Mbits/sec 0 sender [ 5] 0.00-10.01 sec 59.6 MBytes 50.0 Mbits/sec receiver iperf Done.
Скорость передачи на стороне клиента 10 Мбит/с
root@freedom-u540:~# iperf3 -c 192.168.0.10 -b 10M
Connecting to host 192.168.0.10, port 5201
[ 5] local 192.168.0.3 port 56134 connected to 192.168.0.10 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.25 MBytes 10.5 Mbits/sec 0 72.1 KBytes
[ 5] 1.00-2.00 sec 1.25 MBytes 10.5 Mbits/sec 0 123 KBytes
[ 5] 2.00-3.00 sec 1.12 MBytes 9.44 Mbits/sec 0 130 KBytes
[ 5] 3.00-4.00 sec 1.25 MBytes 10.5 Mbits/sec 0 130 KBytes
[ 5] 4.00-5.00 sec 1.12 MBytes 9.44 Mbits/sec 0 130 KBytes
[ 5] 5.00-6.00 sec 1.25 MBytes 10.5 Mbits/sec 0 130 KBytes
[ 5] 6.00-7.00 sec 1.12 MBytes 9.44 Mbits/sec 0 130 KBytes
[ 5] 7.00-8.00 sec 1.25 MBytes 10.5 Mbits/sec 0 130 KBytes
[ 5] 8.00-9.00 sec 1.12 MBytes 9.44 Mbits/sec 0 130 KBytes
[ 5] 9.00-10.00 sec 1.25 MBytes 10.5 Mbits/sec 0 130 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 12.0 MBytes 10.1 Mbits/sec 0 sender
[ 5] 0.00-10.01 sec 12.0 MBytes 10.1 Mbits/sec receiver
iperf Done.
Аналогичные тесты в обратном направлении дали похожий результат. При скоростях от 1000 Мбит/с до средней скорости, которая обеспечивалась при отсутствии ограничений, скорость сетевого обмена практически не менялась и была ниже скорости передачи, установленной для клиента, а после достижения этого порога скорость обмена между клиентом и сервером в точности совпадала со скоростью передачи, заданной на клиентской стороне.
Это позволяет с уверенностью считать, что результаты измерения скорости обмена по протоколу TCP определяются прежде всего параметрами TCP, а не физическими параметрами интерфейсов хостов и производительностью процессоров. Асимметрия скорости (при смене ролей клиента и сервера) объясняется разными настройками протокола TCP на двух хостах.
Дополнительные измерения
Заключительным был эксперимент по измерению скорости с помощью iperf3 через Internet, когда между сервером и клиентом присутствовало неопределенное число маршрутизаторов. На сервере пропускная способность ограничена значением 100 Мбит/с.
Вывод клиента
root@freedom-u540:~# iperf3 -c protokols.ru Connecting to host nmalykh.org, port 5201 [ 5] local 192.168.0.3 port 44460 connected to 185.147.80.144 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 12.6 MBytes 106 Mbits/sec 45 355 KBytes [ 5] 1.00-2.01 sec 11.5 MBytes 95.6 Mbits/sec 0 412 KBytes [ 5] 2.01-3.00 sec 10.8 MBytes 91.2 Mbits/sec 5 320 KBytes [ 5] 3.00-4.00 sec 11.4 MBytes 95.8 Mbits/sec 0 345 KBytes [ 5] 4.00-5.00 sec 11.8 MBytes 98.9 Mbits/sec 0 362 KBytes [ 5] 5.00-6.00 sec 10.9 MBytes 91.7 Mbits/sec 0 384 KBytes [ 5] 6.00-7.00 sec 11.5 MBytes 96.3 Mbits/sec 0 406 KBytes [ 5] 7.00-8.00 sec 11.5 MBytes 96.3 Mbits/sec 0 427 KBytes [ 5] 8.00-9.00 sec 11.1 MBytes 93.2 Mbits/sec 8 342 KBytes [ 5] 9.00-10.00 sec 11.5 MBytes 96.9 Mbits/sec 0 384 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 115 MBytes 96.2 Mbits/sec 58 sender [ 5] 0.00-10.00 sec 114 MBytes 95.3 Mbits/sec receiver iperf Done.
Вывод сервера
[root@nmalykh nmalykh]# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 91.122.87.84, port 44458
[ 5] local 185.147.80.144 port 5201 connected to 91.122.87.84 port 44460
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-1.00 sec 11.1 MBytes 93.0 Mbits/sec
[ 5] 1.00-2.00 sec 11.4 MBytes 95.4 Mbits/sec
[ 5] 2.00-3.00 sec 11.4 MBytes 95.4 Mbits/sec
[ 5] 3.00-4.00 sec 11.4 MBytes 95.4 Mbits/sec
[ 5] 4.00-5.00 sec 11.4 MBytes 95.4 Mbits/sec
[ 5] 5.00-6.00 sec 11.4 MBytes 95.4 Mbits/sec
[ 5] 6.00-7.00 sec 11.4 MBytes 95.4 Mbits/sec
[ 5] 7.00-8.00 sec 11.4 MBytes 95.4 Mbits/sec
[ 5] 8.00-9.00 sec 11.4 MBytes 95.4 Mbits/sec
[ 5] 9.00-10.00 sec 11.4 MBytes 95.4 Mbits/sec
[ 5] 10.00-10.01 sec 142 KBytes 94.3 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-10.01 sec 0.00 Bytes 0.00 bits/sec sender
[ 5] 0.00-10.01 sec 114 MBytes 95.2 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Здесь скорость обмена практически явно ограничивалась на уровнях 3 и 4 модели OSI (механизм ограничения пропускной способности на хосте protokols.ru точно не известен), поэтому скорость обмена фактически совпадала с номинальной скоростью линии.
Для сравнения ниже представлен результат измерения скорости обмена между двумя хостами с одной операционной системой (Mageia 7.1) в той же ЛВС. На обоих хостах сетевые интерфейсы использовали принятые по умолчанию параметры. Результаты измерений в том и другом направлении практически не отличались, поэтому приведен лишь вывод на стороне клиента для одного из направлений.
[root@Lhotze ~]# iperf3 -c 192.168.0.6 Connecting to host 192.168.0.6, port 5201 [ 5] local 192.168.0.10 port 54170 connected to 192.168.0.6 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 107 MBytes 895 Mbits/sec 0 696 KBytes [ 5] 1.00-2.00 sec 104 MBytes 870 Mbits/sec 0 769 KBytes [ 5] 2.00-3.00 sec 105 MBytes 881 Mbits/sec 0 850 KBytes [ 5] 3.00-4.00 sec 104 MBytes 870 Mbits/sec 0 935 KBytes [ 5] 4.00-5.00 sec 104 MBytes 870 Mbits/sec 0 984 KBytes [ 5] 5.00-6.00 sec 104 MBytes 870 Mbits/sec 0 984 KBytes [ 5] 6.00-7.00 sec 104 MBytes 870 Mbits/sec 0 1.01 MBytes [ 5] 7.00-8.00 sec 104 MBytes 870 Mbits/sec 0 1.01 MBytes [ 5] 8.00-9.00 sec 104 MBytes 870 Mbits/sec 0 1.01 MBytes [ 5] 9.00-10.00 sec 104 MBytes 870 Mbits/sec 0 1.01 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.02 GBytes 874 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 1.01 GBytes 872 Mbits/sec receiver iperf Done.
Заключение
Приведенные результаты позволяют с достаточной уверенностью считать, что измерения с помощью утилиты iperf3 при использовании принятого по умолчанию протокола TCP отражают не столько возможности и параметры физического интерфейса и драйвера, сколько параметры управления потоком данных протокола TCP. Поскольку мы пытаемся разобраться с возможностями и ограничениями процессоров Freedom U540 и сетевой подсистемы платы HiFive Unleashed, важнее разобраться с уровнями 1 – 2 эталонной модели OSI без влияния настроек вышележащих уровней. Для оценки реализации нижних уровней сетевого стека TCP/IP измерения, на которые определяющее влияние оказывает управление потоком данных на транспортном уровне, практической ценности не представляют, поэтому далее мы перейдем к измерениям на основе протокола UDP, поскольку в этом случае влияние верхних уровней стека протоколов существенно меньше.