[erlang-questions] Max heap size

Richard A. O'Keefe ok@REDACTED
Thu Apr 28 01:27:37 CEST 2016

On 27/04/16 7:12 PM, Lukas Larsson wrote:
> https://github.com/erlang/otp/pull/1032

Where is the documentation?
    - what are the units in which 'size' is measured?
     It would be *very* nasty if a program that worked fine in a 32-bit
     environment stopped working in a 64-bit environment because the
     size was in bytes.

   - are size, kill, and error_logger the only suboptions?

   - what is the performance cost of this?
    (Presumably it gets checked only after a garbage collection,
    prior to increasing the size of a process.)

   - I get twitchy when a parameter that can result in the death of
    a process is defined as the sum of something that *is* under
    the process's control and something that is *not*, and further,
    how much of that uncontrolled stuff is counted is determined
    by yet another flag that wasn't there in 18.2.  As it is, the
    effect is that a process can be killed because *another* process
    is doing something bad.  What, if anything, can be done to
    prevent that needs to be explained.

  - Guidelines about how to choose sensible sizes would be valuable.
    No, wait. They are *indispensable*.

Of *course* this is useful, but it's starting to smell like
pthread_attr_setstacksize(), where there is *no* way, given even
complete knowledge of the intended behaviour of the code and
sensible bounds on the amount of data to be processed, that
you can determine a *safe* stack size by anything other than
experiment.  You are entirely at the mercy of the implementation,
and the C implementation has no mercy.

I'd personally be happier with something like ulimit(), where there
is a hard limit (the one where you kill the process) and a soft
limit (where you raise() an exception in the process to let it know
there's going to be a problem soon).

The garbage collector explanation we were recently told about is
a good beginning.  Memory management measures and options are
now so complex that we need a complete and exceedingly clear
chapter in the official Erlang documentation to explain them.

More information about the erlang-questions mailing list