Repository navigation
Replies: 1 comment
|
Closing as a duplicate of #25918, which tracks the same request. Please follow along there. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Problem
A Linux agent workload can remain alive under sustained reclaim while T3's HTTP server is responsive. An OOM-only diagnosis misses that state. With a shared provider such as the Codex app-server, restarting or killing the provider also affects other threads; a scope or PID must not be presented as a single-thread recovery target.
This issue asks for a pressure-aware diagnostic and recovery contract for shared providers. It builds on the resource-attribution proposal in #15449 and pressure-intervention proposal in #21288. The narrower question here is how to report and recover an alive but unresponsive shared runtime without implying that its processes belong exclusively to one conversation. This is a design request, not a claim that every provider stall is caused by memory pressure.
Incident evidence
A capture around 2026-10-25 21:56 UTC from
0.1.3-nightly.20261023.3592showed:MemTotal=7,931,904 KiB; agents slicememory.high=4,061,134,848andmemory.max=6,091,702,272bytes, matching the policy introduced by fix(server): agents run in their own systemd scopes so an OOM kill spares the server #17662.highevents; group memory PSIfullabout 75% over five minutes; all 4 GiB of swap occupied, with hostMemAvailablearound 1.5 GiB.max/oomcounters zero and no kernel OOM kills in the preceding 24 hours. The cumulative high counter alone is not a current event rate.These are incident observations, not a deterministic reproduction, proof of a memory leak, or proof that pressure alone explains every stalled command.
MemAvailableis host-wide and does not exempt a cgroup from its own soft threshold. Sustained working-set demand above a sharedmemory.highcan keep its tasks reclaiming and throttled despite host headroom, without reachingmemory.maxor producing an OOM kill.Source inspection at main
79f6cd30c7ed4772d5989d08ce26f64f161dfe49confirms lazy cached scope initialization, the existing default limits, and continuing shared scopes that deliberately avoid assigning a tool OOM to one thread. Existing Codex interruption and command-terminal cleanup should be reused. This report does not establish a new failure of every current recovery path.Proposed contract
Before implementation, agree on the supported signals, sustained-pressure criteria, control deadlines, and restart semantics. Validate the outcomes for pressure without OOM, an unresponsive shared control channel, recovery before escalation, runtime replacement during an action, and unavailable telemetry. Keep collection cost and retained history bounded. A remote client must see the execution host's state; supported clients and read-only agent diagnostics should report the same condition.
Boundaries and related work
No automatic killing, default-limit removal, new scheduler, personal service configuration, or general-purpose process manager is proposed here. Preserve #17662's protection for T3, SSH and Tailscale. Configurable limits are already proposed separately in PR #22724 and host-managed policy in PR #24717; this issue does not request a competing settings implementation.
No custom build was deployed and no pressure workload or recovery experiment was run for this report.
All reactions