[erlang-questions] Erlang proccess memory usage
Wenqiang Song
wsong.cn@REDACTED
Tue May 10 05:50:28 CEST 2011
Hi,
I'm experimenting with Erlang process and found something that not
expected.
What I do is creating 1M Erlang processes and measure memory usage. Code is
as follow:
-module(generator).
-export([start/0, generator/2, loop/0]).
start() ->
Pid = self(),
spawn( fun()->generator(19,Pid) end ),
count (1).
count (Num) ->
receive
add ->
% io:format("Oopss, ~n"),
if
0 =:= ( Num rem 10000 ) -> io:format("Count ~p~n", [Num]);
true -> Q = 3
end,
count (Num + 1);
_ ->
io:format("haha, ~n")
after 30000 ->
io:format("Count ~p~n", [Num]),
count (Num)
end.
loop() ->
receive
_ ->
io:format("Oops ~n"),
% proc_lib:hibernate(?MODULE, loop(), [])
loop()
end.
generator( 0, Pid ) ->
Pid ! add,
% proc_lib:hibernate(?MODULE, loop(), []);
loop();
generator( Depth, Pid ) ->
spawn( fun()->generator(Depth - 1, Pid) end),
spawn( fun()->generator(Depth - 1, Pid) end),
Pid ! add,
% io:format("Depth: ~p, pid: ~p~n", [Depth, Pid]),
% proc_lib:hibernate(?MODULE, loop(), []).
loop().
===============End of Code=============
2> i(0,58,0).
[{current_function,{generator,loop,0}},
{initial_call,{erlang,apply,2}},
{status,waiting},
{message_queue_len,0},
{messages,[]},
{links,[]},
{dictionary,[]},
{trap_exit,false},
{error_handler,error_handler},
{priority,normal},
{group_leader,<0.25.0>},
{total_heap_size,233},
{heap_size,233},
{stack_size,1},
{reductions,9},
{garbage_collection,[{min_bin_vheap_size,46368},
{min_heap_size,233},
{fullsweep_after,65535},
{minor_gcs,0}]},
{suspending,[]}]
3> memory().
[{total,2759895784},
{processes,2751081712},
{processes_used,2751067504},
{system,8814072},
{atom,615121},
{atom_used,589205},
{binary,8608},
{code,5845747},
{ets,270928}]
Total memory usage is about 2.7G. While when I use i() and i(pid) I saw that
each process only uses about 233 bytes. I can't find where the memory is
used. Any idea?
Thanks
Andy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20110510/e821aa77/attachment.htm>
More information about the erlang-questions
mailing list