Firebreak.Snapshot (Firebreak v0.1.0)

Copy Markdown View Source

A point-in-time reading of a live node's runtime shape, produced by Firebreak.Observe.snapshot/2. Pure data — every field describes what was actually running, so anything derived from it carries :exact confidence.

  • node — the observed node.
  • live_children — supervisor module to the modules of its live children (one entry per running child, so the list length is a real instance count).
  • cardinality — module to how many live processes of it were seen across the observed tree.
  • names — registered name to the module behind it, read from the live registry (recovers bindings static analysis couldn't make).
  • alive — set of modules with at least one live process.
  • mailboxes — module to the largest message_queue_len seen across its live processes. A deep mailbox on a process other things call synchronously is a live back-pressure chokepoint (callers block on the backlog).

Summary

Types

t()

@type t() :: %Firebreak.Snapshot{
  alive: MapSet.t(),
  cardinality: %{optional(module()) => pos_integer()},
  live_children: %{optional(module()) => [module()]},
  mailboxes: %{optional(module()) => non_neg_integer()},
  names: %{optional(atom()) => module()},
  node: node()
}