1
0
mirror of https://github.com/newnius/YAO-scheduler.git synced 2025-06-07 22:31:55 +00:00

update req predict

This commit is contained in:
Newnius 2020-06-21 13:14:10 +08:00
parent f8ea09f3c6
commit 4c657e698e
4 changed files with 28 additions and 0 deletions

View File

@ -42,6 +42,7 @@ func serverAPI(w http.ResponseWriter, r *http.Request) {
} else { } else {
for i := range job.Tasks { for i := range job.Tasks {
job.Tasks[i].ID = job.Name + ":" + job.Tasks[i].Name job.Tasks[i].ID = job.Name + ":" + job.Tasks[i].Name
job.Tasks[i].Job = job.Name
} }
scheduler.Schedule(job) scheduler.Schedule(job)
} }
@ -60,6 +61,15 @@ func serverAPI(w http.ResponseWriter, r *http.Request) {
w.Write(js) w.Write(js)
break break
case "job_predict_req":
log.Debug("job_predict_req")
jobName := r.URL.Query().Get("name")
cmd := r.URL.Query().Get("cmd")
js, _ := json.Marshal(InstanceOfOptimizer().PredictReq(jobName, cmd))
w.Header().Set("Content-Type", "application/json")
w.Write(js)
break
case "job_stop": case "job_stop":
log.Debug("job_stop") log.Debug("job_stop")
js, _ := json.Marshal(scheduler.Stop(string(r.PostFormValue("id")))) js, _ := json.Marshal(scheduler.Stop(string(r.PostFormValue("id"))))

View File

@ -81,3 +81,13 @@ type MsgOptimizerPredict struct {
Main int `json:"main"` Main int `json:"main"`
Post int `json:"post"` Post int `json:"post"`
} }
type MsgJobReq struct {
Code int `json:"code"`
Error string `json:"error"`
CPU int `json:"cpu"`
Mem int `json:"mem"`
GPU int `json:"gpu"`
MemGPU int `json:"cpu"`
BW int `json:"bw"`
}

View File

@ -296,3 +296,7 @@ func (optimizer *Optimizer) predict(job string, seq int) (OptimizerJobExecutionT
} }
return OptimizerJobExecutionTime{}, false return OptimizerJobExecutionTime{}, false
} }
func (optimizer *Optimizer) PredictReq(jobName string, cmd string) MsgJobReq {
return MsgJobReq{CPU: 4, Mem: 4096, GPU: 1, MemGPU: 8192, BW: 150}
}

View File

@ -45,6 +45,10 @@ func (jobs JobList) Less(i, j int) bool {
if jobs[i].Priority != jobs[j].Priority { if jobs[i].Priority != jobs[j].Priority {
return jobs[i].Priority < jobs[j].Priority return jobs[i].Priority < jobs[j].Priority
} }
/* lower jobs, which unable to be scheduled */
if InstanceOfResourcePool().TotalGPU < jobs[i].NumberGPU {
return true
}
return jobs[i].BasePriority/float64(jobs[i].NumberGPU) < jobs[j].BasePriority/float64(jobs[j].NumberGPU) return jobs[i].BasePriority/float64(jobs[i].NumberGPU) < jobs[j].BasePriority/float64(jobs[j].NumberGPU)
} }