mirror of
https://github.com/newnius/YAO-scheduler.git
synced 2025-06-06 05:51:54 +00:00
support switch scheduler.strategy
This commit is contained in:
parent
7c6a3ed987
commit
8ce969a163
@ -10,7 +10,7 @@ import (
|
||||
type Configuration struct {
|
||||
KafkaBrokers []string `json:"KafkaBrokers"`
|
||||
KafkaTopic string `json:"KafkaTopic"`
|
||||
SchedulerPolicy string `json:"SchedulerPolicy"`
|
||||
SchedulerPolicy string `json:"scheduler.strategy"`
|
||||
ListenAddr string `json:"ListenAddr"`
|
||||
HDFSAddress string `json:"HDFSAddress"`
|
||||
HDFSBaseDir string `json:"HDFSBaseDir"`
|
||||
@ -178,6 +178,45 @@ func (config *Configuration) SetPreemptEnabled(enabled bool) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (config *Configuration) SetSchedulePolicy(strategy string) bool {
|
||||
config.mu.Lock()
|
||||
defer config.mu.Unlock()
|
||||
available := map[string]bool{
|
||||
"FCFS": true,
|
||||
"priority": true,
|
||||
"capacity": true,
|
||||
"fair": true,
|
||||
}
|
||||
if _, ok := available[strategy]; ok {
|
||||
config.SchedulerPolicy = strategy
|
||||
}
|
||||
log.Info("scheduler.strategy is set to ", config.SchedulerPolicy)
|
||||
return true
|
||||
}
|
||||
|
||||
func (config *Configuration) GetScheduler() Scheduler {
|
||||
config.mu.Lock()
|
||||
defer config.mu.Unlock()
|
||||
var scheduler Scheduler
|
||||
switch config.SchedulerPolicy {
|
||||
case "FCFS":
|
||||
scheduler = &SchedulerFCFS{}
|
||||
break
|
||||
case "priority":
|
||||
scheduler = &SchedulerPriority{}
|
||||
break
|
||||
case "capacity":
|
||||
scheduler = &SchedulerCapacity{}
|
||||
break
|
||||
case "fair":
|
||||
scheduler = &SchedulerFair{}
|
||||
break
|
||||
default:
|
||||
scheduler = &SchedulerFCFS{}
|
||||
}
|
||||
return scheduler
|
||||
}
|
||||
|
||||
func (config *Configuration) Dump() map[string]interface{} {
|
||||
config.mu.Lock()
|
||||
defer config.mu.Unlock()
|
||||
|
19
src/main.go
19
src/main.go
@ -346,6 +346,8 @@ func serverAPI(w http.ResponseWriter, r *http.Request) {
|
||||
/* allocator.strategy */
|
||||
case "allocator.strategy":
|
||||
ok = InstanceOfAllocator().updateStrategy(value)
|
||||
scheduler = InstanceOfConfiguration().GetScheduler()
|
||||
scheduler.Start()
|
||||
break
|
||||
|
||||
/* logger */
|
||||
@ -412,22 +414,7 @@ func main() {
|
||||
InstanceOfOptimizer().Start()
|
||||
InstanceOfGroupManager().Start()
|
||||
|
||||
switch config.SchedulerPolicy {
|
||||
case "FCFS":
|
||||
scheduler = &SchedulerFCFS{}
|
||||
break
|
||||
case "priority":
|
||||
scheduler = &SchedulerPriority{}
|
||||
break
|
||||
case "capacity":
|
||||
scheduler = &SchedulerCapacity{}
|
||||
break
|
||||
case "fair":
|
||||
scheduler = &SchedulerFair{}
|
||||
break
|
||||
default:
|
||||
scheduler = &SchedulerFCFS{}
|
||||
}
|
||||
scheduler = config.GetScheduler()
|
||||
scheduler.Start()
|
||||
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
|
Loading…
Reference in New Issue
Block a user