Я тестирую скорость между клиентом и хостом, используя iperf
. В моем приложении мне нужно иметь возможность отправлять 2-байтные UDP-кадры примерно на 5 кГц.Почему пакетные пакеты в UDP коррелируют с количеством пакетов и использованием полосы пропускания
Doing нормальный тест UDP скорость можно легко получить 10Mb/s:
$iperf -uVc some_ip -b 10M
Interval Transfer Bandwidth Dropped/Sent
0.0-10.0 sec 11.9 MBytes 10.0Mbit/sec 0/8504 (0%)
Когда я затем попытаться отразить мое заявление, отправив 2B на 5Гц (который соотносит 80 Кб/с) дейтаграмм:
$iperf -l 2 -uVc some_ip -b 80K
На стороне сервера указано, что пакеты не прошли, через которые я угадываю, потому что счетчик или что-то, что iperf
использует для отслеживания пакетов, не может быть помещен в полезную нагрузку 2B. Имеет ли это смысл?
Как правило, как плохо это послать много небольших пакетов против нескольких крупных? Может ли кто-нибудь указать на литературу, которая иллюстрирует компромисс между ожиданием «упаковки» большой дейтаграммы и моментальной отправки 2B данных, как только вы ее получите?
Чтобы уточнить, меня интересует штраф, который вы платите за отправку множества небольших пакетов (включая накладные расходы, пакеты составляют всего около 60 Б) по сравнению с отправкой меньших, но больших пакетов. В моих тестах до сих пор падение пакетов явно не коррелирует с использованием полосы пропускания, скорее они коррелируют с количеством пакетов, которые я нахожу контр-интуитивными!
EDIT:
Я делаю это на самом простом клиенте - настройка сервера, между двумя Linux PC, подключенных к локальной сети, в которой они являются только интерфейсы в сети с коммутатором Ethernet между ними.
Да, я понимаю, что это 2 байта плюс накладные расходы на IP/UDP, поэтому я сказал, что пакеты составляют около 60B (которые я измерил через Wireshark). Использование 'ifconfig'I может видеть, что MTU равно 1500, поэтому я не думаю, что это результат фрагментации. – CPayne
Если вы используете небольшие пакеты, каждый отдельный пакет должен обрабатываться уровнями протокола. Поскольку каждый пакет инкапсулирован и декапсулирован в приемнике. Вы просите штрафа за использование небольших пакетов. На отправляющем устройстве есть даже штраф. cpu wise that is. и каждый элемент сети также пострадает. –