<div dir="ltr"><div>Thanks for your response.<br></div><div><br></div><div>I am looking for overall Heap usage stats (Available Heap (vm_memory_high_watermark), Heap Used) for RabbitMQ server functionality (excluding Management APIs, etc.,) and Garbage Collection Pause time.</div>
<div><br></div><div>I am trying to index these data into Splunk so I can do post-mortem analysis. For example, when i see a huge backup of messages (within the heap limits) in one cluster, after the messages were delivered Erlang would try to garbage collect, I would like to get visibility into pause time in this scenario. </div>
<div>Does Erlang use multiple CPUs for garbage collection? <br></div><div><br></div><div>I am sorry I know this is beyond your scope but your thoughts/learnings are much appreciated.</div></div><div class="gmail_extra"><br>
<br><div class="gmail_quote">On Fri, May 2, 2014 at 1:21 AM, Simon MacMullen <span dir="ltr"><<a href="mailto:simon@rabbitmq.com" target="_blank">simon@rabbitmq.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
These are rather general questions, so it would help a great deal if I knew what you were trying to do.<div class=""><br>
<br>
On 02/05/2014 08:54, Arun Rao wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Can someone please clarify the following:<br>
<br>
1. Memory Usage (by node) shown in Management API: Sum of<br>
total_heap_size of all registered processes (including<br>
rabbit_mgmt_agent_sup, rabbit_mgmt_sup etc.,)?<br>
</blockquote>
<br></div>
The memory use per node is that reported by erlang:memory(total). This includes all processes, registered and unregistered as well as all binaries, atoms, ETS tables, code and so on. It's supposed to correspond to how much memory is used at the OS level. Sadly in practice it doesn't take account of memory fragmentation so it can differ, but it's the closest thing Erlang gives us.<div class="">
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2. Where does virtual hosts/exchanges/queues live? Everything related to<br>
rabbitmq amqp server functionality is on "rabbit" erlang process?<br>
</blockquote>
<br></div>
No, not at all. That process is the top of the tree but there are many others. All the objects (i.e. vhosts, exchanges, queues and so on) exist as records in Mnesia / ETS tables, and queues also exist as processes.<div class="">
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
3. Has anyone had success with erlang:trace? I am trying the following<br>
but couldnt get this to work:<br>
<br>
rabbitmqctl eval<br>
'PID=erlang:whereis(rabbit),<u></u>erlang:trace(PID,gc_start,<u></u>info).'<br>
</blockquote>
<br></div>
Well, the second argument to trace/3 is a boolean, and the third is a list of flags, of which 'info' is not one. But trace/3 is very low level. You probably want to use the debugger instead?<br>
<br>
Cheers, Simon<br>
</blockquote></div><br></div>