Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deprecate region headroom policies #111

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,11 @@ func NewCPUAdvisorOptions() *CPUAdvisorOptions {
string(types.QoSRegionTypeIsolation): string(types.CPUProvisionPolicyCanonical),
string(types.QoSRegionTypeDedicatedNumaExclusive): string(types.CPUProvisionPolicyCanonical),
},
CPUHeadroomPolicyPriority: map[string]string{
string(types.QoSRegionTypeShare): string(types.CPUHeadroomPolicyCanonical),
string(types.QoSRegionTypeIsolation): string(types.CPUHeadroomPolicyCanonical),
string(types.QoSRegionTypeDedicatedNumaExclusive): string(types.CPUHeadroomPolicyCanonical),
},
CPUProvisionAssembler: string(types.CPUProvisionAssemblerCommon),
CPUHeadroomAssembler: string(types.CPUHeadroomAssemblerCommon),
CPUHeadroomPolicyOptions: headroom.NewCPUHeadroomPolicyOptions(),
CPUIsolationOptions: NewCPUIsolationOptions(),
CPUHeadroomPolicyPriority: map[string]string{},
CPUProvisionAssembler: string(types.CPUProvisionAssemblerCommon),
CPUHeadroomAssembler: string(types.CPUHeadroomAssemblerCommon),
CPUHeadroomPolicyOptions: headroom.NewCPUHeadroomPolicyOptions(),
CPUIsolationOptions: NewCPUIsolationOptions(),
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import (
"github.com/kubewharf/katalyst-core/pkg/agent/sysadvisor/plugin/qosaware/resource/cpu/assembler/provisionassembler"
"github.com/kubewharf/katalyst-core/pkg/agent/sysadvisor/plugin/qosaware/resource/cpu/isolation"
"github.com/kubewharf/katalyst-core/pkg/agent/sysadvisor/plugin/qosaware/resource/cpu/region"
"github.com/kubewharf/katalyst-core/pkg/agent/sysadvisor/plugin/qosaware/resource/cpu/region/headroompolicy"
"github.com/kubewharf/katalyst-core/pkg/agent/sysadvisor/plugin/qosaware/resource/cpu/region/provisionpolicy"
"github.com/kubewharf/katalyst-core/pkg/agent/sysadvisor/types"
"github.com/kubewharf/katalyst-core/pkg/config"
Expand All @@ -52,9 +51,6 @@ func init() {
provisionpolicy.RegisterInitializer(types.CPUProvisionPolicyCanonical, provisionpolicy.NewPolicyCanonical)
provisionpolicy.RegisterInitializer(types.CPUProvisionPolicyRama, provisionpolicy.NewPolicyRama)

headroompolicy.RegisterInitializer(types.CPUHeadroomPolicyCanonical, headroompolicy.NewPolicyCanonical)
headroompolicy.RegisterInitializer(types.CPUHeadroomPolicyUtilization, headroompolicy.NewPolicyUtilization)

provisionassembler.RegisterInitializer(types.CPUProvisionAssemblerCommon, provisionassembler.NewProvisionAssemblerCommon)

headroomassembler.RegisterInitializer(types.CPUHeadroomAssemblerCommon, headroomassembler.NewHeadroomAssemblerCommon)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ func (cra *cpuResourceAdvisor) initializeProvisionAssembler() error {
if !ok {
return fmt.Errorf("unsupported provision assembler %v", assemblerName)
}
cra.provisionAssembler = initializer(cra.conf, &cra.regionMap, &cra.reservedForReclaim, &cra.numaAvailable, &cra.nonBindingNumas, cra.metaCache, cra.metaServer, cra.emitter)
cra.provisionAssembler = initializer(cra.conf, cra.extraConf, &cra.regionMap, &cra.reservedForReclaim, &cra.numaAvailable, &cra.nonBindingNumas, cra.metaCache, cra.metaServer, cra.emitter)

return nil
}
Expand All @@ -129,7 +129,7 @@ func (cra *cpuResourceAdvisor) initializeHeadroomAssembler() error {
if !ok {
return fmt.Errorf("unsupported headroom assembler %v", assemblerName)
}
cra.headroomAssembler = initializer(cra.conf, &cra.regionMap, cra.metaCache, cra.metaServer, cra.emitter)
cra.headroomAssembler = initializer(cra.conf, cra.extraConf, &cra.regionMap, cra.metaCache, cra.metaServer, cra.emitter)

return nil
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ type HeadroomAssembler interface {
GetHeadroom() (resource.Quantity, error)
}

type InitFunc func(conf *config.Configuration, regionMap *map[string]region.QoSRegion,
type InitFunc func(conf *config.Configuration, extraConf interface{}, regionMap *map[string]region.QoSRegion,
metaCache metacache.MetaReader, metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) HeadroomAssembler

var initializers sync.Map
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ type HeadroomAssemblerCommon struct {
emitter metrics.MetricEmitter
}

func NewHeadroomAssemblerCommon(conf *config.Configuration, _ *map[string]region.QoSRegion,
func NewHeadroomAssemblerCommon(conf *config.Configuration, _ interface{}, _ *map[string]region.QoSRegion,
metaCache metacache.MetaReader, metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) HeadroomAssembler {
return &HeadroomAssemblerCommon{
conf: conf,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ type ProvisionAssembler interface {
AssembleProvision() (types.InternalCalculationResult, error)
}

type InitFunc func(conf *config.Configuration, regionMap *map[string]region.QoSRegion,
type InitFunc func(conf *config.Configuration, extraConf interface{}, regionMap *map[string]region.QoSRegion,
reservedForReclaim *map[int]int, numaAvailable *map[int]int, nonBindingNumas *machine.CPUSet,
reader metacache.MetaReader, metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) ProvisionAssembler

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ type ProvisionAssemblerCommon struct {
emitter metrics.MetricEmitter
}

func NewProvisionAssemblerCommon(conf *config.Configuration, regionMap *map[string]region.QoSRegion,
func NewProvisionAssemblerCommon(conf *config.Configuration, _ interface{}, regionMap *map[string]region.QoSRegion,
reservedForReclaim *map[int]int, numaAvailable *map[int]int, nonBindingNumas *machine.CPUSet,
metaCache metacache.MetaReader, metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) ProvisionAssembler {
return &ProvisionAssemblerCommon{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,17 @@ import (
"github.com/kubewharf/katalyst-core/pkg/config"
"github.com/kubewharf/katalyst-core/pkg/metaserver"
"github.com/kubewharf/katalyst-core/pkg/metrics"
"github.com/kubewharf/katalyst-core/pkg/util/machine"
)

// todo: implement advanced headroom policies for different regions

// HeadroomPolicy generates resource headroom estimation based on configured algorithm
type HeadroomPolicy interface {
// SetPodSet overwrites policy's pod/container record
SetPodSet(types.PodSet)
// SetBindingNumas overwrites the numa ids this policy interested in
SetBindingNumas(machine.CPUSet)
// SetEssentials updates essential values for policy update
SetEssentials(essentials types.ResourceEssentials)

Expand All @@ -39,7 +44,8 @@ type HeadroomPolicy interface {
GetHeadroom() (float64, error)
}

type InitFunc func(regionName string, conf *config.Configuration, extraConfig interface{}, metaReader metacache.MetaReader,
type InitFunc func(regionName string, regionType types.QoSRegionType, ownerPoolName string,
conf *config.Configuration, extraConfig interface{}, metaReader metacache.MetaReader,
metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) HeadroomPolicy

var initializers sync.Map
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,30 @@ import (
"github.com/kubewharf/katalyst-core/pkg/agent/sysadvisor/types"
"github.com/kubewharf/katalyst-core/pkg/metaserver"
"github.com/kubewharf/katalyst-core/pkg/metrics"
"github.com/kubewharf/katalyst-core/pkg/util/machine"
)

type PolicyBase struct {
types.ResourceEssentials

regionName string
headroom float64
podSet types.PodSet
regionName string
regionType types.QoSRegionType
ownerPoolName string
podSet types.PodSet
bindingNumas machine.CPUSet

metaReader metacache.MetaReader
metaServer *metaserver.MetaServer
emitter metrics.MetricEmitter
}

func NewPolicyBase(regionName string, metaReader metacache.MetaReader, metaServer *metaserver.MetaServer,
emitter metrics.MetricEmitter) *PolicyBase {
func NewPolicyBase(regionName string, regionType types.QoSRegionType, ownerPoolName string,
metaReader metacache.MetaReader, metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) *PolicyBase {
cp := &PolicyBase{
regionName: regionName,
podSet: make(types.PodSet),
regionName: regionName,
regionType: regionType,
ownerPoolName: ownerPoolName,
podSet: make(types.PodSet),

metaReader: metaReader,
metaServer: metaServer,
Expand All @@ -52,6 +57,10 @@ func (p *PolicyBase) SetPodSet(podSet types.PodSet) {
p.podSet = podSet.Clone()
}

func (p *PolicyBase) SetBindingNumas(numas machine.CPUSet) {
p.bindingNumas = numas
}

func (p *PolicyBase) SetEssentials(essentials types.ResourceEssentials) {
p.ResourceEssentials = essentials
}

This file was deleted.

This file was deleted.