[erlang-questions] Erlang proccess memory usage

Wenqiang Song wsong.cn@REDACTED
Tue May 10 05:55:04 CEST 2011


Also I tried to use proc_lib:hibernate/3 with no difference.

On Tue, May 10, 2011 at 11:50 AM, Wenqiang Song <wsong.cn@REDACTED> wrote:

> 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/4c70effe/attachment.htm>


More information about the erlang-questions mailing list