Tracing large binary allocations

Devon Estes devon.c.estes@REDACTED
Tue Apr 7 09:25:50 CEST 2020


Hi all,

I’m seeing some cases in my application where our off-process binary heap
allocation jumps by several orders of magnitude and then goes down right
after. I’m sure this is something that’s in our app just loading dozens of
huge binaries into memory at once and not a bug in anything underlying or a
binary leak, but finding where these allocations are happening so I can
make some changes to avoid this has so far not yielded any results. Ideally
I’d like to be able to set a trace with something like erlang:trace/3 on
some function that sends a tracer message whenever a binary over 30MB is
allocated and includes the call stack or even just the calling function
that allocated the binary in the trace message.

Going through the binary vheap and getting a list of the processes that
have references to those binaries won’t help in this case.

Is such a trace possible? Is there some flag I can set when starting my
BEAM process to give me some kind of debug output that would give me this
information? I’d imagine this is all in C, so it might be a bit tricky...

Thanks in advance for the help!

Cheers,
Devon
-- 

_________________
Devon Estes
203.559.0323
www.devonestes.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20200407/6dd87ac8/attachment.htm>


More information about the erlang-questions mailing list