temp_alloc needs to be enabled explicitly on OTP 22 if compiled with SMALL_MEMORY

Alexandre Rodrigues <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Message-ID <CAJyBq5rVC840WKrDqwSwddjMfv0KBZGv1oMfhN6DBigsvUymSw@mail.gmail.com>
Hi,

I am working with OTP built with SMALL_MEMORY and I noticed a behaviour
change from OTP 20 to OTP 22 (I suspect that the change actually occurs on
the transition to OTP 21 but I was not able to test it yet).

OTP 20 when compiled with SMALL_MEMORY disables the allocators (the ones
based on alloc_util I believe) including the temp_alloc. From OTP 21,
according to the official documentation of erts_alloc, the temp_alloc
should be "always enabled and cannot be disabled".


Starting the emulator (OTP 20) with "erl +Mue true" on an OTP compiled with
SMALL_MEMORY enables the allocators based on alloc_util including the
temp_alloc.


OTP 22 when compiled with SMALL_MEMORY behaves in a similar way to OTP 20,
so the alloc_util based allocators are disabled including temp_alloc.


Now the behaviour difference is that starting the emulator (OTP 22) with
"erl +Mue true" enables the allocators based on alloc_util but doesn't
enable temp_alloc. To enable the temp_alloc it's required to be explicit
and starting it like `erl +Mue true +MTe true`. I actually don't know if
it's the reporting of which allocators are enabled that is broken or if
indeed the temp_alloc that is not enabled.


Is this the expected behaviour or a bug? The immediate visible consequence
is that if I compile OTP with SMALL_MEMORY it's no longer enough to start
the emulator with "erl +Mue true" to be able to call erlang:memory(), I
need to use "erl +Mue true +MTe true".


Regards
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.