plugin

package
v0.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 10, 2024 License: Apache-2.0 Imports: 38 Imported by: 1

Documentation

Index

Constants

View Source
const (
	NumaMemoryBalancer               = "numa_memory_balancer"
	EvictionPluginNameMemoryBalancer = "numa_memory_balancer"

	EvictReason = "the memory node %v is under bandwidth pressure"

	MetricNumaMemoryBalance = "numa_memory_balance"
)
View Source
const (
	BandwidthHighThreshold   float64 = 0.8
	BandwidthMediumThreshold float64 = 0.5

	PingPongDetectThresholdInMinutes = 15

	MigratePagesThreshold = 0.7
	BalanceInterval       = 30 * time.Second
)
View Source
const (
	InactiveProbe            = 0.1
	OffloadingSizeScaleCoeff = 1.05
)
View Source
const (
	CacheReaper = "cache-reaper"
)
View Source
const (
	DummyTMOBlockFnName string = "dummy-tmo-block-fn"
)
View Source
const (
	MemoryGuard = "memory-guard"
)
View Source
const (
	MemsetBinder = "memset-binder"
)
View Source
const (
	TransparentMemoryOffloading = "transparent-memory-offloading"
)

Variables

This section is empty.

Functions

func DummyTMOBlockFn added in v0.5.1

func DummyTMOBlockFn(ci *types.ContainerInfo, conf interface{}) bool

func GetRegisteredInitializers

func GetRegisteredInitializers() map[types.MemoryAdvisorPluginName]InitFunc

func NewTmoEngineInstance added in v0.5.1

func NewTmoEngineInstance(obj interface{}, metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter, tmoConf *tmo.TransparentMemoryOffloadingConfiguration) *tmoEngineInstance

func RegisterInitializer

func RegisterInitializer(name types.MemoryAdvisorPluginName, initFunc InitFunc)

func RegisterTMOBlockFunc added in v0.5.1

func RegisterTMOBlockFunc(blockFnName string, blockFn TMOBlockFn)

func RegisterTMOPolicyFunc added in v0.5.1

func RegisterTMOPolicyFunc(policyName v1alpha1.TMOPolicyName, tmoPolicyFn TmoPolicyFn)

Types

type BalanceInfo added in v0.4.1

type BalanceInfo struct {
	EvictPods                    []EvictPod         `json:"evictPods"`
	BalancePods                  []BalancePod       `json:"balancePods"`
	DestNumas                    []NumaInfo         `json:"destNumas"`
	NeedBalance                  bool               `json:"needBalance"`
	BandwidthPressure            bool               `json:"bandwidthPressure"`
	BalanceLevel                 BalanceLevel       `json:"balanceLevel"`
	TotalRSS                     float64            `json:"totalRSS"`
	MaxLatencyNuma               *NumaLatencyInfo   `json:"maxLatencyNuma"`
	MaxBandwidthNuma             *NumaLatencyInfo   `json:"maxBandwidthNuma"`
	RawNumaLatencyInfo           []*NumaLatencyInfo `json:"rawNumaLatencyInfo"`
	MaxLatencyNumaBandwidthLevel BandwidthLevel     `json:"maxLatencyNumaBandwidthLevel"`
	SourceNuma                   *NumaLatencyInfo   `json:"sourceNuma"`
	Status                       BalanceStatus      `json:"status"`
	FailedReason                 string             `json:"failedReason"`
	DetectTime                   time.Time          `json:"detectTime"`
	BalanceExecuted              bool               `json:"balanceExecuted"`
	EvictExecuted                bool               `json:"evictExecuted"`
}

type BalanceLevel added in v0.4.1

type BalanceLevel string
const (
	ForceBalance BalanceLevel = "forceBalance"
	GraceBalance BalanceLevel = "graceBalance"
)

type BalancePod added in v0.4.1

