modified ai option and dynamicResource strategy
Former-commit-id: 98ae246782e73cca61ee5946d1c85f03ddba4304
This commit is contained in:
parent
f2cf784a7d
commit
fd71bfba72
|
@ -74,6 +74,9 @@ func (as *AiScheduler) PickOptimalStrategy() (strategy.Strategy, error) {
|
||||||
case strategy.RESOURCES_PRICING:
|
case strategy.RESOURCES_PRICING:
|
||||||
strategy := strategy.NewPricingStrategy(¶m.ResourcePricingParams{Params: params, Replicas: 1})
|
strategy := strategy.NewPricingStrategy(¶m.ResourcePricingParams{Params: params, Replicas: 1})
|
||||||
return strategy, nil
|
return strategy, nil
|
||||||
|
case strategy.DYNAMIC_RESOURCES:
|
||||||
|
strategy := strategy.NewDynamicResourcesStrategy(resources, as.option)
|
||||||
|
return strategy, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, errors.New("no strategy has been chosen")
|
return nil, errors.New("no strategy has been chosen")
|
||||||
|
|
|
@ -29,3 +29,7 @@ type AiOption struct {
|
||||||
Image string
|
Image string
|
||||||
Model interface{}
|
Model interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a AiOption) GetOptionType() string {
|
||||||
|
return AI
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
package option
|
package option
|
||||||
|
|
||||||
type Option struct {
|
const (
|
||||||
Name string
|
AI = "ai"
|
||||||
|
CLOUD = "cloud"
|
||||||
|
HPC = "hpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Option interface {
|
||||||
|
GetOptionType() string
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,30 @@
|
||||||
package strategy
|
package strategy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/schedulers/option"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/service/collector"
|
||||||
|
)
|
||||||
|
|
||||||
type DynamicResourcesStrategy struct {
|
type DynamicResourcesStrategy struct {
|
||||||
|
replicas int32
|
||||||
|
resources []*collector.ResourceStats
|
||||||
|
opt option.Option
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewDynamicResourcesStrategy(resources []*collector.ResourceStats, opt option.Option) *DynamicResourcesStrategy {
|
||||||
|
return &DynamicResourcesStrategy{resources: resources, opt: opt}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ps *DynamicResourcesStrategy) Schedule() ([]*AssignedCluster, error) {
|
func (ps *DynamicResourcesStrategy) Schedule() ([]*AssignedCluster, error) {
|
||||||
|
if ps.replicas < 1 {
|
||||||
|
return nil, errors.New("replicas must be greater than 0")
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ps.opt.GetOptionType() {
|
||||||
|
case option.AI:
|
||||||
|
_ = (interface{})(ps.opt).(*option.AiOption)
|
||||||
|
|
||||||
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue