-module(beam_stats_state).
-include("include/beam_stats.hrl").
+-include("include/beam_stats_process.hrl").
+-include("include/beam_stats_processes.hrl").
-export_type(
[ t/0
-record(snapshots,
{ memory :: [{atom(), non_neg_integer()}]
+ , processes :: beam_stats_processes:t()
, run_queue :: non_neg_integer()
+ , ets :: beam_stats_ets:t()
}).
-type snapshots() ::
t().
new(#totals{}=TotalsPrevious) ->
?T
- { timestamp = os:timestamp()
- , node_id = erlang:node()
+ { timestamp = beam_stats_source:os_timestamp()
+ , node_id = beam_stats_source:erlang_node()
, snapshots = snapshots_new()
, deltas = deltas_new()
, totals_previous = TotalsPrevious
, snapshots =
#snapshots
{ memory = Memory
+ , processes = Processes
, run_queue = RunQueue
+ , ets = ETS
}
, deltas =
#deltas
, context_switches = CurrentContextSwitches - PreviousContextSwitches
, reductions = Reductions
, run_queue = RunQueue
+ , ets = ETS
+ , processes = Processes
}.
snapshots_new() ->
#snapshots
- { memory = erlang:memory()
- , run_queue = erlang:statistics(run_queue)
+ { memory = beam_stats_source:erlang_memory()
+ , processes = beam_stats_processes:collect()
+ , run_queue = beam_stats_source:erlang_statistics(run_queue)
+ , ets = beam_stats_ets:collect()
}.
deltas_new() ->
- {_ReductionsTotal, ReductionsDelta} = erlang:statistics(reductions),
+ {_ReductionsTotal, ReductionsDelta} = beam_stats_source:erlang_statistics(reductions),
#deltas
{ reductions = ReductionsDelta
}.
totals_new() ->
{ {input , IOBytesIn}
, {output , IOBytesOut}
- } = erlang:statistics(io),
- {ContextSwitches, 0} = erlang:statistics(context_switches),
+ } = beam_stats_source:erlang_statistics(io),
+ {ContextSwitches, 0} = beam_stats_source:erlang_statistics(context_switches),
#totals
{ io_bytes_in = IOBytesIn
, io_bytes_out = IOBytesOut