<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">You can monitor processes memory usage, and get signal, when it</div><div class="">is over certain threshold with erlang:system_monitor/2 or </div><div class="">just set limit and kill process with erlang:process_flag/2</div><div class=""><br class=""></div><div class="">Even set max heap size globally with erlang:system_flag/2 for</div><div class="">all newly spawned processes with <span style="color: rgb(34, 34, 34); font-family: 'Courier New', 'Andale Mono', monospace; font-size: 13px; background-color: rgb(238, 255, 204);" class="">max_heap_size</span></div><div class=""><br class=""></div><div class="">best regards,</div><div class="">taavi</div><br class=""><div><blockquote type="cite" class=""><div class="">On 21 Nov 2016, at 20:29, Lyn Headley <<a href="mailto:lheadley@kcptech.com" class="">lheadley@kcptech.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Erlangers,<br class=""><br class="">I am looking to write a process that makes sure my node does not run<br class="">out of memory and crash. What I would like is a function F that<br class="">returns a number that represents the amount of memory my node is<br class="">using. If that number gets above a threshold T, I will kill a process<br class="">(carefully and safely, possibly after dumping its ets table to disk).<br class="">After the process exits, I would immediately call the same function F<br class="">and see whether the number it returns is now less than my threshold T.<br class="">If not, kill another process, etc.<br class=""><br class="">Can I easily write this function F? Does the 'total' number from<br class="">erlang:memory serve my needs here? In particular, will it go down<br class="">immediately after I kill a process?<br class=""><br class="">Given a carefully chosen value for threshold T, and assuming no atoms<br class="">or binaries are being allocated, (heap data and ets tables are the<br class="">main drivers of memory use), will this strategy indeed prevent my node<br class="">from crashing as long as I kill processes faster than they can grow?<br class=""><br class="">Other thoughts?<br class=""><br class="">-Lyn<br class="">_______________________________________________<br class="">erlang-questions mailing list<br class=""><a href="mailto:erlang-questions@erlang.org" class="">erlang-questions@erlang.org</a><br class="">http://erlang.org/mailman/listinfo/erlang-questions<br class=""></div></div></blockquote></div><br class=""><div class="">
<div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">—</div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">The single biggest problem in communication is the illusion that it has taken place. (George Bernard Shaw)</div></div>
</div>
<br class=""></body></html>