Discussion:
[asio-users] Fwd: [asio] async udp socket latency
Andrew Hundt
2015-07-02 20:25:59 UTC
Permalink
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.

I'm on Mac OS X 10.10.4 with Xcode 6.3.2 (6D2105).

Here are some of the key details about this problem:

- Sync UDP test program
- works, staying under 5ms latency 100% of the time for over an hour
- Code
- main file KukaFRIClientDataTest.cpp
<https://github.com/ahundt/grl/blob/master/test/KukaFRIClientDataTest.cpp>
- UDP socket communication class KukaFriClientData.hpp
<https://github.com/ahundt/grl/blob/master/include/grl/KukaFriClientData.hpp>
- Key lines
- calls socket.receive_from() then socket.send() at the lowest
level.
- receive_from call
<https://github.com/ahundt/grl/blob/master/include/grl/KukaFriClientData.hpp#L161>
- send call
<https://github.com/ahundt/grl/blob/master/include/grl/KukaFriClientData.hpp#L175>


- Async UDP test program
- buggy, 8ms w/ 0.065 ms std dev, continuously high latency
- Code
- main file KukaFRITest.cpp
<https://github.com/ahundt/grl/blob/master/test/KukaFRITest.cpp>
- High level wrapper class KukaFRIThreadSeparator.hpp
<https://github.com/ahundt/grl/blob/master/include/grl/KukaFRIThreadSeparator.hpp>
- Low level wrapper class KukaFRI.hpp
<https://github.com/ahundt/grl/blob/master/include/grl/KukaFRI.hpp>
.
- Key lines
- calls socket_.async_receive_from() then that handler calls
socket_.async_send_to(), which calls the final callback with the
results.
- async_receive_from call
<https://github.com/ahundt/grl/blob/master/include/grl/KukaFRI.hpp#L374>
- async_send_to_call
<https://github.com/ahundt/grl/blob/master/include/grl/KukaFRI.hpp#L432>

Does anyone have insight into why this latency issue may be occurring in
the Async UDP version? Thanks.

I originally sent this to the boost-users list and someone there mentioned
I should send it to this one.

Cheers!
Andrew Hundt

Loading...