Age | Commit message (Collapse) | Author |
|
When the cpu ids and scheduler ids don't match,
the end schedulers could end up not being bound
when they should be.
example:
> taskset -c 1-3 erl +S 4 +sbts
> erlang:system_info(scheduler_bindings).
{1,2,3,unbound}
This fix makes it so that all cores are used to
bind schedulers.
|
|
* john/erts/runtime-lcnt:
Document rt_mask and add warnings about copy_save
Add an emulator test suite for lock counting
Break erts_debug:lock_counters/1 into separate BIFs
Allow toggling lock counting at runtime
Move lock flags to a common header
Enable register_SUITE for lcnt builds
Enable lcnt smoke test on all builds that have lcnt enabled
Make lock counter info independent of the locks being counted
OTP-14412
OTP-13170
OTP-14413
|
|
The implementation is still hidden behind ERTS_ENABLE_LOCK_COUNT, and
all categories are still enabled by default, but the actual counting can be
toggled at will.
OTP-13170
|
|
|
|
|
|
The functions have been found using: https://github.com/caolanm/callcatcher
|
|
|
|
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).
|
|
|
|
This port has support for both non-smp and smp.
It contains a new way to do io checking in which erts_poll_wait
receives the payload of the polled entity. This has implications
for all linked-in drivers.
|
|
|
|
* rickard/rg-default/OTP-10737:
Raise default reader group limit to 64
|
|
* rickard/+stbt/OTP-10668:
Add +stbt erl command line switch
|
|
|
|
|
|
|
|
|
|
The common run-queue implementation is removed since it is unused,
untested, undocumented, unsupported, and only complicates the code.
A spinlock used by the run-queue management sometimes got heavily
contended. This code has now been rewritten, and the spinlock
has been removed.
|
|
As of ERTS version 5.9 (OTP-R15B) the runtime system will by default
not bind schedulers to logical processors.
If the Erlang runtime system is the only operating system process that
binds threads to logical processors, this improves the performance of
the runtime system. However, if other operating system processes (as
for example another Erlang runtime system) also bind threads to logical
processors, there might be a performance penalty instead. In some cases
this performance penalty might be severe. Due to this, we change the
default so that the user must make an active decision in order to bind
schedulers.
|
|
All uses of the old deprecated atomic API in the runtime system
have been replaced with the use of the new atomic API. In a lot of
places this change imply a relaxation of memory barriers used.
|
|
|
|
|
|
Reader groups have been generalized to cpu groups which can be
used for implementing reader groups, but also for implementing
other functionality in the future.
|
|
|