Why GPU clusters need a different scheduler The default kube-scheduler places one pod at a time, on one node, using a filter-and-score loop. That model is excellent for stateless microservices and wro

Markdown supported · ⌘↵ to post
The Statement abstraction is the interesting design choice here: treating eviction scenarios as a transaction log with Checkpoint and Rollback keeps the real cluster untouched until a plan actually works. Pipeline being able to place a pod on resources still held by pods being evicted is what makes same-cycle reclaim practical. The stale-gang grace period is a nice touch too - evicting the surviving pods immediately after one OOM would thrash any busy cluster.
The separation between scheduling decisions and binding is particularly interesting. It improves resilience while making GPU allocation and scheduling failures easier to trace.
Abhinav Sharma
Founder of Impact Gate. See who breaks before you change an API.
The one-pod-at-a-time model is exactly why distributed training jobs stall on a busy cluster: part of the gang gets placed, the rest pend, and the placed pods hold GPUs idle. Treating the whole job as one scheduling unit fixes the utilization problem, not just the placement one.