Age | Commit message (Collapse) | Author |
|
LONG_LIVED is not thread safe on non-smp and
can only be used by scheduler.
|
|
|
|
|
|
|
|
perf counter is now part of the function pointer interface
and also the function returns the value instead of writing
to a memory buffer.
|
|
|
|
|
|
|
|
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
|
|
The perf_counter is a very very cheap and high resolution timer
that can be used to timestamp system events. It does not have
monoticity guarantees, but should on most OS's expose a monotonous
time.
A special instruction has been created for this counter to further
speed up fetching it.
OTP-12908
|
|
ERTS_WRITE_UNLIKELY can be used to place global variables in
a specific section where only data that is very rarely modified
sits. This is used to improve cache locality.
|
|
* maint:
Fix inet driver multi timers using new time API
|
|
* rickard/tcp-accept-tmo-bug/OTP-13254:
Fix inet driver multi timers using new time API
|
|
* maint:
Introduce time management in native APIs
Introduce time warp safe replacement for safe_fixed option
Introduce time warp safe trace timestamp formats
Conflicts:
erts/emulator/beam/erl_bif_trace.c
erts/emulator/beam/erl_driver.h
erts/emulator/beam/erl_nif.h
erts/emulator/beam/erl_trace.c
erts/preloaded/ebin/erlang.beam
|
|
* rickard/monotonic-time-improvements/OTP-13222:
Introduce time management in native APIs
Introduce time warp safe replacement for safe_fixed option
Introduce time warp safe trace timestamp formats
|
|
- replace system-specific #ifndef around sigaction() override with a test
for OVERRIDE_SIGACTION, #define or #undef that as appropriate in each
system-specific block
|
|
- move extern declarations of LIBC_SIGACTION() from system-specific
blocks to the common LIBC_SIGACTION block
|
|
- rename __next_sigaction to next_sigaction, to avoid defining _-prefixed symbols
- factor out common code for declaring and initializing next_sigaction,
system-specific code now only needs to #define NEXT_SIGACTION
|
|
- rename __SIGACTION to LIBC_SIGACTION, to avoid defining _-prefixed symbols
|
|
- add block for NetBSD, define dummy INIT() macro
- eliminate ifndef NetBSD around INIT() invocation
|
|
- remove glibc < 2.3 code
- move glibc-2.2 comment to glibc >= 2.3 block
- remove obsolete "only supports" comment
- remove support for broken sigaltstack() in pre-2.4 Linux kernels
|
|
|
|
|
|
Line table was left uninitialized for hipe (stub) modules
causing process_info(OtherPid, current_location) to crash.
|
|
|
|
* maint:
erts: Fix sendfile:ing of large files on FreeBSD
|
|
* theom/freebsd-sendfile-patch-2/OTP-13271:
erts: Fix sendfile:ing of large files on FreeBSD
|
|
If the file was larger than the OS send buffer the call
would fail before this patch.
|
|
* maint:
efile_drv: logic error in compressed file write
|
|
* mikpe/erts/efile-write-compressed-error/OTP-13270:
efile_drv: logic error in compressed file write
|
|
* lukas/erts/gc_info/OTP-13265:
erts: Add garbage_collection_info to process_info/2
Conflicts:
erts/emulator/beam/erl_bif_info.c
|
|
|
|
* maint:
Fix HL timer hard debug implementation
Fix stack alignment problem in ethread test on arm
Skip time_SUITE:timestamp on timewarp test
|
|
* rickard/test-fix:
Fix HL timer hard debug implementation
Fix stack alignment problem in ethread test on arm
Skip time_SUITE:timestamp on timewarp test
|
|
|
|
|
|
Assert thread unsafe allocator is only created on non-smp
and only called by the main thread.
Removed test of unsafe allocator in custom thread.
|
|
|
|
|
|
The new time warp safe option is safe_fixed_monotonic_time which
gives erlang:monotonic_time().
The safe_fixed option was also slightly changed. It now gives
erlang:timestamp() instead of erlang:now(). This has however
not been documented, so it is considered a compatible change.
The above effects both ets, and dets.
This commit also include the bugfix OTP-13239 for
dets:info(Tab, safe_fixed). The timestamp in the result returned
by dets:info(Tab, safe_fixed) was unintentionally broken as a
result of the time API rewrites in OTP 18.0.
|
|
New timestamp options for trace, sequential trace, and
system profile:
- monotonic_timestamp
- strict_monotonic_timestamp
|
|
* maint:
Fix dirty scheduler check in handle_aux_work
|
|
* vinoski/check-awdp-esdp:
Fix dirty scheduler check in handle_aux_work
|
|
|
|
* sverk/armata-memset-bug:
erts: Workaround memset bug in test case
|
|
* sverk/safe-purging/OTP-13122:
erts: Ignore unexpected messages to erts_code_purger
erts: Optimize erlang:check_process_code
erts: Refactor check_process_code/3
erts: Make copy_literals more fail safe
erts: Move copy_literals/2 from erlang to erts_internal
erts: Make erlang:purge_module/1 safe
erts: Refactor code:purge/1 and code:soft_purge/1
erts: Introduce erts_code_purger
|
|
|
|
Must re-read 'state' after seizing proc locks as other thread may
have set EXITING.
|
|
* maint:
Do not allow aux work on dirty schedulers
|
|
* vinoski/dirty-sched-no-aux-work/OTP-13236:
Do not allow aux work on dirty schedulers
|