Skip to content

isb 3.3.0: a host reboot comes back in waves: staggered autostart, paced controller starts, dev sandbox disk caps - #72

Merged
knowsuchagency merged 5 commits into
mainfrom
boot-storm-policy
Oct 26, 2026
Merged

knowsuchagency merged 5 commits into
mainfrom
boot-storm-policy

Conversation

@knowsuchagency

Copy link
Copy Markdown
Contributor

On 2026-10-24, after a hard reset, titan started 154 Incus instances at once and io pressure sat at 98% for about 85 minutes. This release makes a host reboot come back in waves.

Staggered boot policy

  • Stack replicas autostart with boot.autostart.priority (slot 1 = 2, other slots = 1) and boot.autostart.delay (2 s, VM 10 s). After a reboot, Incus brings every service's first replica up before the rest, one at a time.
  • isb serve sets these keys in place on existing replicas (a config update, no restart). They are kept out of user.isb.rev, so nothing rolls: the revision diff is empty.
  • Plain isb create/isb up sandboxes get an explicit boot.autostart=false. Long-running ones (restart: always/on-failure) still autostart, spaced.
  • A new compose boot: key (autostart, priority, delay) overrides all of this. It is documented in compose.md and stacks.md.

Host-wide start pacing in the controller

  • One gate across every stack and org bounds the replica starts and creates in flight: --start-concurrency / ISB_START_CONCURRENCY, default 4, at least 1 s apart.
  • New starts are held while /proc/pressure/io full avg10 is at or above --start-io-pressure (default 40%, 0 turns it off), for up to 5 minutes each.

Default disk I/O caps for dev sandboxes

  • New non-stack sandboxes get limits.read 128MiB and limits.write 64MiB on the root disk, overridable through raw_devices.root. Stack replicas are unchanged.

Verified against a real Incus 7.5.1 in a VM:

  • A 3.1.0 stack upgraded in place: same names, revisions and init PIDs; only instance-updated events.
  • Starts ran 1 s apart at concurrency 1, and were held under a disk-load test.
  • After a VM reboot, priority waves came up in order and a new plain sandbox stayed stopped.
  • scripts/check.sh is green on the merge with 3.2.0.

Not included: no backfill. Existing sandboxes keep no boot.autostart key, so Incus' last-state restore still brings them back after a reboot. That is a follow-up for Stephan to decide.

https://claude.ai/code/session_01XJek6YFHRCRmXsmJ3v1WV4

…x disk caps

Stack replicas autostart in waves (slot 1 at priority 2, the rest at 1,
2s apart, a VM 10s), set on running replicas in place and kept out of
the revision. Plain sandboxes default to boot.autostart=false and get
root disk caps (128MiB/s read, 64MiB/s write). The controller paces
instance starts and creates across every stack (--start-concurrency,
--start-io-pressure on /proc/pressure/io).

Claude-Session: https://claude.ai/code/session_01XJek6YFHRCRmXsmJ3v1WV4
@knowsuchagency
knowsuchagency merged commit f0b194a into main Oct 26, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant