You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Setup. Hierarchical queues for a shared multi-user GPU cluster:
fly-root (quota = cluster)
├── fly-priority gpu quota 1000000 # "critical" workloads
└── fly-shared gpu quota 0 # parent of all users
├── fly-alice gpu quota Q, weight 1
├── fly-bob gpu quota Q, weight 1
└── …
This works really well for two of our goals (verified against a kwok-faked cluster):
fly-priority's large quota lets it reclaim from anyone — critical jobs preempt everything, including a user's in-quota GPUs, because the priority queue and the users diverge at fly-root where fly-shared is over its quota of 0.
A sibling (fly-bob) reclaims another user's above-quota GPUs but never their guaranteed Q — peers are protected up to their floor.
Question. Cross-queue reclaim only ever seems to recover a queue's deserved quota (GuaranteeDeservedQuota), never its computed fair share. Concretely: with fly-alice running the whole cluster and fly-bob idle, fly-bob reclaims only up to its quota Q and stops — even though its fair share (with two active queues, equal weight) is half the cluster. Bob reaches a fair split only as Alice's jobs finish and freed GPUs are re-allocated, not by preemption.
Is there a supported way to make an under-fair-share queue reclaim from over-fair-share siblings immediately — i.e. enforce the dynamic fair share via preemption rather than only the static quota? We saw a MaintainFairShare reclaim strategy referenced in the code/docs but couldn't get it to fire in this scenario. Is it configurable (scheduler config / per-queue), or is fair-share strictly an allocation-time concern by design?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Version: v0.15.0
Setup. Hierarchical queues for a shared multi-user GPU cluster:
This works really well for two of our goals (verified against a kwok-faked cluster):
fly-priority's large quota lets it reclaim from anyone — critical jobs preempt everything, including a user's in-quota GPUs, because the priority queue and the users diverge atfly-rootwherefly-sharedis over its quota of 0.fly-bob) reclaims another user's above-quota GPUs but never their guaranteedQ— peers are protected up to their floor.Question. Cross-queue reclaim only ever seems to recover a queue's deserved quota (
GuaranteeDeservedQuota), never its computed fair share. Concretely: withfly-alicerunning the whole cluster andfly-bobidle,fly-bobreclaims only up to its quotaQand stops — even though its fair share (with two active queues, equal weight) is half the cluster. Bob reaches a fair split only as Alice's jobs finish and freed GPUs are re-allocated, not by preemption.Is there a supported way to make an under-fair-share queue reclaim from over-fair-share siblings immediately — i.e. enforce the dynamic fair share via preemption rather than only the static quota? We saw a
MaintainFairSharereclaim strategy referenced in the code/docs but couldn't get it to fire in this scenario. Is it configurable (scheduler config / per-queue), or is fair-share strictly an allocation-time concern by design?Thanks!
All reactions