[erlang-questions] Frequency of module reloading and the constant pool

Adam Lindberg hello@REDACTED
Tue Sep 19 11:13:14 CEST 2017


Cost wise I'm not sure, but I would advice you to benchmark for your use case.

Operations wise the most common problem you'll see with module reloads is crashed processes. Erlang only keeps two versions of a module in memory at the same time. If you have processes lingering in the old code when reloading yet another version, those processes will get killed.

Cheers,
Adam

> On 16 Sep 2017, at 23:57, Edmond Begumisa <ebegumisa@REDACTED> wrote:
> 
> On Sun, 17 Sep 2017 03:39:50 +1000, Edmond Begumisa <ebegumisa@REDACTED> wrote:
> 
>> Hello all,
>> 
>> (Not new here--just haven't posted in a while!)
>> 
>> I'm using merl to dynamically generate and regenerate modules at runtime that make use of the ERTS constant pool in order to efficiently avail data to all processes. I'm aware that this technique is known amongst more experienced Erlangers for situations where the data is updated infrequently (e.g. sharing global configuration parameters).
>> 
>> The question I'm investigating is how frequent is "infrequent" w.r.t reloading of modules[1]? I'm not entirely sure about the costs involved when (re)loading a module so I've got no idea where to start in order to measure the impact on the emulator. Could anybody with sufficient knowledge of emulator internals point me in the right direction?
>> 
> 
> To clarify: When measuring whether or not I'm hot-code swapping too frequently, what are the negative signs to look for? What does the emulator actually do when swapping out code w.r.t potentially disruptive/costly operations like locking, GC, etc which could negatively impact scheduling, memory and responsiveness of the system?
> 
> I'm trying to figure out when the best time to reload a dynamically generated module/group of modules is and how frequently I should allow reloading to occur.
> 
> - Edmond -
> 
>> Thanks in advance.
>> 
>> - Edmond -
>> 
>> [1] The more exotic use-cases for use/abuse of the constant pool and module reloading I'm looking into are to do with caching and incremental computation.
>> 
> 
> 
> -- 
> Using Opera's mail client: http://www.opera.com/mail/
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions




More information about the erlang-questions mailing list