Documentation
¶
Index ¶
- Variables
- type KVMBinpackStep
- type KVMBinpackStepOpts
- type KVMFailoverEvacuationOpts
- type KVMFailoverEvacuationStep
- type KVMInstanceGroupSoftAffinityStep
- type KVMPreferSmallerHostsStep
- type KVMPreferSmallerHostsStepOpts
- type NovaWeigher
- type VMwareAntiAffinityNoisyProjectsStep
- type VMwareAntiAffinityNoisyProjectsStepOpts
- type VMwareAvoidLongTermContendedHostsStep
- type VMwareAvoidLongTermContendedHostsStepOpts
- type VMwareAvoidShortTermContendedHostsStep
- type VMwareAvoidShortTermContendedHostsStepOpts
- type VMwareBinpackStep
- type VMwareBinpackStepOpts
Constants ¶
This section is empty.
Variables ¶
var Index = map[string]func() NovaWeigher{}
Configuration of weighers supported by the nova scheduler.
Functions ¶
This section is empty.
Types ¶
type KVMBinpackStep ¶
type KVMBinpackStep struct {
// Base weigher providing common functionality.
lib.BaseWeigher[api.ExternalSchedulerRequest, KVMBinpackStepOpts]
}
This step implements a binpacking weigher for workloads on kvm hypervisors. It pulls the requested vm into the smallest gaps possible, to ensure other hosts with less allocation stay free for bigger vms. Explanation of the algorithm: https://volcano.sh/en/docs/plugins/#binpack
func (*KVMBinpackStep) Run ¶
func (s *KVMBinpackStep) Run(traceLog *slog.Logger, request api.ExternalSchedulerRequest) (*lib.FilterWeigherPipelineStepResult, error)
Run this weigher in the pipeline after filters have been executed.
type KVMBinpackStepOpts ¶
type KVMBinpackStepOpts struct {
// ResourceWeights allows configuring the weight for each resource type when
// calculating the binpacking score. The score is a weighted average of the
// node's resource utilizations after placing the VM.
// If a resource is not specified, is ignored in the score calculation
// (equivalent to a weight of 0).
ResourceWeights map[hv1.ResourceName]float64 `json:"resourceWeights"`
}
func (KVMBinpackStepOpts) Validate ¶
func (o KVMBinpackStepOpts) Validate() error
Validate the options to ensure they are correct before running the weigher.
type KVMFailoverEvacuationOpts ¶
type KVMFailoverEvacuationOpts struct {
// Weight to assign to hosts that match a failover reservation for the VM.
// Default: 1.0
FailoverHostWeight *float64 `json:"failoverHostWeight,omitempty"`
// Weight to assign to hosts that don't match a failover reservation.
// Default: 0.1
DefaultHostWeight *float64 `json:"defaultHostWeight,omitempty"`
}
Options for the KVM failover evacuation weigher.
func (KVMFailoverEvacuationOpts) GetDefaultHostWeight ¶
func (o KVMFailoverEvacuationOpts) GetDefaultHostWeight() float64
func (KVMFailoverEvacuationOpts) GetFailoverHostWeight ¶
func (o KVMFailoverEvacuationOpts) GetFailoverHostWeight() float64
func (KVMFailoverEvacuationOpts) Validate ¶
func (o KVMFailoverEvacuationOpts) Validate() error
type KVMFailoverEvacuationStep ¶
type KVMFailoverEvacuationStep struct {
lib.BaseWeigher[api.ExternalSchedulerRequest, KVMFailoverEvacuationOpts]
}
KVMFailoverEvacuationStep weighs hosts based on failover reservations. Hosts that match a failover reservation for the VM being scheduled get a higher weight, encouraging placement on pre-reserved failover capacity.
func (*KVMFailoverEvacuationStep) Run ¶
func (s *KVMFailoverEvacuationStep) Run(traceLog *slog.Logger, request api.ExternalSchedulerRequest) (*lib.FilterWeigherPipelineStepResult, error)
Run the weigher step. For evacuation requests, hosts matching a failover reservation where the VM is in Allocations get a higher weight. For non-evacuation requests (e.g., live migration, rebuild), this weigher has no effect.
type KVMInstanceGroupSoftAffinityStep ¶
type KVMInstanceGroupSoftAffinityStep struct {
lib.BaseWeigher[api.ExternalSchedulerRequest, lib.EmptyFilterWeigherPipelineStepOpts]
}
This weigher implements the "soft affinity" and "soft anti-affinity" policy for instance groups in nova.
It assigns a weight to each host based on how many instances of the same instance group are already running on that host. The more instances of the same group on a host, the lower (for soft-anti-affinity) or higher (for soft-affinity) the weight, which makes it less likely or more likely, respectively, for the scheduler to choose that host for new instances of the same group.
func (*KVMInstanceGroupSoftAffinityStep) Run ¶
func (s *KVMInstanceGroupSoftAffinityStep) Run(traceLog *slog.Logger, request api.ExternalSchedulerRequest) (*lib.FilterWeigherPipelineStepResult, error)
type KVMPreferSmallerHostsStep ¶
type KVMPreferSmallerHostsStep struct {
// Base weigher providing common functionality.
lib.BaseWeigher[api.ExternalSchedulerRequest, KVMPreferSmallerHostsStepOpts]
}
This step pulls virtual machines onto smaller hosts (by capacity). This ensures that larger hosts are not overly fragmented with small VMs, and can still accommodate larger VMs when they need to be scheduled.
func (*KVMPreferSmallerHostsStep) Run ¶
func (s *KVMPreferSmallerHostsStep) Run(traceLog *slog.Logger, request api.ExternalSchedulerRequest) (*lib.FilterWeigherPipelineStepResult, error)
Run this weigher in the pipeline after filters have been executed.
type KVMPreferSmallerHostsStepOpts ¶
type KVMPreferSmallerHostsStepOpts struct {
// ResourceWeights allows configuring the weight for each resource type when
// calculating the small host preference score. The score is a weighted average
// of the normalized distances from the smallest capacity for each resource.
// If a resource is not specified, it is ignored in the score calculation
// (equivalent to a weight of 0).
ResourceWeights map[hv1.ResourceName]float64 `json:"resourceWeights"`
}
func (KVMPreferSmallerHostsStepOpts) Validate ¶
func (o KVMPreferSmallerHostsStepOpts) Validate() error
Validate the options to ensure they are correct before running the weigher.
type NovaWeigher ¶
type NovaWeigher = lib.Weigher[api.ExternalSchedulerRequest]
type VMwareAntiAffinityNoisyProjectsStep ¶
type VMwareAntiAffinityNoisyProjectsStep struct {
// BaseStep is a helper struct that provides common functionality for all steps.
lib.BaseWeigher[api.ExternalSchedulerRequest, VMwareAntiAffinityNoisyProjectsStepOpts]
}
Step to avoid noisy projects by downvoting the hosts they are running on.
func (*VMwareAntiAffinityNoisyProjectsStep) Init ¶
func (s *VMwareAntiAffinityNoisyProjectsStep) Init(ctx context.Context, client client.Client, weigher v1alpha1.WeigherSpec) error
Initialize the step and validate that all required knowledges are ready.
func (*VMwareAntiAffinityNoisyProjectsStep) Run ¶
func (s *VMwareAntiAffinityNoisyProjectsStep) Run(traceLog *slog.Logger, request api.ExternalSchedulerRequest) (*lib.FilterWeigherPipelineStepResult, error)
Downvote the hosts a project is currently running on if it's noisy.
type VMwareAntiAffinityNoisyProjectsStepOpts ¶
type VMwareAntiAffinityNoisyProjectsStepOpts struct {
AvgCPUUsageLowerBound float64 `json:"avgCPUUsageLowerBound"` // -> mapped to ActivationLowerBound
AvgCPUUsageUpperBound float64 `json:"avgCPUUsageUpperBound"` // -> mapped to ActivationUpperBound
AvgCPUUsageActivationLowerBound float64 `json:"avgCPUUsageActivationLowerBound"`
AvgCPUUsageActivationUpperBound float64 `json:"avgCPUUsageActivationUpperBound"`
}
Options for the scheduling step, given through the step config in the service yaml file. Use the options contained in this struct to configure the bounds for min-max scaling.
func (VMwareAntiAffinityNoisyProjectsStepOpts) Validate ¶
func (o VMwareAntiAffinityNoisyProjectsStepOpts) Validate() error
type VMwareAvoidLongTermContendedHostsStep ¶
type VMwareAvoidLongTermContendedHostsStep struct {
// BaseStep is a helper struct that provides common functionality for all steps.
lib.BaseWeigher[api.ExternalSchedulerRequest, VMwareAvoidLongTermContendedHostsStepOpts]
}
Step to avoid long term contended hosts by downvoting them.
func (*VMwareAvoidLongTermContendedHostsStep) Init ¶
func (s *VMwareAvoidLongTermContendedHostsStep) Init(ctx context.Context, client client.Client, weigher v1alpha1.WeigherSpec) error
Initialize the step and validate that all required knowledges are ready.
func (*VMwareAvoidLongTermContendedHostsStep) Run ¶
func (s *VMwareAvoidLongTermContendedHostsStep) Run(traceLog *slog.Logger, request api.ExternalSchedulerRequest) (*lib.FilterWeigherPipelineStepResult, error)
Downvote hosts that are highly contended.
type VMwareAvoidLongTermContendedHostsStepOpts ¶
type VMwareAvoidLongTermContendedHostsStepOpts struct {
AvgCPUContentionLowerBound float64 `json:"avgCPUContentionLowerBound"` // -> mapped to ActivationLowerBound
AvgCPUContentionUpperBound float64 `json:"avgCPUContentionUpperBound"` // -> mapped to ActivationUpperBound
AvgCPUContentionActivationLowerBound float64 `json:"avgCPUContentionActivationLowerBound"`
AvgCPUContentionActivationUpperBound float64 `json:"avgCPUContentionActivationUpperBound"`
MaxCPUContentionLowerBound float64 `json:"maxCPUContentionLowerBound"` // -> mapped to ActivationLowerBound
MaxCPUContentionUpperBound float64 `json:"maxCPUContentionUpperBound"` // -> mapped to ActivationUpperBound
MaxCPUContentionActivationLowerBound float64 `json:"maxCPUContentionActivationLowerBound"`
MaxCPUContentionActivationUpperBound float64 `json:"maxCPUContentionActivationUpperBound"`
}
Options for the scheduling step, given through the step config in the service yaml file.
func (VMwareAvoidLongTermContendedHostsStepOpts) Validate ¶
func (o VMwareAvoidLongTermContendedHostsStepOpts) Validate() error
type VMwareAvoidShortTermContendedHostsStep ¶
type VMwareAvoidShortTermContendedHostsStep struct {
// BaseStep is a helper struct that provides common functionality for all steps.
lib.BaseWeigher[api.ExternalSchedulerRequest, VMwareAvoidShortTermContendedHostsStepOpts]
}
Step to avoid recently contended hosts by downvoting them.
func (*VMwareAvoidShortTermContendedHostsStep) Init ¶
func (s *VMwareAvoidShortTermContendedHostsStep) Init(ctx context.Context, client client.Client, weigher v1alpha1.WeigherSpec) error
Initialize the step and validate that all required knowledges are ready.
func (*VMwareAvoidShortTermContendedHostsStep) Run ¶
func (s *VMwareAvoidShortTermContendedHostsStep) Run(traceLog *slog.Logger, request api.ExternalSchedulerRequest) (*lib.FilterWeigherPipelineStepResult, error)
Downvote hosts that are highly contended.
type VMwareAvoidShortTermContendedHostsStepOpts ¶
type VMwareAvoidShortTermContendedHostsStepOpts struct {
AvgCPUContentionLowerBound float64 `json:"avgCPUContentionLowerBound"` // -> mapped to ActivationLowerBound
AvgCPUContentionUpperBound float64 `json:"avgCPUContentionUpperBound"` // -> mapped to ActivationUpperBound
AvgCPUContentionActivationLowerBound float64 `json:"avgCPUContentionActivationLowerBound"`
AvgCPUContentionActivationUpperBound float64 `json:"avgCPUContentionActivationUpperBound"`
MaxCPUContentionLowerBound float64 `json:"maxCPUContentionLowerBound"` // -> mapped to ActivationLowerBound
MaxCPUContentionUpperBound float64 `json:"maxCPUContentionUpperBound"` // -> mapped to ActivationUpperBound
MaxCPUContentionActivationLowerBound float64 `json:"maxCPUContentionActivationLowerBound"`
MaxCPUContentionActivationUpperBound float64 `json:"maxCPUContentionActivationUpperBound"`
}
Options for the scheduling step, given through the step config in the service yaml file.
func (VMwareAvoidShortTermContendedHostsStepOpts) Validate ¶
func (o VMwareAvoidShortTermContendedHostsStepOpts) Validate() error
type VMwareBinpackStep ¶
type VMwareBinpackStep struct {
// Base weigher providing common functionality.
lib.BaseWeigher[api.ExternalSchedulerRequest, VMwareBinpackStepOpts]
}
This step implements a binpacking weigher for workloads on vmware hypervisors. It pulls the requested vm into the smallest gaps possible, to ensure other hosts with less allocation stay free for bigger vms. Explanation of the algorithm: https://volcano.sh/en/docs/plugins/#binpack
func (*VMwareBinpackStep) Init ¶
func (s *VMwareBinpackStep) Init(ctx context.Context, client client.Client, weigher v1alpha1.WeigherSpec) error
Initialize the step and validate that all required knowledges are ready.
func (*VMwareBinpackStep) Run ¶
func (s *VMwareBinpackStep) Run(traceLog *slog.Logger, request api.ExternalSchedulerRequest) (*lib.FilterWeigherPipelineStepResult, error)
Run this weigher in the pipeline after filters have been executed.
type VMwareBinpackStepOpts ¶
type VMwareBinpackStepOpts struct {
// ResourceWeights allows configuring the weight for each resource type when
// calculating the binpacking score. The score is a weighted average of the
// node's resource utilizations after placing the VM.
// If a resource is not specified, is ignored in the score calculation
// (equivalent to a weight of 0).
ResourceWeights map[corev1.ResourceName]float64 `json:"resourceWeights"`
}
func (VMwareBinpackStepOpts) Validate ¶
func (o VMwareBinpackStepOpts) Validate() error
Validate the options to ensure they are correct before running the weigher.