Я тестирую подключение к серверу iperf (iperf версия 2.0.13 (21 января 2019 г.) pthreads), работающему на одноплатном компьютере Bananpi M2 + (Debian, 5.1.1-BPI-Kernel # 1 SM). Для разной целевой полосы пропускания я наблюдал разную скорость отбрасывания пакетов. Количество отброшенных пакетов невелико для очень низких и очень высоких настроек целевой полосы пропускания (ниже 1%). Однако при средних значениях количество потерянных пакетов очень велико (например, 29% пакетов были потеряны на скорости 400 Мбит / с). Что могло вызвать такое поведение? (подробные результаты см. ниже). Это единственная коммуникация, которая происходит в тестовой сети (поэтому отбросы должны происходить на целевой стороне).
Я уже пытался изменить размер сокета UDP, но это не улучшило результатов.
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 3.81 MByte (WARNING: requested 1.91 MByte)
------------------------------------------------------------
[ 3] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 37950
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-10.0 sec 11.9 MBytes 10.0 Mbits/sec 0.195 ms 0/ 8504 (0%)
[ 4] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 32833
[ 4] 0.0-10.0 sec 118 MBytes 98.9 Mbits/sec 0.306 ms 571/85034 (0.67%)
[ 3] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 56833
[ 3] 0.0-10.0 sec 344 MBytes 288 Mbits/sec 0.053 ms 9951/255103 (3.9%)
[ 4] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 51751
[ 4] 0.0-10.0 sec 337 MBytes 283 Mbits/sec 0.026 ms 99684/340136 (29%)
[ 3] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 53331
[ 3] 0.0-10.0 sec 512 MBytes 429 Mbits/sec 0.018 ms 60157/425171 (14%)
[ 4] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 35110
[ 4] 0.0-10.0 sec 832 MBytes 698 Mbits/sec 0.014 ms 1860/595239 (0.31%)
[ 3] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 52002
[ 3] 0.0-10.0 sec 1.04 GBytes 897 Mbits/sec 0.013 ms 2895/765308 (0.38%)
ОБНОВИТЬ для 400 Мбит / с, когда я запускаю iperf как процесс с приоритетом по умолчанию, я получаю следующие результаты:
pi@bpi2:~$ iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 25.0 MByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 44269
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-10.0 sec 379 MBytes 318 Mbits/sec 0.030 ms 69509/340136 (20%)
[ 4] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 53115
[ 4] 0.0-10.0 sec 463 MBytes 389 Mbits/sec 0.022 ms 9715/340137 (2.9%)
[ 3] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 39077
[ 3] 0.0-10.0 sec 431 MBytes 362 Mbits/sec 0.031 ms 32537/340136 (9.6%)
[ 4] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 47676
[ 4] 0.0-10.0 sec 363 MBytes 305 Mbits/sec 0.029 ms 81019/340136 (24%)
[ 3] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 52106
[ 3] 0.0-10.0 sec 407 MBytes 341 Mbits/sec 0.030 ms 49872/340136 (15%)
когда я устанавливаю наивысший приоритет:
pi@bpi2:~$ sudo ionice -c 1 -n 0 nice -n -20 iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 25.0 MByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 59056
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-10.0 sec 460 MBytes 386 Mbits/sec 0.022 ms 11665/340137 (3.4%)
[ 4] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 54558
[ 4] 0.0-10.0 sec 450 MBytes 378 Mbits/sec 0.039 ms 18941/340137 (5.6%)
[ 3] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 34361
[ 3] 0.0-10.0 sec 437 MBytes 366 Mbits/sec 0.029 ms 28662/340137 (8.4%)
[ 4] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 47201
[ 4] 0.0-10.0 sec 474 MBytes 398 Mbits/sec 0.033 ms 1953/340136 (0.57%)
[ 3] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 34809
[ 3] 0.0-10.0 sec 442 MBytes 371 Mbits/sec 0.030 ms 24886/340136 (7.3%)
[ 4] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 54412
[ 4] 0.0-10.0 sec 429 MBytes 360 Mbits/sec 0.037 ms 34388/340138 (10%)
[ 3] local 192.168.1.11 port 5001 connected with 192.168.1.201 port 55946
[ 3] 0.0-10.0 sec 446 MBytes 374 Mbits/sec 0.034 ms 22341/340136 (6.6%)
А пока я сам нашел решение. Причиной такого странного поведения iperf было не само приложение, а неисправный драйвер для сетевой карты (скорее всего проблемы с правильной настройкой задержки GbE).
Помогла полная переустановка операционной системы и переход на Armbian 4.19 с правильным набором драйверов. Мне удалось найти решение на форуме armbian, который предоставляет действительно обширную информацию для всех, кто интересуется SoC allwinner h3 (как тот, который используется в моем BananaPi M2 +, но также и во многих других продуктах).