<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Feb 21, 2016 at 7:53 PM, Joe Armstrong <span dir="ltr"><<a href="mailto:erlang@gmail.com" target="_blank">erlang@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":su" class="a3s" style="overflow:hidden">I'm getting about a 4 - 9 ms. inaccuracy in the time the messages is sent and<br>
the time I want it to be sent - but I'd like it to be much more accurate<br>
(sub ms if possible)<br></div></blockquote></div><br>I would start by making measurements without the network component. When you would send the gen_udp message, you take a timestamp, and analyze the skew from the suggested skew. This lets you estimate the overhead of the rest of the system in isolation from your own code and the Erlang VM.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Intuitively, 4 to 9 milliseconds is much higher than what I would expect. But note that if you sleep for, say, 40ms, you will be awoken on the 41ms flank at the earliest. This is because you are usually "inside" a millisecond when you make the call so you start by taking the ceiling of that milli-second before you.</div><div class="gmail_extra"><br></div><div class="gmail_extra">How much other work is your Erlang VM doing when you make these measurements? You are saying between 4 to 9 ms, which is variance suggesting the VM has lots of work to do at that moment. And of course such stuff will affect the running time. You can switch priority of your processes up to high, but this comes at the expense of other calculations if you can't finish your work quickly in the process with high priority.<br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">J.</div>
</div></div>