[erlang-questions] What's the difference between starting erlang vms (pure erl shell) and starting erlang nodes on the same machine?

Barco You <>
Tue Nov 15 06:18:40 CET 2011


Hi Magnus,

Thank you!

So, that's to say if we don't give the erlang shell a node name, they can't
send each other messages, right?

And if I understand you correctly, the two erlang shells have their own
schedulers and run-queues independently, and the two (OS) process could run
on the same core or on different cores simultaneously. Is it right?


Regards,
Barco

On Tue, Nov 15, 2011 at 12:14 PM, Magnus Klaar <>wrote:

> Hi!
>
> You are always starting a new erlang node when you start an erlang shell.
> What the -sname parameter does is to also enable distributed erlang on the
> node as part of the startup process. You can get the same effect by running
> net_kernel:start([bar, shortnames]). and net_kernel:start([foo,
> shortnames]). in the shells of two unnamed node (shells as you called them).
>
> You can verify that two unnamed erlang nodes are indeed two separate (OS)
> processes running independently by starting two using "erl" and searching
> for beam.smp in a process list viewer of your choosing.
>
> / Magnus
>
> On Tue, Nov 15, 2011 at 3:45 AM, Barco You <> wrote:
>
>> Dear Erlangers,
>>
>>
>> When I start two erl shells on the same machine, I got one shell with pid
>> <0.30.0> and the other one with <0.32.0>, and if I send a message on the
>> first shell:" list_to_pid("<0.32.0>") ! hello.", the second shell got
>> nothing by calling "flush()" on it.
>>
>> However, we can still send messages between shells on the same machine by
>> starting them as nodes:
>> >erl -sname bar -setcookie barco
>>            >erl -sname foo -setcookie barco
>> Eshell V5.8.4  (abort with ^G)
>>               Eshell V5.8.4  (abort with ^G)
>> ()5> register(bar,self()).
>>              ()1> {'',bar} ! "hello bar!".
>> true
>>                          "hello bar!"
>> ()6> flush().
>> Shell got "hello bar!"
>> ok
>>
>> I hope to know the difference between the twos ways of starting erlang
>> shell. Can two shells (not as nodes) send each other messages? Will the two
>> erlang VMs (I assume one VM for one shell) share the same
>> schedulers/run-queues on every core or each one has its own
>> schedulers/run-queues on every core? and what about the VMs for nodes?
>>
>> Any insight would be appreciated.
>>
>>
>> Best regards,
>> Barco
>>
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20111115/7b315793/attachment.html>


More information about the erlang-questions mailing list