type BalancePod struct {
	Namespace       string   `json:"namespace"`
	Name            string   `json:"name"`
	UID             string   `json:"UID"`
	Containers      []string `json:"containers"`
	RSSOnSourceNuma float64  `json:"RSSOnSourceNuma"`
	DestNumas       []int    `json:"destNumas"`
}

type BalanceStatus added in v0.4.1

type BalanceStatus string
const (
	BalanceStatusPreparing      BalanceStatus = "preparing"
	BalanceStatusPrepareSuccess BalanceStatus = "prepareSuccess"
	BalanceStatusPrepareFailed  BalanceStatus = "prepareFailed"
)

type BandwidthLevel added in v0.4.1

type BandwidthLevel string
const (
	BandwidthLevelLow    BandwidthLevel = "low"
	BandwidthLevelMedium BandwidthLevel = "medium"
	BandwidthLevelHigh   BandwidthLevel = "high"
)

type EvictPod added in v0.4.1

type EvictPod struct {
	Namespace string `json:"namespace"`
	Name      string `json:"name"`
	UID       string `json:"UID"`
}

type InitFunc

type InitFunc func(conf *config.Configuration, extraConfig interface{}, metaReader metacache.MetaReader,
	metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) MemoryAdvisorPlugin

type MemoryAdvisorPlugin

type MemoryAdvisorPlugin interface {
	// Reconcile triggers an episode of plugin update
	Reconcile(status *types.MemoryPressureStatus) error
	// GetAdvices return the advices
	GetAdvices() types.InternalMemoryCalculationResult
}

MemoryAdvisorPlugin generates resource provision result based on configured algorithm

func NewCacheReaper

func NewCacheReaper(conf *config.Configuration, extraConfig interface{}, metaReader metacache.MetaReader, metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) MemoryAdvisorPlugin

func NewMemoryBalancer added in v0.4.1

func NewMemoryBalancer(conf *config.Configuration, _ interface{}, metaReader metacache.MetaReader, metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) MemoryAdvisorPlugin

func NewMemoryGuard

func NewMemoryGuard(conf *config.Configuration, extraConfig interface{}, metaReader metacache.MetaReader, metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) MemoryAdvisorPlugin

func NewMemsetBinder

func NewMemsetBinder(conf *config.Configuration, extraConfig interface{}, metaReader metacache.MetaReader, metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) MemoryAdvisorPlugin

func NewTransparentMemoryOffloading added in v0.5.1

func NewTransparentMemoryOffloading(conf *config.Configuration, extraConfig interface{}, metaReader metacache.MetaReader, metaServer *metaserver.MetaServer, emitter metrics.MetricEmitter) MemoryAdvisorPlugin

type NumaInfo added in v0.4.1

type NumaInfo struct {
	*NumaLatencyInfo
	Distance int `json:"Distance"`
}

type NumaLatencyInfo added in v0.4.1

type NumaLatencyInfo struct {
	NumaID             int     `json:"NumaID"`
	ReadLatency        float64 `json:"ReadLatency"`
	ReadWriteBandwidth float64 `json:"ReadWriteBandwidth"`
}

type PodSort added in v0.4.1

type PodSort struct {
	Pod          *v1.Pod
	DestNumaList []int
	SortValue    float64
}

type TMOBlockFn added in v0.5.1

type TMOBlockFn func(ci *types.ContainerInfo, conf interface{}) bool

type TmoEngine added in v0.5.1

type TmoEngine interface {
	GetContainerInfo() *types.ContainerInfo
	GetCgpath() string
	LoadConf(*tmo.TMOConfigDetail)
	GetConf() *tmo.TMOConfigDetail
	CalculateOffloadingTargetSize()
	GetOffloadingTargetSize() float64
}

type TmoPolicyFn added in v0.5.1

type TmoPolicyFn func(
	lastStats TmoStats,
	currStats TmoStats,
	conf *tmoconf.TMOConfigDetail) (error, float64)

type TmoStats added in v0.5.1

type TmoStats struct {
	// contains filtered or unexported fields
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL