Hyper.Node.Budget.Soft (Hyper v0.1.0)

Copy Markdown View Source

Soft per-node admission check. Where Hyper.Node.Budget.Hard tracks memory and disk reserved from VM specs, Soft holds no state: it answers, from this node's live resource monitors (Sys.Mon), whether the machine currently has the instantaneous headroom to take on another VM.

The soft metrics are the ones whose overcommitment degrades speed rather than correctness: CPU utilization, disk bandwidth, and network bandwidth. For each, the node carries a load ceiling in Hyper.Cfg.Budget (e.g. "never schedule onto a machine already past 80% CPU"). A spec is admissible only if the measured load plus the spec's nominal demand stays under that ceiling on every metric.

This is purely the instantaneous load filter; it does not model per-VM reservations or node overcommit, which are Hard's concern.

Summary

Functions

Does this node's current measured load leave room to run spec?

Functions

can_run(spec)

@spec can_run(Hyper.Vm.Instance.Spec.t()) :: :ok | {:error, term()}

Does this node's current measured load leave room to run spec?

:ok if every soft metric stays under its load ceiling once spec's demand is added, otherwise {:error, reason} naming the first saturated metric.