Тестирование платы HiFive Unleashed с ядром Linux 5.2.9

PDF

Тесты выполнялись в локальной сети 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, поскольку в этом случае влияние верхних уровней стека протоколов существенно меньше.

Запись опубликована в рубрике Linux, RISC-V, Измерения и тестирование. Добавьте в закладки постоянную ссылку.