fisher
По поводу маленькими пакетами, когда на каждый пакет новое соединение согласен. Тут действительно сложность установления соединения будет сильно отрицательно влиять на производительность.
Но я хотел обсудить более общую задачу (не совсем сбор логов маленькими порциями без возможности держать открытые соединения). TCP-сессии уже есть (оверхед константный). По ним передаются данные (iperf по сути именно это и моделирует открывая нужное число сессий и передавая по ним данные).
И в пределах датацентра в этой модели получаются следующие результаты:
Один поток TCP (iperf -c *** --format k -m -p 4334 -t 10):
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 1.09 GBytes 936 Mbits/sec
50 TCP:
[SUM] 0.0-10.9 sec 1.16 GBytes 911 Mbits/sec
100 TCP:
[SUM] 0.0-11.8 sec 1.26 GBytes 917 Mbits/sec
UDP (iperf -c *** --format k -m -p 4334 -t 10 -u -b 2000M):
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-10.0 sec 890 MBytes 746 Mbits/sec 0.039 ms 0/634659 (0%)
[ 3] 0.0-10.0 sec 1 datagrams received out-of-order
На другой стороне запускалось: iperf -s -p 4334 [-u]
Больше чем 100 соединений протестировать не получилось, iperf сказал что не может создать потоки(pthread), а подкрутить ulimit на предмет памяти у меня прав не достаточно.
P.S. Наверное будет лучше выделить эту дискуссию в отдельную тему?