[asio] udp sendto performance bottleneck
Hi all,
I am porting an application from linux (suse 11) to windows. This
application is sending 75.000 UDP Pakets per second, 1416 bytes each. It
uses sendto. IOW: the application is calling sendto approx 75.000 times
per second. The GBit LAN utilization is in the 80-90% range.
This works fine under linux, but the sendto call under windows takes way
longer than under linux. The overhead is so high that throughput drops
from about 100MB/s to less than 20MB/s.
This seems to be a known problem with the windows sendto call, as cygwin
has a rather complex sendto implementation/emulation and does not suffer
from this problem. They are using WSASendMsg internally and pass
multiple buffers with one system call. WSASendMsg passes an array of
buffers to the networking stack and my impression is that it allows
sending several packets with one system call.
My question: Is it possible to send multiple udp pakets with one
asio::sendto call? asio::sendto accepts multiple buffers but seems to
combine all them into one udp paket. Is there a way to prevent that?
Specifically I want to do the following:
vector
participants (1)
-
Hajo Kirchhoff