Age | Commit message (Collapse) | Author |
|
Allocations and message sending are now scheduled by a signal,
via a signal state bitmap, instead of doing it directly in the signal handler.
|
|
|
|
Why did I add that?
|
|
|
|
|
|
Conflicts:
erts/emulator/beam/erl_binary.h
erts/emulator/beam/erl_monitors.c
erts/emulator/beam/erl_nif.c
erts/emulator/beam/global.h
erts/emulator/test/nif_SUITE_data/nif_SUITE.c
|
|
|
|
by simply disable "delayed deselect".
|
|
to negative int as error and positive as success.
|
|
|
|
indentation and comments only
|
|
|
|
|
|
as it's not part of the API
|
|
|
|
|
|
|
|
|
|
|
|
|
|
to not inline cold reallocation code.
|
|
Make the code simpler.
May change the behavior as we may call both iready and oready
when getting an error. But doesn't that seem more correct.
|
|
|
|
|
|
Instead of passing around a file descriptor
use a function pointer to facilitate more advanced
backend write logic such as size limitation or compression.
|
|
Only x86_64 needs to reserve low virtual memory for its
amd64 small code model.
|
|
For non-amd64 it's a "normal" allocator with a
wrapper around mseg_alloc to call mprotect(PROT_EXEC).
|
|
Improve accuracy of timeouts using a premature timeout then
return to sleep with a shorter timeout just before requested
timeout. This approach is only used on certain platforms where
we know it improves the accuracy of the timeouts, e.g. MacOS X.
|
|
A fix for running 19.0-rc2 on FreeBSD with HiPE enabled.
* erl_mmap.h: disregard MAP_NORESERVE for FreeBSD
MAP_NORESERVE is undefined in FreeBSD 10.x and later.
This is to enable 64bit HiPE experimentally on FreeBSD.
Note that on FreeBSD MAP_NORESERVE was "never implemented"
even before 11.x (and the flag does not exist in /usr/src/sys/vm/mmap.c
of 10.3-STABLE r301478 either), and HiPE was working on OTP 18.3.3,
so mandating MAP_NORESERVE on FreeBSD might not be needed.
See the following message on how MAP_NORESERVE was treated on FreeBSD:
<http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20150202/122958.html>
* erl_mmap.c: disable MAP_NORESERVE for FreeBSD
* See also <https://github.com/erlang/otp/pull/925/commits/b02ce940c8738785ad018c9f758ca0d05d256bbb>
|
|
and make erts_mmap unavailable at compile time
if not supported.
|
|
by (only) moving around stuff in the file.
in order to make it easier to ifdef away
all erts_mmap_* if not supported.
|
|
will now return
[{instance,0,[{segments_size,9961472,9961472,11010048}]},
{instance,1,[{segments_size,6291456,6291456,6815744}]},
{instance,2,[{segments_size,524288,524288,786432}]},
{instance,3,[{segments_size,1048576,1048576,1835008}]},
{instance,4,[{segments_size,0,0,262144}]}]
and not just empty lists.
|
|
from {allocator,mseg_alloc} to {allocator,erts_mmap}
|
|
|
|
that uses its own super carrier (erts_exec_mmapper)
to guarantee low addressed and executable memory (PROT_EXEC).
Currently only used on x86_64 that needs low memory
for HiPE/AMD64's small code model.
By initializing erts_exec_mapper early we secure
its low memory area before erts_literal_mmapper might
steal it.
|
|
to prepare for hipe native code allocation.
|
|
Make the callbacks more general to be usable for any allocator
that that uses its own ErtsMemMapper.
|
|
Reduce main carrier size
and number of free descriptors.
|
|
* henrik/update-copyrightyear:
update copyright-year
|
|
* driver_event
* driver_flush
* driver_finish
* driver_init
* driver_output
* driver_outputv
* driver_process_exit
* driver_ready_async
* driver_ready_input
* driver_ready_output
* driver_start
* driver_stop
* driver_stop_select
* driver_timeout
|
|
|
|
* sverk/literal-alloc-polish:
erts: Add emulator flag +MIscs for literal super carrier size
erts: Refactor init of erts_literal_mmapper
erts: Make literal_alloc documented and configurable
|
|
|
|
This is mostly a pure refactoring.
Except for the buggy cases when calling erlang:halt() with a positive
integer in the range -(INT_MIN+2) to -INT_MIN that got confused with
ERTS_ABORT_EXIT, ERTS_DUMP_EXIT and ERTS_INTR_EXIT.
Outcome OLD erl_exit(n, ) NEW erts_exit(n, )
------- ------------------- -------------------------------------------
exit(Status) n = -Status <= 0 n = Status >= 0
crashdump+abort n > 0, ignore n n = ERTS_ERROR_EXIT < 0
The outcome of the old ERTS_ABORT_EXIT, ERTS_INTR_EXIT and
ERTS_DUMP_EXIT are the same as before (even though their values have
changed).
|
|
|
|
Except it cannot be disabled and cannot be multi-threaded.
The bit-vector 'erts_literal_vspace_map' on 32-bit is currently only
protected by the literal allocator mutex. We could allow multiple
instances on 64-bit (I think), but what would be the point?
|
|
Microstate accounting is a way to track which state the
different threads within ERTS are in. The main usage area
is to pin point performance bottlenecks by checking which
states the threads are in and then from there figuring out
why and where to optimize.
Since checking whether microstate accounting is on or off is
relatively expensive if done in a short loop only a few of the
states are enabled by default and more states can be enabled
through configure.
I've done some benchmarking and the overhead with it turned off
is not noticible and with it on it is a fraction of a percent.
If you enable the extra states, depending on the benchmark,
the ovehead when turned off is about 1% and when turned on
somewhere inbetween 5-15%.
OTP-12345
|
|
|
|
|
|
|