# `BeamConsole.Runtime.Pressure`
[🔗](https://github.com/cristianodabc/beam-console/blob/v0.5.4/lib/beam_console/runtime/pressure.ex#L1)

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.

# `measurement`

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

# `run_queues`

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

# `t`

```elixir
@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()
}
```

# `partition_run_queues`

```elixir
@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}}

---

*Consult [api-reference.md](api-reference.md) for complete listing*
