Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-04-05 | Fail when we cannot encode term in binary | Rickard Green | |
Fail when we cannot encode term in binary instead of producing a faulty result. | |||
2019-01-23 | erts: Fix type of system_logger variable | Lukas Larsson | |
2019-01-10 | erts: Add erlang:system_flag(system_logger,_) | Lukas Larsson | |
This flag allows logger and other components to set the process which log messages from ERTS are to be sent. | |||
2018-10-23 | erts: Pass thread progress data where possible | Lukas Larsson | |
The poll thread does a lot of waking up and then going back to sleep. A large part of the waking up is managing thread progress and a large part of that was using thread specific data to get the thread progress data pointer. With this refactor the tpd is passed to each of the functions which greatly decreases the number of ethr_get_tsd calls which in turn halves the CPU usage of the poller thread in certain scenarios. | |||
2018-06-18 | Update copyright year | Henrik Nord | |
2018-05-21 | Merge branch 'lukas/erts/cpu_time_thread/OTP-15090' | Lukas Larsson | |
* lukas/erts/cpu_time_thread/OTP-15090: erts: Make cpu_timestamp use per thread on Linux | |||
2018-05-16 | New process suspend implementation based on async signaling | Rickard Green | |
2018-05-15 | erts: Make cpu_timestamp use per thread on Linux | Lukas Larsson | |
If we don't use per thread the value becomes completely nonsensical on systems with more than one scheduler. We keep the old solaris behaviour in order to support the option, but it only really works when using a single scheduler. | |||
2018-04-26 | Remove error_logger process and add logger process | Siri Hansen | |
2018-04-16 | Fix seq_trace erl_tracer bug | Lukas Larsson | |
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. |