From c6e82bc3e3771c705291814dedab05d7b33252d2 Mon Sep 17 00:00:00 2001 From: Newnius Date: Thu, 30 Apr 2020 18:55:54 +0800 Subject: [PATCH] update --- src/scheduler_fair.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/scheduler_fair.go b/src/scheduler_fair.go index 0b58432..4a43774 100644 --- a/src/scheduler_fair.go +++ b/src/scheduler_fair.go @@ -254,8 +254,10 @@ func (scheduler *SchedulerFair) AcquireResource(job Job, task Task) NodeStatus { if len(candidates) == 0 { allocationType = 2 for i := 0; i < pool.poolsCount; i++ { - pool.poolsMu[(i+poolID)%pool.poolsCount].Lock() - locks[(i+poolID)%pool.poolsCount] = pool.poolsMu[(i+poolID)%pool.poolsCount] + if _, ok := locks[(i+poolID)%pool.poolsCount]; !ok { + pool.poolsMu[(i+poolID)%pool.poolsCount].Lock() + locks[(i+poolID)%pool.poolsCount] = pool.poolsMu[(i+poolID)%pool.poolsCount] + } for _, node := range pool.pools[(i+poolID)%pool.poolsCount] { var available []GPUStatus for _, status := range node.Status { @@ -289,8 +291,10 @@ func (scheduler *SchedulerFair) AcquireResource(job Job, task Task) NodeStatus { if pool.TotalGPU != 0 && float64(scheduler.UsingGPU)/float64(pool.TotalGPU) >= scheduler.enablePreScheduleRatio && valid { allocationType = 3 for i := 0; i < pool.poolsCount; i++ { - pool.poolsMu[(i+poolID)%pool.poolsCount].Lock() - locks[(i+poolID)%pool.poolsCount] = pool.poolsMu[(i+poolID)%pool.poolsCount] + if _, ok := locks[(i+poolID)%pool.poolsCount]; !ok { + pool.poolsMu[(i+poolID)%pool.poolsCount].Lock() + locks[(i+poolID)%pool.poolsCount] = pool.poolsMu[(i+poolID)%pool.poolsCount] + } for _, node := range pool.pools[(i+poolID)%pool.poolsCount] { var available []GPUStatus for _, status := range node.Status {