Branches are organized by version. master
contains the bleeding edge, 2.x
contains all stable changes up to the latest release of v2, and 1.x
contains
all stable changes of the first version of Recon.
- Include
erts_mmap
in snapshots to help debug memory issues (thanks to @garazdawi)
- Handle dead processes in
recon:info/2
types and edge cases - Reworking documentation structure to support
ex_doc
and fit in with hex standard
- Increase Dialyzer strictness
- Accumulate all block entries in
format_blocks
- option
io_server
can also be anatom()
in traces doc
- Fix support for extra messages in traces (thanks to Péter Gömöri)
- Fix some typespecs for match specs (thanks to @chenduo)
- Support OTP-23 change of format in allocator blocks related to carrier migration support
- Optional formatting of records in traces (thanks to @bartekgorny)
- Basic support for OTP-22 in
recon_alloc
(base handling offoreign_blocks
type)
- Optional formatting of records in traces (thanks to @bartekgorny)
- Adapting for OTP-21. Includes the 'deprecation' of
recon:files/0
since OTP-21 no longer supports listing all file descriptors, and removingerror_logger_queue_len
from node stats since a new logging mechanism was introduced in-process instead.
- fixing timefold's first iteration to prevent errors at call-site by sleeping before sampling
- fixing edoc tag that broke some downstream packaging attempts
- fixing
bin_leak
arith errors - fixes to
recon_alloc:allocators/1
(incl. R16 compatibility) - fix errors in scheduler wall time calculations
term_to_pid
supports binaries
- Allow the
return_to
option inrecon_trace
- More efficient sorting function for procs and ports attributes (thanks to @zhongwencool and @pichi)
- Allow the usage of
return_trace
inrecon_trace:calls/2-3
instead offun(_) -> return_trace() end
.
- Updated
app_deps
script to run with rebar3 dependencies - Minor docs update
- Doc made clearer around semantics of
recon:proc_count
andrecon:proc_window
. - Fix doc typos
- Fix potential race condition on waiting for death of tracing process
- Add an option which allows sending tracing output somewhere other than group_leader() (thanks @djnym)
- Add ability to pass custom formatter function when tracing (thanks @iilyak)
- Fixing type specs for
recon:port_types/0
andrecon_lib:count/1
, thanks to @lucafavatella - Minor documentation fixes.
- Adding scheduler info metrics to get a more accurate picture than what top and CPU gives.
- Broadening
recon_trace:calls/2
interface to allow multiple match specs, which was currently only allowed forcalls/3
. - Support for
mbcs_pool
data inerts_alloc
, and some internal refactoring, thanks to Lukas Larsson.
- Fixing tests for R15B02 and up
- Fixing a backwards compatibility for R15B03 on
recon_alloc
operations with dumps on disk
- Renaming
recon_trace:mfa()
type torecon_trace:tspec()
to avoid issues in older Erlang versions regarding redefining an existing type (Thanks Roberto Aloi)
- Adding
recon_trace
script to allow safe tracing of function calls on production nodes. - Adding
queue_fun.awk
script to inspect running functions of processes with large mailboxes in a crash dump.
- Preventing crashes in
recon_alloc
when certain expected allocators do not return results (Thanks to Michal Ptaszek)
- Add support for R16B03 in
recon_alloc
.
- Test suite added
- Major rewrite of
recon_alloc
, thanks to Lukas Larsson. Things that changed include:average_sizes/0
is renamedaverage_block_sizes/1
and now takes the keywordscurrent
andmax
.- Documentation updates.
memory/1
has new options inallocated_types
andallocated_instances
.memory/2
has been added, which allows to choose betweencurrent
andmax
values.memory(Term)
is made equivalent tomemory(Term, current)
.- Allow
sbcs_to_mbcs/0
to take the argumentscurrent
andmax
. - Added unit conversion function
set_unit/1
, which allows to get therecon_alloc
results in bytes (default), kilobytes, megabytes, and gigabytes, to help with readability.
- Updated the internal rebar version, if anybody were to use it.
recon:port_info/1
no longer includes theparallelism
option by default within themeta
category as this would hurt backwards compatibility on some installations.recon:get_state/2
is added in order to specify timeouts.recon:get_state/1
keeps its 5000 milliseconds timeout.- Addition of a fake attribute called
binary_memory
, which is callable inrecon:info/2,4
,recon:proc_count/2
, andrecon:proc_window/3
. This attribute allows to fetch the amount of memory used by refc binaries for a process, and to sort by that value for counts and windows.
- add
recon_alloc:snapshot*
functions, which allow memory allocation snapshots to be taken, saved on disk, reloaded, and analyzed on-demand. Thanks to Lukas Larsson for this functionality. - remove
parallelism
data fromport_info
for better OTP backwards compatibility with little loss of information.
- add
recon_lib:term_to_port
to convert a string back to a usable port. - add
recon:port_info/1
andrecon:port_info/2
- add
recon_alloc
module
add info/2
and info/4
. The memory
info type thus gets renamed
to memory_used
, in order to avoid conflicts when picking between a type
and a specific process attribute. Types exported by the module also get
updated.
- extended
app_deps.erl
to read apps/ directories for releases
- fixed bug where nodes with lots of processes could see the GC call
fail if said processes failed between long calls within the
bin_leak
function call.
- fixed bug where nodes with lots of processes or ports could see their
count or window functions fail because a process or socket closed between the
time the function started and before it finished. This ends up changing the
API in
recon_lib
for the window and count functions that take a specific pid as an argument.
- factored out some logic from
recon:info/1
intorecon_lib:term_to_pid
and allowed arbitrary terms to be used for pids inrecon:get_state/1
.