Authors: zhongwencool (zhongwencool@gmail.com).
Observer CLI is a library to be dropped into any beam nodes, to be used to assist DevOps people diagnose problems in production nodes, included panels are:

| Proc Count | process_count/process_limit | Smp Support | smp_support |
| Port Count | port_count/port_limit | Multi Scheduling | multi_scheduling |
| Atom Count | atom_count/atom_limit | Logical Processors | logical_processors |
erl +P Number sets the maximum number of simultaneously existing processes for this system if a Number is passed as value. Valid range for Number is [1024-134217727]. The default value is 262144.erl +Q Number sets the maximum number of simultaneously existing ports for this system if a Number is passed as value. Valid range for Number is [1024-134217727]. The default value used is normally 65536. However, if the runtime system is able to determine maximum amount of file descriptors that it is allowed to open and this value is larger than 65536, the chosen value will increased to a value larger or equal to the maximum amount of file descriptors that can be opened.erl +t size sets the maximum number of atoms the virtual machine can handle. Defaults to 1,048,576.| allocated | the memory that is reserved by the VM,includes the memory used, but also the memory yet-to-be-used but still given by the OS. |
| used | the memory that is actively used for allocated Erlang data. |
| unused | the amount of memory reserved by the VM that is not being allocated. Equivalent to allocated - used. |
| Total | The total amount of memory currently allocated. |
| Process | The total amount of memory currently used by the Erlang processes. |
| Atom | The total amount of memory currently used for atoms. |
| ETS | The total amount of memory currently allocated for ETS tables. |
| Binary | The total amount of memory currently allocated for binaries. |
| Code | The total amount of memory currently allocated for Erlang code. |
| reductions | Reductions Since Last Call, The reductions of growth during the refresh interval. |
| run_queue | The total length of all normal run-queues. That is, the number of processes and ports that are ready to run on all available normal run-queues. Dirty run queues are not part of the result. |
| io | The receive/send bytes through ports of growth during the refresh interval. It's different from erlang:statistcs(io) which is the total number of bytes received/send through ports. |
| garbage_collection | The {Number_of_GCs, Words_Reclaimed} of growth during the refresh interval. It's different from erlang:statistcs(garbage_collection) which is return total value. |
| ErrorLoggerQueue | The error_logger process message queue length. it will take its sweet time to log things to disk or over the network, and will do so much more slowly than errors can be generated. |
Increments are values that are mostly useful when compared to a previous one to have an idea what they're doing, because otherwise they'd never stop increasing: bytes in and out of the node, number of garbage colelctor runs, words of memory that were garbage collected, and the global reductions count for the node.
Scheduler utilization by erlang:statistics(scheduler_wall_time):
When looking for high memory usage, for example it's interesting to be able to list all
of a node's processes and find the top N consumers. Enter m then press Enter will use the
recon:proc_count(memory, N) function, we can get:
recon:proc_count/2
and recon:proc_window/3
are to be used when you require information about processes in a larger sense:
biggest consumers of given process memory, reductions, binary, total_heap_size, message_queue_len,
either absolutely or over a sliding time window, respectively.
More detail about sliding time windows see recon:proc_window/3
When an abnormal process is found, enter the suspected process sequence(Integer) then pressEnter will use
erlang:process_info/2 to show
a lot of information available(which is safe to use in production) about processes.
erlang:register/2), it is given here.
trap_exit to true, exit signals arriving to a process are converted to
{EXIT,From,Reason} messages, which can be received as ordinary messages.
If trap_exit is set to false, the process exits if it receives an exit signal other than normal
and the exit signal is propagated to its linked processes. Application processes are normally not to trap exits.
io:format/1-3) goes.
monitor/2).
monitor/2) that are active for the process.
For a local process monitor or a remote process monitor by a process identifier.
exiting the process is done, but not fully cleared yet;
waiting the process is waiting in a receive ... end;
running self-descriptive;
runnable ready to run, but not scheduled yet because another process is running;
garbage_collecting self-descriptive;
suspended whenever it is suspended by a BIF, or as a back-pressure mechanism
because a socket or port buffer is full. The process only becomes runnable again once the port is no longer busy
total_heap_size, min_bin_vheap_size, min_heap_size, fullsweep_after, heap_size.
erlang:get_stacktrace/0.
The depth of the stacktrace is truncated according to backtrace_depth system flag setting.
Input, which is the total number of bytes received through ports, and Output, which is the total number of bytes output to ports.
TCP, UDP, SCTP) and returns the biggest Num consumers by
recon:inet_count/2 and
recon:inet_windows/3 .
Attribute name refer to inet:getstat/1.
recv_cnt + send_cnt.
recv_oct + send_oct.
Enter will use
recon:port_info/2
to show a lot of information available about port.
input the number of bytes read from the port. output the number of bytes written to the port.

allocator and returns the average block sizes being used for mbcs and sbcs. This value is interesting to use because it will tell us how large most blocks are. This can be related to the VM's largest multiblock carrier size (lmbcs) and smallest multiblock carrier size (smbcs) to specify allocation strategies regarding the carrier sizes to be used.
+MMmcs, +MMrmcbf, and +MMamcbf.
ETS tables are never garbage collected, and will maintain their memory usage as long as
records will be left undeleted in a table. Only removing records manually (or deleting the
table) will reclaim memory.
Top N list sort by memory size, all items defined in ets:info/2

Top N list sort by memory size, all items defined in mnesia:table_info/2

Generated by EDoc