pub struct GovernorManifest {
pub terminable: Option<bool>,
pub min_idle_secs: Option<u64>,
pub memory_budget_kb: Option<u64>,
}Expand description
Idle-termination policy for a lazily-started app (issue #811 SP1 — the
app governor). Nested under AppManifest::governor.
Fields§
§terminable: Option<bool>Explicit opt-out. Some(false) exempts the app from idle termination
regardless of any other eligibility rule. None/Some(true) defers
to the other eligibility rules.
min_idle_secs: Option<u64>Minimum idle duration, in seconds, before the governor may terminate
this app — overrides the governor’s default sweep threshold. None
defers to the default.
memory_budget_kb: Option<u64>Memory budget in KB. When the app’s measured footprint — on the basis
selected by its measurement attribution, see
node_app_host::app_memory::budget — exceeds this, the owner is warned
in the shell.
§What None defers to
NOT one number. The default is chosen PER BASIS
(node_app_host::app_memory::budget::default_budget_kb), because the
bases are not comparable quantities:
| basis | default | why |
|---|---|---|
heap_used, pss | 10,240 KB | the app and nothing else |
rss | 61,440 KB | the whole OS process, runtime included |
not_attributable | 10,240 KB | never over; carried only for the wire |
A shared-runtime Bun worker is compared on heap_used; a dedicated
process or cgroup-scoped standalone on rss, which charges it for a
JavaScript engine it did not choose and cannot shed.
On top of that, a host-side runtime-critical entry
(RUNTIME_CRITICAL_BUDGETS) acts as a FLOOR, never a ceiling: it can
only raise an app above the per-basis default, never pull it below one.
A value declared HERE is the one thing that overrides both, in either direction — it is a deliberate choice by the app author, not a fallback, so it is honoured unchanged even when it is lower than the default.
Apps that legitimately need more than their basis default MUST declare a realistic budget here; otherwise the warning is permanently lit and stops meaning anything.
Trait Implementations§
Source§impl Clone for GovernorManifest
impl Clone for GovernorManifest
Source§fn clone(&self) -> GovernorManifest
fn clone(&self) -> GovernorManifest
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more