Nano Hash - криптовалюты, майнинг, программирование

iperf TCP гораздо быстрее UDP, почему?

Мне интересно, почему iperf показывает гораздо лучшую производительность в TCP, чем в UDP. Этот вопрос очень похож на это один.

UDP должен быть намного быстрее, чем TCP, потому что нет подтверждения и обнаружения перегрузки. Я ищу объяснение.

UDP (807 МБит/сек)

$ iperf -u -c 127.0.0.1 -b10G
------------------------------------------------------------
Client connecting to 127.0.0.1, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 127.0.0.1 port 52064 connected with 127.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   962 MBytes   807 Mbits/sec
[  3] Sent 686377 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec   960 MBytes   805 Mbits/sec   0.004 ms 1662/686376 (0.24%)
[  3]  0.0-10.0 sec  1 datagrams received out-of-order

TCP (26,7 Гбит/с)

$ iperf -c 127.0.0.1
------------------------------------------------------------
Client connecting to 127.0.0.1, TCP port 5001
TCP window size: 2.50 MByte (default)
------------------------------------------------------------
[  3] local 127.0.0.1 port 60712 connected with 127.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  31.1 GBytes  26.7 Gbits/sec
31.10.2017

Ответы:


1

Я подозреваю, что вы используете старую версию iperf 2.0.5, которая имеет известные проблемы с производительностью UDP. Я бы предложил версию 2.0.10.

iperf -v выдаст версию

Примечание 1. Основная проблема в версии 2.0.5, связанная с этой проблемой, связана с конфликтом мьютексов между потоком клиента и потоком отчета. Общая память между этими двумя потоками была увеличена для решения этой проблемы.

Примечание 3. В версии 2.0.10 есть другие улучшения, связанные с производительностью.

Боб

01.11.2017

2

Длина дейтаграмм UDP по умолчанию составляет 1470 байт. Вероятно, вам нужно увеличить длину с помощью параметра -l. Для 26 Гбит / с я бы попробовал что-то вроде 50000 для вашего параметра -l и пошел вверх или вниз оттуда.

Вам также, вероятно, потребуется добавить пробел между вашим «-b10G», чтобы он знал, что 10G — это значение, используемое для параметра -b. Также я считаю, что заглавная буква G означает GigaBYTES. Ваша максимально достижимая пропускная способность с тестом TCP составляет 26 гигабитов, что не близко к 10 ГБ. Я бы сделал значение параметра -b равным 26g, с буквой g в нижнем регистре.

02.05.2019

3

UDP должен быть намного быстрее, чем TCP, потому что нет подтверждения и обнаружения перегрузки.

Это будет в основном зависеть от того, что вы хотите сделать. Если вам нужно передавать файлы между двумя конечными точками в Интернете, если вы вручную не реализуете надежный механизм передачи по UDP на уровне приложения, вам следует использовать TCP.

На мой взгляд, не имеет особого смысла проводить чистый тест пропускной способности UDP с помощью iPerf, поскольку, по сути, это просто приводит к тому, что iPerf пытается передать пакеты по сети как можно быстрее. Я бы предложил использовать его для создания потоков UDP с постоянной скоростью передачи данных, чтобы примерно измерить, что произойдет с трафиком UDP, таким как VoIP, в вашей сети.

05.11.2017

4

TCP помогает с различными разгрузками аппаратного обеспечения, такими как tso/gro, тогда как UDP не помогает ни одна из этих разгрузок, поскольку они не применяются к дейтаграммам udp.

02.06.2021
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..