feat: aggregate ETS per-table data, by table name
[beam_stats.git] / src / beam_stats_ets_table.erl
CommitLineData
a8d431d1
SK
1-module(beam_stats_ets_table).
2
3-include("include/beam_stats_ets_table.hrl").
4
5-export_type(
6 [ t/0
7 , id/0
8 ]).
9
10-export(
11 [ of_id/1
a8d431d1
SK
12 ]).
13
14-type id() ::
15 atom()
16 | ets:tid()
17 % integer() is just a workaround, to let us mock ets:tid(), which is
18 % opaque, but represented as an integer, without Dialyzer complaining.
19 | integer()
20 .
21
22-type t() ::
23 #?MODULE{}.
24
25-spec of_id(id()) ->
26 t().
27of_id(ID) ->
aa4143aa
SK
28 WordSize = beam_stats_source:erlang_system_info(wordsize),
29 NumberOfWords = beam_stats_source:ets_info(ID, memory),
a8d431d1
SK
30 NumberOfBytes = NumberOfWords * WordSize,
31 #?MODULE
32 { id = ID
aa4143aa
SK
33 , name = beam_stats_source:ets_info(ID, name)
34 , size = beam_stats_source:ets_info(ID, size)
a8d431d1
SK
35 , memory = NumberOfBytes
36 }.
This page took 0.030987 seconds and 4 git commands to generate.