[rabbitmq-discuss] Queries on processes connected to RabbitMQ node

Michael Klishin michael.s.klishin at gmail.com
Wed Jun 26 19:30:10 BST 2013

2013/6/26 Priyanki Vashi <vashi.priyanki at gmail.com>

Some of what ps presents as probably kernel threads but you should not
worry about it.

1) First thing, I wanted to tie every single node of my cluster to the
> specific CPU using linux 'taskset -c cpu -p pid' 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.
I doubt manual CPU pinning will yield better results than just relying on
the Erlang runtime scheduler to do its job.
It's probably the most advanced component of the runtime.

It is a very good idea to run Erlang R16B if you have 20 CPUs.

> 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 ?
Monitor CPU load periodically over the course of your entire test (ideally,
tens of minutes or hours).

> 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's not very clear to me what is the importance of this process
> ?
epmd is Erlang Port Mapper Daemon. It's a process Erlang nodes use to
communicate with each other. In simpler
terms, distributed Erlang features (which RabbitMQ uses) cannot operate if
epmd is not running.

You can read more about it in the docs:

> 4) Also, in rabbitmq management plugin there is a field called 'Erlang
> Processes', 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 ?
>     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 ?
>     how does it map to the processes listed below for every node. What
> happens in theory if I kill this manually. (Since I don't want to disturb
> current setup so not trying and asking in the forum)
Quite possible. Erlang processes are extremely lightweight, you can spawn a
million of them, deliver a message
to each and tear them down in less than a second on reasonably modern
hardware. So Erlang services often
have hundreds or thousands of processes, or even more. It varies depending
on the number of concurrent
connections/clients, consumers, channels, queues and so on, in other words,
your workload.

They have nothing to do with [fairly expensive in terms of resources] OS
thread or OS processes.

> 5) Lastly, is the below list covers all the processes, when rabbitmq node
> is started or I should grep on something else as well ?

epmd and beam (which is the name of the modern Erlang VM) are two key OS
processes that use kernel
threads for various purposes.

I'd suggest making sure those two function without issues, trying to kill
"inessential" OS processes or threads
will likely compromise RabbitMQ integrity.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20130626/6fbdacb9/attachment.htm>

More information about the rabbitmq-discuss mailing list