Огромная разница в результатах netcat и iperf для канала 10G

Я смущен, увидев огромную разницу между результатами netcat и iperf. У меня есть ссылка 10 G, соединяющая мой сервер и клиент. Я получаю около 10 Гбит / с для iperf, но только ~280 МБ / с для netcat. В чем может быть ошибка?

Для Iperf

сервер

iperf -s

клиент

iperf -c 172.79.56.27 -i1 -t 10

Результат:

Client connecting to 172.79.56.27, TCP port 5001

TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 172.79.56.28 port 46058 connected with 172.79.56.27 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec  1.07 GBytes  9.23 Gbits/sec
[  3]  1.0- 2.0 sec  1.09 GBytes  9.35 Gbits/sec
[  3]  2.0- 3.0 sec  1.09 GBytes  9.35 Gbits/sec
[  3]  3.0- 4.0 sec  1.09 GBytes  9.35 Gbits/sec
[  3]  4.0- 5.0 sec  1.09 GBytes  9.36 Gbits/sec
[  3]  5.0- 6.0 sec  1.09 GBytes  9.35 Gbits/sec
[  3]  6.0- 7.0 sec  1.09 GBytes  9.36 Gbits/sec
[  3]  7.0- 8.0 sec  1.09 GBytes  9.35 Gbits/sec
[  3]  8.0- 9.0 sec  1.09 GBytes  9.36 Gbits/sec
[  3]  9.0-10.0 sec  1.09 GBytes  9.35 Gbits/sec
[  3]  0.0-10.0 sec  10.9 GBytes  9.34 Gbits/sec

Для netcat,

сервер

nc -v -v -l -n 2222 >/dev/null

клиент

time dd if=/dev/zero | nc -v -v -n 172.79.56.27 2222


Connection to 172.79.56.27 2222 port [tcp/*] succeeded!
^C6454690+0 records in
 6454690+0 records out
 3304801280 bytes (3.3 GB) copied, 11.4463 s, 289 MB/s


real    0m11.449s
user    0m6.868s
sys 0m15.372s

1 ответ

Решение

Mr user1352179,

Запустите тест netcat снова и посмотрите htop в другом окне. Бьюсь об заклад, вы увидите, что узким местом здесь является единственная нить чтения дд /dev/zero. Попробуйте запустить тест снова параллельно с 'n' экземплярами dd|netcat, где 'n' = количество ядер в вашей системе. Затем добавьте общую пропускную способность из всех параллельных прогонов, чтобы увидеть реальный результат. (Убедитесь, что вы осуществляете передачу по разным портам, а принимающая сторона также запускает несколько потоков и прослушивает несколько портов).

Другие вопросы по тегам