Age | Commit message (Collapse) | Author | |
---|---|---|---|
2018-03-09 | Always use sys_memcpy/cmp/etc instead of plain memcpy/cmp/etc | John Högberg | |
2018-02-26 | Merge branch 'maint' | Lukas Larsson | |
Conflicts: erts/emulator/beam/erl_trace.c | |||
2018-02-26 | erts: Delay cleanup of removed tracer on dirty scheds | Lukas Larsson | |
It is not simple to do the correct de-allocation on a dirty schedulers, so we just delay it until this process runs on a normal scheduler. | |||
2017-09-15 | erts: Remove undocumented driver_event | Sverker Eriksson | |
2017-07-17 | erts: Replace usage of all erts_smp prefixes to just erts | Lukas Larsson | |
2017-07-17 | erts: Cleanup removal of non-smp emulators | Lukas Larsson | |
2017-07-17 | erts: Remove ERTS_SMP and USE_THREAD defines | Lukas Larsson | |
This refactor was done using the unifdef tool like this: for file in $(find erts/ -name *.[ch]); do unifdef -t -f defile -o $file $file; done where defile contained: #define ERTS_SMP 1 #define USE_THREADS 1 #define DDLL_SMP 1 #define ERTS_HAVE_SMP_EMU 1 #define SMP 1 #define ERL_BITS_REENTRANT 1 #define ERTS_USE_ASYNC_READY_Q 1 #define FDBLOCK 1 #undef ERTS_POLL_NEED_ASYNC_INTERRUPT_SUPPORT #define ERTS_POLL_ASYNC_INTERRUPT_SUPPORT 0 #define ERTS_POLL_USE_WAKEUP_PIPE 1 #define ERTS_POLL_USE_UPDATE_REQUESTS_QUEUE 1 #undef ERTS_HAVE_PLAIN_EMU #undef ERTS_SIGNAL_STATE | |||
2017-07-06 | Allow toggling lock counting at runtime | John Högberg | |
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 | |||
2017-05-04 | Update copyright year | Raimo Niskanen | |
2017-04-28 | Merge PR1413 from g-andrade/feature/phash2_nif | Sverker Eriksson | |
Support hashing terms from NIF code | |||
2017-04-22 | erts: Support custom salt in enif_hash | Guilherme Andrade | |
2017-04-11 | erts: Introduce erts_bin_release | Sverker Eriksson | |
2017-04-11 | erts: Init refc=1 in erts_bin_nrml_alloc | Sverker Eriksson | |
Only term_to_binary needed some extra attention as it used to initialize refc as 0 instead of 1. | |||
2017-01-17 | Merge branch 'maint' | Sverker Eriksson | |
2017-01-05 | erts: Fix GC tracing to use temp heap | Sverker Eriksson | |
Can't use HAlloc as it might consume part of callers 'need'. | |||
2016-10-12 | erts: Refactor find_function_from_pc to return MFA | Lukas Larsson | |
2016-10-12 | erts: Refactor out func_info into struct | Lukas Larsson | |
This commit adds two new structs to be used to represent erlang code in erts. ErtsCodeInfo is used to describe the i_func_info header that is part of all Export entries and the prelude of each function. This replaces all the BeamInstr * that were previously used to point to these locations. After this change the code should never use BeamInstr * with offsets to figure out different parts of the func_info header. ErtsCodeMFA is a struct that is used to descripe a MFA in code. It is used within ErtsCodeInfo and also in Process->current. All function that previously took Eterm * or BeamInstr * to identify a MFA now use the ErtsCodeMFA or ErtsCodeInfo where appropriate. The code has been tested to work when adding a new field to the ErtsCodeInfo struct, but some updates are needed in ops.tab to make it work. | |||
2016-09-05 | Merge branch 'lukas/erts/tracing/fix_sparc_align_issue/OTP-13803' into maint | Lukas Larsson | |
* lukas/erts/tracing/fix_sparc_align_issue/OTP-13803: erts: Immed tracer states also have to be alignable | |||
2016-08-29 | Merge branch 'rickard/ds-trace/OTP-13822' into maint | Rickard Green | |
* rickard/ds-trace/OTP-13822: Fix tracing of processes executing dirty | |||
2016-08-29 | Fix tracing of processes executing dirty | Rickard Green | |
2016-08-24 | erts: Immed tracer states also have to be alignable | Lukas Larsson | |
2016-08-12 | erts: Align ErtsThrPrgrLaterOp when free'ing tracer | Lukas Larsson | |
On Sparc all structs with a double word element in are assumed to be allocated on a two word boundary. So we have to make sure that the ErtsThrPrgrLaterOp * points to 8 / 16 byte aligned memory. As it only costs one word I've done it on all architectures in case some unknown other arch also needs this. | |||
2016-07-13 | erts: Make sure to de-allocate the old seq tracer | Lukas Larsson | |
2016-06-13 | erts: Fix profile runnable processes race | Björn-Egil Dahlberg | |
2016-05-24 | erts: Move tracer SecondTraceTerm to Opts map | Lukas Larsson | |
The extra trace data has been moved to the opts map in order for the tracer to be able to distinguish inbetween extra trace data 'undefined' and no extra trace data. In the same commit all opts associations have been changed so that if the tracer should not use them, the key is left unassicated instead of being sent to undefined. This should be give a small performance gain and also makes the API easier to work with. | |||
2016-05-11 | Merge branch 'lukas/trace-fix' | Rickard Green | |
* lukas/trace-fix: erts: Only allow remove from trace_status callback | |||
2016-05-11 | erts: Only allow remove from trace_status callback | Lukas Larsson | |
Make it so that it is only possible to remove a tracer via returning remove from an erl_tracer. This limition is put in place in order to avoid a lot of lock checking and taking in various places, especially in regards to trace events happening on dirty schedulers. | |||
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 'sverker/trace-send-receive-matchspec/OTP-13507' | 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: 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 to 'receive' trace | Sverker Eriksson | |
2016-05-04 | erts: Add match spec for send trace | Sverker Eriksson | |
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-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-04-29 | erts: Fix return_to trace callback | Björn-Egil Dahlberg | |
2016-04-29 | erts: Extend 'enabled' and 'trace' tracer callbacks | Björn-Egil Dahlberg | |
Adds the following capabilities to a tracer backend * enabled_running_procs/3 changed from enabled_running/3 * enabled_running_ports/3 * trace_running_procs/6 changed from trace_running/6 * trace_running_ports/6 | |||
2016-04-29 | erts: Extend 'enabled' tracer callbacks | Björn-Egil Dahlberg | |
Adds the following capabilities to a tracer backend * enabled_procs/3 * enabled_ports/3 * enabled_running/3 * enabled_call/3 * enabled_send/3 * enabled_receive/3 * enabled_garbage_collection/3 These functions will fall back to enabled/3 if not provided and the tracepoint is active. | |||
2016-04-29 | erts: Extend garbage collection trace | Björn-Egil Dahlberg | |
Replace 'gc_start' and 'gc_end' with * 'gc_minor_start' * 'gc_minor_end' * 'gc_major_start' * 'gc_major_end' | |||
2016-04-29 | runtime_tools: Add lttng 'call' tracing | Björn-Egil Dahlberg | |
2016-04-29 | runtime_tools: Add lttng 'procs' tracing | Björn-Egil Dahlberg | |
2016-04-26 | erts: Expand trace tests for refc binaries | Lukas Larsson | |
Make sure to cover all of the refc binary cases in tracing | |||
2016-04-26 | erts: Remove some dead code | Lukas Larsson | |
2016-04-19 | runtime_tools: Initial lttng tracing framework | Björn-Egil Dahlberg | |
2016-04-15 | erts: Make trace_delivered go via sys msg dispatcher again | Lukas Larsson | |
This is needed as otherwise messages from system_profile will not be guaranteed to arrive before trace delivered. | |||
2016-04-15 | erts: Add comment about future trace optimizations | Lukas Larsson | |
2016-04-15 | erts: Add 'spawned' trace event to 'procs' trace flag | Lukas Larsson | |
OTP-13497 This trace event is triggered when a process is created from the process that is created. | |||
2016-04-15 | erts: Extend process and port tracing | Lukas Larsson | |
This commit completes the tracing for processes so that all messages sent by a process (via nifs or otherwise) will be traced. The commit also adds tracing of all types of events from ports. When enabling tracing using erlang:trace, the 'all' flag now also enables tracing on all ports. OTP-13496 |