<div dir="ltr">It is complex question. You should locate who hold the memory first :)<div>Below codes might help you to locate the process / ets</div><div><br></div><div>```</div><div>applications_memory() -><br>  Â  try application:which_applications() of<br>  Â  Â  Â  Apps -><br>  Â  Â  Â  Â  Â  lists:map(<br>  Â  Â  Â  Â  Â  Â  fun({AppName, _, _}) -><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Mem = application_memory(AppName),<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {AppName, Mem}<br>  Â  Â  Â  Â  Â  Â  end, Apps)<br>  Â  catch<br>  Â  Â  Â  _:Exception -><br>  Â  Â  Â  Â  Â  error_logger:error_msg("[~p] get application memory failed ~p", [?MODULE, Exception]),<br>  Â  Â  Â  Â  Â  undefined<br>  Â  end.<br><br>application_memory(App) -><br>  Â  case Â application_controller:get_master(App) of<br>  Â  Â  Â  Master when is_pid(Master) -><br>  Â  Â  Â  Â  Â  {Root, Name} = application_master:get_child(Master),<br>  Â  Â  Â  Â  Â  {Memory, Children} = memory_info(Root),<br>  Â  Â  Â  Â  Â  {Name, Memory div 1000000, Children};<br>  Â  Â  Â  _ -><br>  Â  Â  Â  Â  Â  undefined<br>  Â  end.<br><br>memory_info(Sup) -><br>  Â  Infos = supervisor:which_children(Sup),<br>  Â  {M, E, ES} =<br>  Â  lists:foldl(<br>  Â  Â  fun({Name, PId, Type, _}, {Total, Memories, MemorySets}) -><br>  Â  Â  Â  Â  Â  Â  case Type of<br>  Â  Â  Â  Â  Â  Â  Â  Â  worker -><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {memory, Memory} = process_info(PId, memory),<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  NTotal = Total + Memory,<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  case Name of<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  undefined -><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  NMemorySets =<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  case gb_sets:size(MemorySets) of<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Size when Size > 10 -><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {_, NSets} =<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  gb_sets:take_smallest(MemorySets),<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  NSets;<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  _ -><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  MemorySets<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  end,<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  NNMemorySets = gb_sets:insert(<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {undefined, Memory, PId}, NMemorySets),<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {NTotal, Memories, NNMemorySets};<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Name -><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {NTotal, [{Name, Memory, PId}|Memories], MemorySets}<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  end;<br>  Â  Â  Â  Â  Â  Â  Â  Â  supervisor -><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {Memory, Each} = memory_info(PId),<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  NTotal = Total + Memory,<br><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {NTotal, [{Name, {Memory, Each}, PId}|Memories], MemorySets}<br>  Â  Â  Â  Â  Â  Â  end<br>  Â  Â  end, {0, [], gb_sets:new()}, Infos),<br>  Â  NE =<br>  Â  Â  Â  case E of<br>  Â  Â  Â  Â  Â  [] -><br>  Â  Â  Â  Â  Â  Â  Â  gb_sets:to_list(ES);<br>  Â  Â  Â  Â  Â  _ -><br>  Â  Â  Â  Â  Â  Â  Â  E<br>  Â  Â  Â  end,<br>  Â  NNE = lists:map(<br>  Â  Â  Â  Â  Â  Â  fun({N, Mem, PId}) -><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  case Mem of<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Mem when is_integer(Mem) -><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {N, Mem div 1000000, undefined, PId};<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {T, RestEach} -><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {N, T div 1000000, PId, RestEach}<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  end<br>  Â  Â  Â  Â  Â  Â  end, NE),<br>  Â  NNNE = lists:reverse(lists:keysort(3, NNE)),<br>  Â  {M, NNNE}.<br><br>ets_memory() -><br>  Â  All = ets:all(),<br>  Â  AllMems = lists:map(<br>  Â  Â  Â  Â  Â  Â  Â  fun(Ets) -><br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Mem = ets:info(Ets, memory),<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {Ets, Mem}<br>  Â  Â  Â  Â  Â  Â  Â  end, All),<br>  Â  Mems =<br>  Â  Â  Â  lists:sort(<br>  Â  Â  Â  Â  fun({_, M1}, {_, M2}) -><br>  Â  Â  Â  Â  Â  Â  Â  Â  M1 > M2<br>  Â  Â  Â  Â  end, AllMems),<br>  Â  Sum = lists:sum(lists:map(fun({_, Mem}) -> Mem end, AllMems)),<br>  Â  {Sum, Mems}.<br></div><div>```</div><div><div>Also I recommend  <a href="https://github.com/ferd/recon/blob/master/src/recon_alloc.erl">https://github.com/ferd/recon/blob/master/src/recon_alloc.erl</a> .</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Sep 28, 2019 at 10:03 PM <<a href="mailto:buday.gergely@uni-eszterhazy.hu">buday.gergely@uni-eszterhazy.hu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="ltr"><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr">Hi there,</div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr"><br></div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr">are there experience reports on using Erlang/Elixir on systems with 200 GB of memory and more?</div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr"><br></div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr">If you have a first-hand account on that, please share it with me.</div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr"><br></div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr">My friends are doing that and said that only C++ was capable of handling that.</div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr"><br></div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr">- Gergely</div></div></div>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature">Jack Tang<br><br><br><a href="http://www.linkedin.com/in/jacktang" target="_blank">http://www.linkedin.com/in/jacktang</a><br></div>