Age | Commit message (Collapse) | Author | |
---|---|---|---|
2016-05-11 | Merge branch 'lukas/erts/max_heap_size/OTP-13174' | Lukas Larsson | |
* lukas/erts/max_heap_size/OTP-13174: erts: Fix max heap size exit when in hipe mode Update preloaded modules erts: Fix pre-bif yield current_function erts: Implement max_heap_size process flag | |||
2016-05-10 | erts: Fix max heap size exit when in hipe mode | Lukas Larsson | |
2016-05-10 | Update preloaded modules | Lukas Larsson | |
2016-05-10 | erts: Fix pre-bif yield current_function | Lukas Larsson | |
2016-05-10 | erts: Implement max_heap_size process flag | Lukas Larsson | |
The max_heap_size process flag can be used to limit the growth of a process heap by killing it before it becomes too large to handle. It is possible to set the maximum using the `erl +hmax` option, `system_flag(max_heap_size, ...)`, `spawn_opt(Fun, [{max_heap_size, ...}])` and `process_flag(max_heap_size, ...)`. It is possible to configure the behaviour of the process when the maximum heap size is reached. The process may be sent an untrappable exit signal with reason kill and/or send an error_logger message with details on the process state. A new trace event called gc_max_heap_size is also triggered for the garbage_collection trace flag when the heap grows larger than the configured size. If kill and error_logger are disabled, it is still possible to see that the maximum has been reached by doing garbage collection tracing on the process. The heap size is defined as the sum of the heap memory that the process is currently using. This includes all generational heaps, the stack, any messages that are considered to be part of the heap and any extra memory the garbage collector may need during collection. In the current implementation this means that when a process is set using on_heap message queue data mode, the messages that are in the internal message queue are counted towards this value. For off_heap, only matched messages count towards the size of the heap. For mixed, it depends on race conditions within the VM whether a message is part of the heap or not. Below is an example run of the new behaviour: Eshell V8.0 (abort with ^G) 1> f(P),P = spawn_opt(fun() -> receive ok -> ok end end, [{max_heap_size, 512}]). <0.60.0> 2> erlang:trace(P, true, [garbage_collection, procs]). 1 3> [P ! lists:duplicate(M,M) || M <- lists:seq(1,15)],ok. ok 4> =ERROR REPORT==== 26-Apr-2016::16:25:10 === Process: <0.60.0> Context: maximum heap size reached Max heap size: 512 Total heap size: 723 Kill: true Error Logger: true GC Info: [{old_heap_block_size,0}, {heap_block_size,609}, {mbuf_size,145}, {recent_size,0}, {stack_size,9}, {old_heap_size,0}, {heap_size,211}, {bin_vheap_size,0}, {bin_vheap_block_size,46422}, {bin_old_vheap_size,0}, {bin_old_vheap_block_size,46422}] flush(). Shell got {trace,<0.60.0>,gc_start, [{old_heap_block_size,0}, {heap_block_size,233}, {mbuf_size,145}, {recent_size,0}, {stack_size,9}, {old_heap_size,0}, {heap_size,211}, {bin_vheap_size,0}, {bin_vheap_block_size,46422}, {bin_old_vheap_size,0}, {bin_old_vheap_block_size,46422}]} Shell got {trace,<0.60.0>,gc_max_heap_size, [{old_heap_block_size,0}, {heap_block_size,609}, {mbuf_size,145}, {recent_size,0}, {stack_size,9}, {old_heap_size,0}, {heap_size,211}, {bin_vheap_size,0}, {bin_vheap_block_size,46422}, {bin_old_vheap_size,0}, {bin_old_vheap_block_size,46422}]} Shell got {trace,<0.60.0>,exit,killed} | |||
2016-05-09 | Merge branch 'binarin/fix-build-tool-paths/PR-1023/OTP-13562' | Lukas Larsson | |
* binarin/fix-build-tool-paths/PR-1023/OTP-13562: Fix program paths used in build process Conflicts: erts/configure.in | |||
2016-05-09 | Merge branch 'sverker/system_info-erts_mmap/OTP-13560' | Sverker Eriksson | |
2016-05-09 | Merge branch 'sverker/trace-send-receive-matchspec/OTP-13507' | Sverker Eriksson | |
2016-05-09 | erts: Remove some attributes from the abstract format doc | Hans Bolinder | |
Some wild attributes are no longer mentioned separately. | |||
2016-05-04 | erts: Add send and 'receive' to trace_info/2 | Sverker Eriksson | |
to obtain match specs | |||
2016-05-04 | erts: Fix bug in trace_pattern for 'on_load' | Sverker Eriksson | |
'on_load' is a call trace. | |||
2016-05-04 | erts: Fix missing type in doc for trace_pattern | Sverker Eriksson | |
2016-05-04 | erts: Fix PAM to be callable from non-scheduler thread | Sverker Eriksson | |
also simplified the interface to to run PAM from trace | |||
2016-05-04 | erts: Add docs for trace_pattern with 'send' and 'receive' | Sverker Eriksson | |
2016-05-04 | erts: Change receive matchspec to [NodeOrOther, Pid, Msg] | Sverker Eriksson | |
2016-05-04 | erts: Add Sender in 'receive' trace matchspec | Sverker Eriksson | |
All 'EXIT' and monitor messages are sent from 'system' Timeouts are "sent" from 'clock_service' | |||
2016-05-04 | erts: Add matchspec restrictions for 'receive' trace | Sverker Eriksson | |
and non-call-trace. This is the easy way out to avoid difficult locking scenarios when accessing tracing flags on another process. | |||
2016-05-04 | erts: Add matchspec to 'receive' trace | Sverker Eriksson | |
2016-05-04 | erts: Remove multi scheduler blocking in match specs | Sverker Eriksson | |
for enable_trace and disable_trace operations. Instead seize needed locks while updating trace flags. | |||
2016-05-04 | erts: Add match spec for send trace | Sverker Eriksson | |
2016-05-04 | erts: Rename constants in enum erts_break_op | Sverker Eriksson | |
with uppercase for constants and why not call them 'RESTART' and 'PAUSE' as the API. | |||
2016-05-04 | erts: Rename struct type | Sverker Eriksson | |
as is trips up my editor symbol tagging. | |||
2016-05-04 | erts: Beautify some code with container_of macro | Sverker Eriksson | |
2016-05-04 | erts: Add macro HAVE_ERTS_MMAP | Sverker Eriksson | |
and make erts_mmap unavailable at compile time if not supported. | |||
2016-05-04 | erts: Refactor erl_mmap.h | Sverker Eriksson | |
by (only) moving around stuff in the file. in order to make it easier to ifdef away all erts_mmap_* if not supported. | |||
2016-05-04 | Merge branch 'bjorn/fix-on_load/OTP-12593' | Björn Gustavsson | |
* bjorn/fix-on_load/OTP-12593: Update documentation regarding improvements Correctly handle multiple load attempts when on_load is pending Avoid deadlock when an on_load function makes an external call to the module itself code_server: Eliminate unnecessary Tag in handle_call/3 Reimplement -on_load() Refactor erts_finish_loading() and insert_new_code() code_SUITE: Make on_load_binary/1 clearer by using merl | |||
2016-05-04 | Merge branch 'rickard/fix-sched-sys-task/OTP-13047' | Rickard Green | |
* rickard/fix-sched-sys-task/OTP-13047: Fix scheduling of system tasks | |||
2016-05-04 | Merge branch 'rickard/reds-fix/master/OTP-13512' | Rickard Green | |
* rickard/reds-fix/master/OTP-13512: Ensure correct reduction counting | |||
2016-05-04 | Ensure correct reduction counting | Rickard Green | |
2016-05-04 | Merge branch 'lemenkov/crash_dump_while_dist_error/PR-947/OTP-13474' | Henrik Nord | |
* lemenkov/crash_dump_while_dist_error/PR-947/OTP-13474: Add patch to crash dump on large distribution | |||
2016-05-04 | Reimplement -on_load() | Björn Gustavsson | |
Load the module as old code; swap old and new code if the -on_load function succeeds. That way, a failed update attempt for a module that has an -on_load function will preserve the previous version of the code. | |||
2016-05-03 | Update preloaded modules | Björn-Egil Dahlberg | |
2016-05-03 | Merge branch 'egil/erts/gc-doc/OTP-13532' | Björn-Egil Dahlberg | |
* egil/erts/gc-doc/OTP-13532: erts: Remove forgotten atoms in erl_tracer erts: Update garbage collection trace documentation | |||
2016-05-03 | Merge branch 'egil/erts/doc-lttng-beam-tps/OTP-10282' | Björn-Egil Dahlberg | |
* egil/erts/doc-lttng-beam-tps/OTP-10282: erts: Rename LTTng tracepoint aio_pool_add to aio_pool_put erts: Change argument order for LTTng driver_stop runtime_tools: Document BEAM lttng tracepoints | |||
2016-05-03 | Merge branch 'dotsimon/gc-info-crashdump/PR-1026/OTP-13541' | Björn-Egil Dahlberg | |
* dotsimon/gc-info-crashdump/PR-1026/OTP-13541: Print heap pointers for garbing processes during crashdump | |||
2016-05-03 | Merge branch 'margnus1/llvm-corruption-fix/PR-1038/OTP-13366' | Lukas Larsson | |
* margnus1/llvm-corruption-fix/PR-1038/OTP-13366: erl_process: Restore R18 HiPE PCB offsets | |||
2016-05-03 | Merge branch 'lukas/erts/rename_xmqd_to_hmqd/OTP-13366' | Lukas Larsson | |
* lukas/erts/rename_xmqd_to_hmqd/OTP-13366: erts: Rename erl flag +xmqd to +hmqd in erlexec Fix proc_lib message_queue_data spec erts: Fix total_heap_size calculation for on_heap erts: Rename erl flag +xmqd to +hmqd | |||
2016-05-03 | Merge branch 'lukas/erts/sensitive_yield/OTP-13540' | Lukas Larsson | |
* lukas/erts/sensitive_yield/OTP-13540: Yield after setting sensitive for save_calls | |||
2016-05-03 | Merge branch 'lukas/erts/tracing/misc_fixes/OTP-13503' | Lukas Larsson | |
* lukas/erts/tracing/misc_fixes/OTP-13503: erts: Add test for new procs trace with spawn_link kernel: Remove seq_trace event order dep in tc erts: Add tests for set on link tracing erts: Expand trace tests for refc binaries erts: Remove erl_tracer with invalid state erts: Remove some dead code erts: Fix broken doc link to erl_tracer Conflicts: erts/emulator/beam/erl_trace.c | |||
2016-05-02 | erts: Remove forgotten atoms in erl_tracer | Björn-Egil Dahlberg | |
2016-05-02 | erts: Update garbage collection trace documentation | Björn-Egil Dahlberg | |
2016-05-02 | erts: Rename LTTng tracepoint aio_pool_add to aio_pool_put | Björn-Egil Dahlberg | |
* Be consistent. | |||
2016-05-02 | erts: Change argument order for LTTng driver_stop | Björn-Egil Dahlberg | |
* Be consistent. | |||
2016-05-02 | Refactor erts_finish_loading() and insert_new_code() | Björn Gustavsson | |
As a preparation for fixing some issues with -on_load(), we will integrate insert_new_code() into erts_finish_loading. Also rename insert_new_code() to stub_insert_new_code() to make it clear that it will only be used when making a stub module | |||
2016-04-29 | erts: Clarify docs for trace_pattern/3 | Sverker Eriksson | |
2016-04-29 | Merge branch 'egil/erts/tracing-support-lttng/OTP-13532' | Björn-Egil Dahlberg | |
* egil/erts/tracing-support-lttng/OTP-13532: (28 commits) runtime_tools: User's guide to LTTng and dyntrace runtime_tools: Fix Dtrace build erts: Fix gc messages in tracer_SUITE erts: Fix gc messages in sensitive_SUITE erts: Fix gc messages in trace_port_SUITE tools: Update fprof tests tools: Update fprof with new gc traces runtime_tools: Update dyntrace_lttng_SUITE tests runtime_tools: Add 'return_to' for call tracing erts: Fix return_to trace callback erts: Update erl_tracer documentation erts: Fix erl_tracer documentation typos Update preloaded erl_tracer.beam erts: Update erl_tracer type specs runtime_tools: Add lttng dyntrace tests runtime_tools: Extend 'trace' and 'enabled' tracer callbacks erts: Extend 'enabled' and 'trace' tracer callbacks runtime_tools: Extend 'enabled' tracer callbacks erts: Extend 'enabled' tracer callbacks runtime_tools: Update lttng garbage collection trace ... | |||
2016-04-29 | erts: Fix gc messages in tracer_SUITE | Björn-Egil Dahlberg | |
2016-04-29 | erts: Fix gc messages in sensitive_SUITE | Björn-Egil Dahlberg | |
2016-04-29 | erts: Fix gc messages in trace_port_SUITE | Björn-Egil Dahlberg | |
2016-04-29 | erts: Fix return_to trace callback | Björn-Egil Dahlberg | |