aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2016-02-02erts: Add microstate accountingLukas Larsson
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
2016-02-02erts, kernel: Add os:perf_counter functionLukas Larsson
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
2016-02-02erts: Add ERTS_WRITE_UNLIKELYLukas Larsson
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.
2016-02-02Merge branch 'maint'Rickard Green
* maint: Fix inet driver multi timers using new time API
2016-02-02Merge branch 'rickard/tcp-accept-tmo-bug/OTP-13254' into maintRickard Green
* rickard/tcp-accept-tmo-bug/OTP-13254: Fix inet driver multi timers using new time API
2016-02-02Merge branch 'maint'Rickard Green
* 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
2016-02-02Merge branch 'rickard/monotonic-time-improvements/OTP-13222' into maintRickard Green
* 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
2016-01-29Remove faulty assertsRickard Green
2016-01-27Merge branch 'maint'Lukas Larsson
* maint: erts: Fix sendfile:ing of large files on FreeBSD
2016-01-27Merge branch 'theom/freebsd-sendfile-patch-2/OTP-13271' into maintLukas Larsson
* theom/freebsd-sendfile-patch-2/OTP-13271: erts: Fix sendfile:ing of large files on FreeBSD
2016-01-27erts: Fix sendfile:ing of large files on FreeBSDJP
If the file was larger than the OS send buffer the call would fail before this patch.
2016-01-27Merge branch 'maint'Lukas Larsson
* maint: efile_drv: logic error in compressed file write
2016-01-27Merge branch 'mikpe/erts/efile-write-compressed-error/OTP-13270' into maintLukas Larsson
* mikpe/erts/efile-write-compressed-error/OTP-13270: efile_drv: logic error in compressed file write
2016-01-26Update preloaded modulesLukas Larsson
2016-01-26Merge branch 'lukas/erts/gc_info/OTP-13265'Lukas Larsson
* lukas/erts/gc_info/OTP-13265: erts: Add garbage_collection_info to process_info/2 Conflicts: erts/emulator/beam/erl_bif_info.c
2016-01-22Merge branch 'maint'Siri Hansen
2016-01-22Merge branch 'siri/document-path-flag/OTP-13060' into maintSiri Hansen
* siri/document-path-flag/OTP-13060: Add documentation of '-path' flag to 'erl'
2016-01-22Merge branch 'maint'Rickard Green
* maint: Fix HL timer hard debug implementation Fix stack alignment problem in ethread test on arm Skip time_SUITE:timestamp on timewarp test
2016-01-22Merge branch 'rickard/test-fix' into maintRickard Green
* 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
2016-01-21Fix inet driver multi timers using new time APIRickard Green
2016-01-21Introduce time management in native APIsRickard Green
2016-01-21Merge branch 'bjorn/erts/clean-up-preloaded/OTP-13112'Björn Gustavsson
* bjorn/erts/clean-up-preloaded/OTP-13112: Update preloaded modules erl_prim_loader: Rename release_archives/0 erl_prim_loader: Correct timeout handling for efile erl_prim_loader: Correct purging of the archive cache erl_prim_loader: Remove unused 'cache' field
2016-01-21Update preloaded modulesBjörn Gustavsson
2016-01-20Merge branch 'sverk/safe-purging/OTP-13122'Sverker Eriksson
2016-01-20erts: Update docs for erlang:purge_module/1Sverker Eriksson
2016-01-20erl_prim_loader: Rename release_archives/0Björn Gustavsson
Rename release_archives/0 to purge_archive_cache/0 to make it clearer what it does and what it doesn't do. Also add a comment about its intended purpose. Note that release_archives/0 is not documented and is part of the experimental archive feature. Furthermore, the only uses I could find were in the test suite. I did not find any uses in the external applications relx and rebar3 applications that are known to use archives. Therefore, I think that the increased clarity is worth the small risk of breaking code.
2016-01-20erl_prim_loader: Correct timeout handling for efileBjörn Gustavsson
The timeout routine for efile was never called. While at it, eliminate the n_timeouts field and simplify the logic.
2016-01-20erl_prim_loader: Correct purging of the archive cacheBjörn Gustavsson
prim_do_release_archives/3 can't make up its mind whether the primary archive should be released or not. The key in the process dictionary is kept, while #prim_state.primary_archive is cleared. It seems that intent was the primary archive should be preserved, because the function was intended to be called by a timeout routine every sixth minute (it is not because of a bug in setting up the timeout). Therefore, rewrite the code to preserve the primary archive and simplify it while at it. Also, rename prim_release_archives/1 to prim_purge_cache/0 to make it clearer what it is doing.
2016-01-20erl_prim_loader: Remove unused 'cache' fieldBjörn Gustavsson
The #prim_state.cache' field is unused. The actual cache is kept in the process dictionary.
2016-01-20Merge branch 'hb/stdlib/refine_abstr_types/OTP-10292'Hans Bolinder
* hb/stdlib/refine_abstr_types/OTP-10292: erts: Improve readability of The Abstract Format erts: Improve the documentation of the abstract format stdlib: Update erl_parse(3) stdlib: Refine the types of the abstract format compiler: Improve type and specs hipe: Improve types dialyzer: Improve a type doc: Update a refman example syntax_tools: Correct a type stdlib: Correct a type
2016-01-20Introduce time warp safe replacement for safe_fixed optionRickard Green
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.
2016-01-20Introduce time warp safe trace timestamp formatsRickard Green
New timestamp options for trace, sequential trace, and system profile: - monotonic_timestamp - strict_monotonic_timestamp
2016-01-20Merge branch 'maint'Rickard Green
* maint: Fix dirty scheduler check in handle_aux_work
2016-01-20Merge branch 'vinoski/check-awdp-esdp' into maintRickard Green
* vinoski/check-awdp-esdp: Fix dirty scheduler check in handle_aux_work
2016-01-20erts: Improve readability of The Abstract FormatHans Bolinder
More verbose, but hopefully more readable than before.
2016-01-20erts: Improve the documentation of the abstract formatHans Bolinder
2016-01-19Merge branch 'maint'Sverker Eriksson
2016-01-19Merge branch 'sverk/armata-memset-bug' into maintSverker Eriksson
* sverk/armata-memset-bug: erts: Workaround memset bug in test case
2016-01-19Merge branch 'sverk/safe-purging/OTP-13122'Sverker Eriksson
* 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
2016-01-19erts: Ignore unexpected messages to erts_code_purgerSverker Eriksson
2016-01-18Fix dirty scheduler check in handle_aux_workSteve Vinoski
2016-01-14Merge branch 'maint'Sverker Eriksson
2016-01-14Merge branch 'sverk/trace-doc-typo' into maintSverker Eriksson
* sverk/trace-doc-typo: erts: Correct faulty doc for erlang:trace/3
2016-01-14erts: Correct faulty doc for erlang:trace/3Sverker Eriksson
The entire MFA tuple is replaced with 0, not just Arity.
2016-01-14Add documentation of '-path' flag to 'erl'Siri Hansen
This flag replaces the path specified in the boot script. It has always existed, but was earlier only documented in SASL (script).
2016-01-14Merge branch 'maint'Rickard Green
* maint: Do not allow aux work on dirty schedulers
2016-01-14Merge branch 'vinoski/dirty-sched-no-aux-work/OTP-13236' into maintRickard Green
* vinoski/dirty-sched-no-aux-work/OTP-13236: Do not allow aux work on dirty schedulers
2016-01-13erts: Optimize erlang:check_process_codeSverker Eriksson
by ignoring literals. erts_internal:check_process_code will be called again anyway (with option {copy_literals, true}) before the module is actually purged. No need to check literals twice.
2016-01-13erts: Refactor check_process_code/3Sverker Eriksson
Move impl from erlang to erts_internal. Cut and paste.
2016-01-13erts: Make copy_literals more fail safeSverker Eriksson
* Same process must do enable-disable. * System process will force it and never get 'aborted'