update scheduler

This commit is contained in:
tzwang 2024-12-25 11:37:19 +08:00
parent 0e656f11f4
commit 7cfbe76b47
6 changed files with 60 additions and 26 deletions

View File

@ -70,7 +70,7 @@ func (l *CommitGeneralTaskLogic) CommitGeneralTask(req *types.GeneralTaskReq) er
utils.Convert(&req, &opt)
sc, _ := schedulers.NewCloudScheduler(l.ctx, "", l.svcCtx.Scheduler, opt, tx, l.svcCtx.PromClient)
results, err := l.svcCtx.Scheduler.AssignAndSchedule(sc, scheduler.JOINT_CLOUD_MODE)
results, err := l.svcCtx.Scheduler.AssignAndSchedule(sc, scheduler.JOINT_CLOUD_MODE, nil)
if err != nil {
logx.Errorf("AssignAndSchedule() => execution error: %v", err)
return err

View File

@ -63,7 +63,7 @@ func (l *CommitVmTaskLogic) CommitVmTask(req *types.CommitVmTaskReq) (resp *type
return nil, err
}
// 3、Return scheduling results
results, err := l.svcCtx.Scheduler.AssignAndSchedule(vmSchdl, scheduler.JOINT_CLOUD_MODE)
results, err := l.svcCtx.Scheduler.AssignAndSchedule(vmSchdl, scheduler.JOINT_CLOUD_MODE, nil)
if err != nil {
logx.Errorf("AssignAndSchedule() => execution error: %v", err)
return nil, err

View File

@ -3,6 +3,8 @@ package schedule
import (
"context"
"errors"
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler"
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/schedulers"
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/schedulers/option"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/constants"
"gopkg.in/yaml.v2"
@ -42,10 +44,17 @@ func (l *ScheduleRunTaskLogic) ScheduleRunTask(req *types.RunTaskReq) (resp *typ
return nil, err
}
//schedule, err := l.svcCtx.Scheduler.AssignAndSchedule()
//if err != nil {
// return nil, err
//}
opt := &option.AiOption{}
aiSchdl, err := schedulers.NewAiScheduler(l.ctx, "", l.svcCtx.Scheduler, opt)
if err != nil {
return nil, err
}
_, err = l.svcCtx.Scheduler.AssignAndSchedule(aiSchdl, scheduler.STORAGE_SCHEDULE_MODE, clusters)
if err != nil {
return nil, err
}
adapterName, err := l.svcCtx.Scheduler.AiStorages.GetAdapterNameById(ADAPTERID)
if err != nil {

View File

@ -52,7 +52,7 @@ func (l *ScheduleSubmitLogic) ScheduleSubmit(req *types.ScheduleReq) (resp *type
return nil, err
}
results, err := l.svcCtx.Scheduler.AssignAndSchedule(aiSchdl, scheduler.JOINT_CLOUD_MODE)
results, err := l.svcCtx.Scheduler.AssignAndSchedule(aiSchdl, scheduler.JOINT_CLOUD_MODE, nil)
if err != nil {
return nil, err
}

View File

@ -41,7 +41,7 @@ func (l *AiQueue) Consume(val string) error {
aiSchdl, _ := schedulers.NewAiScheduler(l.ctx, val, l.svcCtx.Scheduler, nil)
// 调度算法
_, err := l.svcCtx.Scheduler.AssignAndSchedule(aiSchdl, scheduler.JOINT_CLOUD_MODE)
_, err := l.svcCtx.Scheduler.AssignAndSchedule(aiSchdl, scheduler.JOINT_CLOUD_MODE, nil)
if err != nil {
return err
}

View File

@ -22,6 +22,7 @@ import (
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/database"
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service"
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/strategy"
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/response"
"gorm.io/gorm"
"sigs.k8s.io/yaml"
@ -131,26 +132,50 @@ func (s *Scheduler) TempAssign() error {
return nil
}
func (s *Scheduler) AssignAndSchedule(ss SubSchedule, mode int) (interface{}, error) {
//choose strategy
strategy, err := ss.PickOptimalStrategy()
if err != nil {
return nil, err
func (s *Scheduler) AssignAndSchedule(ss SubSchedule, mode int, assignedClusters interface{}) (interface{}, error) {
var result interface{}
switch mode {
case JOINT_CLOUD_MODE:
//choose strategy
strategy, err := ss.PickOptimalStrategy()
if err != nil {
return nil, err
}
//schedule
clusters, err := strategy.Schedule()
if err != nil {
return nil, err
}
//assign tasks to clusters
resp, err := ss.AssignTask(clusters, mode)
if err != nil {
return nil, err
}
result = resp
case STORAGE_SCHEDULE_MODE:
jobClusterInfos, ok := assignedClusters.([]*types.JobClusterInfo)
if !ok {
return nil, errors.New("converting JobClusterInfos fails")
}
var clusters []*strategy.AssignedCluster
for _, info := range jobClusterInfos {
cluster := &strategy.AssignedCluster{ClusterId: info.ClusterID, Replicas: 1}
clusters = append(clusters, cluster)
}
//assign tasks to clusters
resp, err := ss.AssignTask(clusters, mode)
if err != nil {
return nil, err
}
result = resp
}
//schedule
clusters, err := strategy.Schedule()
if err != nil {
return nil, err
}
//assign tasks to clusters
resp, err := ss.AssignTask(clusters, mode)
if err != nil {
return nil, err
}
return resp, nil
return result, nil
}
func (s *Scheduler) SaveToDb() error {