<div dir="ltr">Hello,<br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 17, 2017 at 11:38 PM, Bekes, Andras G wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">








<div lang="EN-US">
<p>
</p><div class="gmail-m_-501850641559548420WordSection1">
<p class="MsoNormal"><span style="font-family:Calibri,sans-serif;font-size:11pt">- It seems the reliable way to measure the amount of data in the message queue is setting message_queue_data process flag to off_heap beforehand (ideally at spawn time with
 spawn_opt), and retrieve the full message queue content with process_info(Pid,messages) – which must be fully scanned. Is there a better solution? (I originally aimed at refc binaries only because I just wanted a quick estimation, and in my case anything else
 was negligible.)</span><br></p></div></div></blockquote><div><br></div><div>The off_heap flag should not effect anything when you are using process_info(Pid, messages). If you want the size of the data in the message queue then there is no better option than process_info(Pid, messages).</div><div><br></div><div>Do keep in mind though, that any message queue inspection tools only show the messages that is part of what we call the internal message queue. Messages that are part of the external queue are considered to be in-transit to the process and thus not part of the message queue. In an overloaded process the majority of the messages will most likely be in the external message queue.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-US"><div class="gmail-m_-501850641559548420WordSection1"><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif">- May I suggest to improve the documentation of erlang:process_info(Pid, binary) by the below facts, also referring to message_queue_data process flag?</span></p></div></div></blockquote><div><br></div><div>Yes, good idea.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-US"><div class="gmail-m_-501850641559548420WordSection1"><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif">- Is it possible to implement a new process_info_item() of erlang:process_info/2 that gives information about binaries currently in the message queue but off-heap?<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif"><u></u></span></p></div></div></blockquote><div><br></div><div>It should be possible to do for messages with off_heap data, however for a on_heap message queue it is only easy to get the messages that ended up off-heap, the binaries of messages that are on-heap would not be part of the result. This makes the API hard to explain which is not good.</div><div><br></div><div>Also this inspection would again only be for the internal message queue.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-US"><div class="gmail-m_-501850641559548420WordSection1"><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif"> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif">- The documentation suggests using off_heap message_queue_data “if the process potentially can get many messages”, but this is rather vague. Does this refer to processes
 expected to have many *<b>queued</b>* messages? I guess a process receiving but not queuing many messages performs better with on_heap (“Performance of the actual message passing is however generally better when not using flag off_heap.”).</span></p></div></div></blockquote><div><br></div><div>yes it does. I'll try to clarify that in the documentation.</div><div><br></div><div>Lukas</div></div></div></div>