From e99b7ca0a5551aad9f471a408fd33eb3a7be860f Mon Sep 17 00:00:00 2001 From: Newnius Date: Thu, 28 May 2020 19:20:30 +0800 Subject: [PATCH] update fair --- src/scheduler_fair.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/scheduler_fair.go b/src/scheduler_fair.go index 35194c7..e05f43e 100644 --- a/src/scheduler_fair.go +++ b/src/scheduler_fair.go @@ -396,7 +396,9 @@ func (scheduler *SchedulerFair) UpdateQuota() { availableCPU -= (requests[queue].CPU * base) / requests[queue].NumberGPU quota.Memory += ((requests[queue].Memory * base) / requests[queue].NumberGPU) / 1000 } - if availableGPU > 0 { + /* left more and more resource */ + if availableGPU > 0 && availableGPU < per { + flag := false for _, queue := range candidates { if quota, ok := scheduler.queuesQuota[queue]; ok && quota.NumberGPU >= requests[queue].NumberGPU*1000 { continue @@ -405,8 +407,19 @@ func (scheduler *SchedulerFair) UpdateQuota() { quota.NumberGPU += availableGPU quota.CPU += (requests[queue].CPU * availableGPU) / requests[queue].NumberGPU quota.Memory += ((requests[queue].Memory * availableGPU) / requests[queue].NumberGPU) / 1000 + flag = true break } + if !flag { /* make sure no resource is waste */ + for _, queue := range candidates { + quota := scheduler.queuesQuota[queue] + quota.NumberGPU += availableGPU + quota.CPU += (requests[queue].CPU * availableGPU) / requests[queue].NumberGPU + quota.Memory += ((requests[queue].Memory * availableGPU) / requests[queue].NumberGPU) / 1000 + flag = true + break + } + } } log.Info("After ") for queue, quota := range scheduler.queuesQuota {