BeamConsole.Runtime.Pressure (beam_console v0.5.0)

Copy Markdown View Source

Stores low-overhead, node-wide runtime pressure measurements.

Values are fixed-shape scalars collected from public ERTS APIs. The struct excludes scheduler-wall-time data, allocator details, port and socket identities, paths, and other runtime terms that would add cost or expose host details.

Summary

Functions

Partitions configured, dirty CPU, and dirty I/O run-queue lengths.

Types

measurement()

@type measurement() :: non_neg_integer() | nil

run_queues()

@type run_queues() :: %{
  total: non_neg_integer(),
  cpu: non_neg_integer(),
  io: non_neg_integer()
}

t()

@type t() :: %BeamConsole.Runtime.Pressure{
  dirty_cpu_scheduler_online: measurement(),
  dirty_cpu_scheduler_total: measurement(),
  dirty_io_scheduler_total: measurement(),
  io_input_bytes: measurement(),
  io_output_bytes: measurement(),
  port_count: measurement(),
  port_limit: measurement(),
  process_limit: measurement(),
  run_queue_cpu: measurement(),
  run_queue_io: measurement(),
  run_queue_total: measurement(),
  scheduler_online: measurement(),
  scheduler_total: measurement(),
  uptime_ms: measurement()
}

Functions

partition_run_queues(lengths, scheduler_total)

@spec partition_run_queues([non_neg_integer()], pos_integer()) ::
  {:ok, run_queues()} | :error

Partitions configured, dirty CPU, and dirty I/O run-queue lengths.

ERTS returns one normal queue per configured scheduler followed by one shared dirty CPU queue and one shared dirty I/O queue.

Examples

iex> BeamConsole.Runtime.Pressure.partition_run_queues([1, 2, 3, 4], 2)
{:ok, %{total: 10, cpu: 6, io: 4}}