1
0
mirror of https://github.com/newnius/YAO-scheduler.git synced 2025-06-07 14:21:55 +00:00
This commit is contained in:
Newnius 2020-06-18 19:53:10 +08:00
parent 39d7ebd93d
commit d6c884067e
2 changed files with 11 additions and 1 deletions

View File

@ -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
}

View File

@ -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 {