--spec beam_stats_queue_to_binary(beam_stats_consumer:queue()) ->
- binary().
-beam_stats_queue_to_binary(Q) ->
- iolist_to_binary([beam_stats_to_bins(B) || B <- queue:to_list(Q)]).
-
--spec beam_stats_to_bins(beam_stats:t()) ->
- [binary()].
-beam_stats_to_bins(#beam_stats
- { node_id = NodeID
- , memory = Memory
- , io_bytes_in = IOBytesIn
- , io_bytes_out = IOBytesOut
- , context_switches = ContextSwitches
- , reductions = Reductions
- , run_queue = RunQueue
- , ets = ETS
- }
-) ->
- NodeIDBin = node_id_to_bin(NodeID),
- Msgs1 =
- [ io_bytes_in_to_msg(IOBytesIn)
- , io_bytes_out_to_msg(IOBytesOut)
- , context_switches_to_msg(ContextSwitches)
- , reductions_to_msg(Reductions)
- , run_queue_to_msg(RunQueue)
- | memory_to_msgs(Memory)
- ]
- ++ ets_to_msgs(ETS),
- Msgs2 = [statsd_msg_add_name_prefix(M, NodeIDBin) || M <- Msgs1],
- [statsd_msg_to_bin(M) || M <- Msgs2].
-
--spec run_queue_to_msg(non_neg_integer()) ->
- statsd_msg().
-run_queue_to_msg(RunQueue) ->
- #statsd_msg
- { name = <<"run_queue">>
- , value = RunQueue
- , type = gauge
- }.
-
--spec reductions_to_msg(non_neg_integer()) ->
- statsd_msg().
-reductions_to_msg(Reductions) ->
- #statsd_msg
- { name = <<"reductions">>
- , value = Reductions
- , type = gauge
- }.
-
--spec context_switches_to_msg(non_neg_integer()) ->
- statsd_msg().
-context_switches_to_msg(ContextSwitches) ->
- #statsd_msg
- { name = <<"context_switches">>
- , value = ContextSwitches
- , type = gauge
- }.
-
--spec io_bytes_in_to_msg(non_neg_integer()) ->
- statsd_msg().
-io_bytes_in_to_msg(IOBytesIn) ->
- #statsd_msg
- { name = <<"io.bytes_in">>
- , value = IOBytesIn
- , type = gauge
- }.
-
--spec io_bytes_out_to_msg(non_neg_integer()) ->
- statsd_msg().
-io_bytes_out_to_msg(IOBytesOut) ->
- #statsd_msg
- { name = <<"io.bytes_out">>
- , value = IOBytesOut
- , type = gauge
- }.
-
--spec ets_to_msgs(beam_stats_ets:t()) ->
- [statsd_msg()].
-ets_to_msgs(PerTableStats) ->
- NestedMsgs = lists:map(fun ets_table_to_msgs/1, PerTableStats),
- lists:append(NestedMsgs).
-
--spec ets_table_to_msgs(beam_stats_ets_table:t()) ->
- [statsd_msg()].
-ets_table_to_msgs(#beam_stats_ets_table
- { id = ID
- , name = Name
- , size = Size
- , memory = Memory
- }