Skip to content

Conversation

@nick-potts
Copy link

Implemented adaptive scheduling and surfaced reservations in the CLI:

  • Added a no-reservation ranker to keep round-robin spreading when CPU/memory reservations are zero, while retaining the existing spread ranker (existing+scheduled) when reservations are set. Tie-breaking stays deterministic.
  • Updated scheduler/strategy tests to cover adaptive ranking, reservation rollback, port conflicts, force-recreate, volume constraints, and resource accounting.
  • Added scheduling docs for clarity, documenting eligibility, adaptive ranking, resource accounting, modes, conflicts, and troubleshooting; updated the global vs replicated table to match current behavior.
  • Exposed --reserve-cpu and --reserve-memory on uc service run to set CPUReservation/MemoryReservation, aligning ad-hoc runs with deploy/Compose scheduling.

Design choices:

  • Opted for an implicit adaptive ranker instead of a new x-spread knob; balanced behavior remains for reserved workloads, round-robin for best-effort workloads.
  • CLI change is additive and backward compatible; limits remain as before, reservations now available for scheduling-aware runs.

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