From d6c884067e3bbaa60befb181f6720711169e7678 Mon Sep 17 00:00:00 2001 From: Newnius Date: Thu, 18 Jun 2020 19:53:10 +0800 Subject: [PATCH] update --- src/scheduler_fair.go | 11 ++++++++++- src/util.go | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/scheduler_fair.go b/src/scheduler_fair.go index fc5e708..1683e1e 100644 --- a/src/scheduler_fair.go +++ b/src/scheduler_fair.go @@ -42,7 +42,10 @@ func (jobs JobList) Len() int { } func (jobs JobList) Less(i, j int) bool { - return jobs[i].BasePriority < jobs[j].BasePriority + if jobs[i].Priority != jobs[j].Priority { + return jobs[i].Priority < jobs[j].Priority + } + return jobs[i].BasePriority/float64(jobs[i].NumberGPU) < jobs[j].BasePriority/float64(jobs[j].NumberGPU) } func (jobs JobList) Swap(i, j int) { @@ -424,6 +427,12 @@ func (scheduler *SchedulerFair) Schedule(job Job) { copy(scheduler.queues[queue][index+1:], scheduler.queues[queue][index:]) scheduler.queues[queue][index] = job + numberGPU := 0 + for _, task := range job.Tasks { + numberGPU += task.NumberGPU + } + job.NumberGPU = numberGPU + job.Status = Created job.BasePriority = float64(len(scheduler.queues[queue])) / 10000 } diff --git a/src/util.go b/src/util.go index f386028..7acb1a8 100644 --- a/src/util.go +++ b/src/util.go @@ -22,6 +22,7 @@ type Job struct { CreatedBy int `json:"created_by"` Locality int `json:"locality"` Status State `json:"status"` + NumberGPU int `json:"number_GPU"` } type Task struct {