Skip to content

Commit

Permalink
deprecate region headroom policies (#111)
Browse files Browse the repository at this point in the history
* chore(sysadvisor): deprecate region headroom policies

* add extra conf in sysadvisor assembler

---------

Co-authored-by: shaowei.wayne <shaowei.wayne@bytedance.com>
  • Loading branch information
sun-yuliang and waynepeking348 committed Jun 19, 2023
1 parent 9875066 commit 2f68586
Show file tree
Hide file tree
Showing 14 changed files with 36 additions and 531 deletions.
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
4 changes: 0 additions & 4 deletions pkg/agent/sysadvisor/plugin/qosaware/resource/cpu/advisor.go
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.

0 comments on commit 2f68586

Please sign in to comment.