[erlang-questions] Memory consuption: what is 'system' an how to compact

Danil Zagoskin z@REDACTED
Tue Jul 22 13:02:54 CEST 2014


Our application has allocated over 11 GB of memory and I don't understand

The application contains:
 - HTTPS server using old mochiweb and OTP SSL
 - interfaces to internal services using lhttpc
 - caches using ETS

First problem: over 11 GB is allocated but only 5 GB are used:
> erlang:memory().

I understand that 50% allocator usage ratio is subject to changing
allocation strategy.

Question: Are there any tips on choosing one apart of "try and see what

Second problem: as you can see above, system consumes 3.2 GB when atom,
binary, code, ets sum up to less than 1 GB.

Question: Where did 2.5 GB go? Earlier (R16B+) this application could run
for weeks with half (13K) of current (28K) connection count and use less
than 2 GB. The most significant change about memory is a small binary kept
in each worker's dictionary.

Third problem:
MBCSs = [proplists:get_value(mbcs_usage, Info) || {{binary_alloc,_}, Info}
<- recon_alloc:fragmentation(current)], lists:sum(MBCSs)/length(MBCSs).

Question: is there a way to reallocate long-living binaries without
changing the code so that they don't hold this much memory?
Question: How can I list binaries in single carrier? I want to see contents
and referencing pids.
Question: Given an entry from process_info(Pid, binary) like
this: {139767104723144,19,1} how can I see carrier ID and contents of this

I have recon_alloc snapshot and can send it if needed.

Danil Zagoskin | z@REDACTED
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20140722/124a1b3b/attachment.htm>

More information about the erlang-questions mailing list