<p>Hi Roger,</p>
<p>maybe you can use the tracing facilities of Erlang. At a low level it is reasonably easy to use erlang: trace/3 with options [send,'receive',timestamp] and get all messages from designated processes with timestamps sent to a "tracer" process. You can then do whatever analysis you need on that.</p>
<p>Best regards,<br>
Robby<br>
</p>
<div class="gmail_quote">On Apr 29, 2015 10:12 AM, "Roger Lipscombe" <<a href="mailto:roger@differentpla.net">roger@differentpla.net</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">For various reasons, I want a metric that measures how long messages<br>
spend in a process message queue. The process is a gen_server, if that<br>
has any bearing on the solution. Also, this is for production, so it<br>
will be always-on and must be low-impact.<br>
<br>
I could do this by timestamping _every_ message sent to the process<br>
and then reporting the deltas, but I think that's ugly.<br>
<br>
I thought of posting a message to self(), with a timestamp and then<br>
measuring the delta. I could then post another one as soon as that<br>
message is processed. Obviously, this leaves the process continually<br>
looping, which is not good.<br>
<br>
So, instead, I could use erlang:send_after, but that requires two<br>
messages: a delayed one triggered by erlang:send_after, and an<br>
immediate one for measuring the delay.<br>
<br>
That's a bit complicated.<br>
<br>
Would it be sensible to send a message, with erlang:send_after, with<br>
the _expected_ timestamp, and then compute the delta from that?<br>
<br>
Or, alternatively, what other ways could I measure how long a process<br>
is taking to handle its message queue?<br>
<br>
Thanks,<br>
Roger.<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div>