On 2 Jul 2015 at 3:12, Andrew Hundt wrote:
I'm having difficulty with latency when running an async asio udp socket. I don't have the same problems with an identical application that uses synchronous udp. I'm communicating with a physical device which permits a maximum 5ms latency for each UDP packet, and I'm currently getting a latency of 8ms with a std dev of 0.065ms which is surprisingly precise.
You should try your code on Linux and especially FreeBSD first. OS X can be ... weird. Secondly I'd ask this on both stackoverflow and the ASIO users mailing list, as there are fewer ASIO experts here. Thirdly, try running a busy loop on a core during the tests. I usually fire up python in a command box, and run "while 1: pass". I would also add that it is well known that async i/o attracts a ~15% latency over sync i/o. If you want absolute max performance, you create a thread per socket, and let the kernel schedule you more efficiently. However creating thousands of kernel threads is unwise on 32 bit platforms, and comes with substantial demands on perfect architecture and choice and implementation of algorithms in your code and control over the target system, but if you really absolutely need minimum socket latency and you don't want to invest in a proprietary userspace networking stack, it's about the only way to go. For most demanding absolute minimum networking latency (HPC, hedge funds) they can afford a proprietary userspace networking stack. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/