<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2013/6/26 Priyanki Vashi <span dir="ltr">&lt;<a href="mailto:vashi.priyanki@gmail.com" target="_blank">vashi.priyanki@gmail.com</a>&gt;</span></div><div class="gmail_quote">

<br></div><div class="gmail_quote">Some of what ps presents as probably kernel threads but you should not worry about it.</div><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div id=":8di" style="overflow:hidden">1) First thing, I wanted to tie every single node of my cluster to the specific CPU using linux &#39;taskset -c cpu -p pid&#39; command. I have total of 20 cpus so this how I want to control resources to understand how it scales with respect to CPU and what load every CPU would be under when I do stress testing with multiple producer and consumer.<br>

<br></div></blockquote><div><br></div><div>I doubt manual CPU pinning will yield better results than just relying on the Erlang runtime scheduler to do its job.</div><div>It&#39;s probably the most advanced component of the runtime.</div>

<div><br></div><div>It is a very good idea to run Erlang R16B if you have 20 CPUs.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div id=":8di" style="overflow:hidden">2) Secondly I am also interested to measure the load on each CPU as a part of stress testings. So what is the suitable method to measure CPU load. I googled on this on internet and found either by using script or manually reading %cpu for every processes and addind them together to get total utilization of CPU. Is this correct way one can understand CPU utilization or ? <br>

<br></div></blockquote><div><br></div><div>Monitor CPU load periodically over the course of your entire test (ideally, tens of minutes or hours).</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div id=":8di" style="overflow:hidden">3) Third thing was, Is the epmd -daemon is the First parent process, which is in the end of the list and probably started when I started my very first node. Though I am not sure since I did not track processes after every node starting. It&#39;s not very clear to me what is the importance of this process ? <br>

<br></div></blockquote><div><br></div><div>epmd is Erlang Port Mapper Daemon. It&#39;s a process Erlang nodes use to communicate with each other. In simpler</div><div>terms, distributed Erlang features (which RabbitMQ uses) cannot operate if epmd is not running.</div>

<div><br></div><div>You can read more about it in the docs:</div><div><a href="http://www.erlang.org/doc/man/epmd.html">http://www.erlang.org/doc/man/epmd.html</a><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div id=":8di" style="overflow:hidden">4) Also, in rabbitmq management plugin there is a field called &#39;Erlang Processes&#39;, which shows numbers in the range of 120-130 for every node of my cluster. Is this really the number of Erlang process started by every node ?<br>

    Even if there is no messages sent and received, this is the number. Will it increase with increase on load while running multiple producer and consumer ? <br>    how does it map to the processes listed below for every node. What happens in theory if I kill this manually. (Since I don&#39;t want to disturb current setup so not trying and asking in the forum)<br>

<br></div></blockquote><div><br></div><div>Quite possible. Erlang processes are extremely lightweight, you can spawn a million of them, deliver a message</div><div>to each and tear them down in less than a second on reasonably modern hardware. So Erlang services often</div>

<div>have hundreds or thousands of processes, or even more. It varies depending on the number of concurrent</div><div>connections/clients, consumers, channels, queues and so on, in other words, your workload.</div><div><br>

</div><div>They have nothing to do with [fairly expensive in terms of resources] OS thread or OS processes.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div id=":8di" style="overflow:hidden">5) Lastly, is the below list covers all the processes, when rabbitmq node is started or I should grep on something else as well ? </div></blockquote></div><br>epmd and beam (which is the name of the modern Erlang VM) are two key OS processes that use kernel</div>

<div class="gmail_extra">threads for various purposes.</div><div class="gmail_extra"><br></div><div class="gmail_extra">I&#39;d suggest making sure those two function without issues, trying to kill &quot;inessential&quot; OS processes or threads</div>

<div class="gmail_extra">will likely compromise RabbitMQ integrity.<br>-- <br>MK<br><br><a href="http://github.com/michaelklishin" target="_blank">http://github.com/michaelklishin</a><br><a href="http://twitter.com/michaelklishin" target="_blank">http://twitter.com/michaelklishin</a><br>


</div></div>