123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package priorities
- import (
- "math"
- utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/features"
- schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
- schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
- )
- var (
- balancedResourcePriority = &ResourceAllocationPriority{"BalancedResourceAllocation", balancedResourceScorer}
-
-
-
-
-
-
-
- BalancedResourceAllocationMap = balancedResourcePriority.PriorityMap
- )
- func balancedResourceScorer(requested, allocable *schedulernodeinfo.Resource, includeVolumes bool, requestedVolumes int, allocatableVolumes int) int64 {
- cpuFraction := fractionOfCapacity(requested.MilliCPU, allocable.MilliCPU)
- memoryFraction := fractionOfCapacity(requested.Memory, allocable.Memory)
-
- if includeVolumes && utilfeature.DefaultFeatureGate.Enabled(features.BalanceAttachedNodeVolumes) && allocatableVolumes > 0 {
- volumeFraction := float64(requestedVolumes) / float64(allocatableVolumes)
- if cpuFraction >= 1 || memoryFraction >= 1 || volumeFraction >= 1 {
-
- return 0
- }
-
- mean := (cpuFraction + memoryFraction + volumeFraction) / float64(3)
- variance := float64((((cpuFraction - mean) * (cpuFraction - mean)) + ((memoryFraction - mean) * (memoryFraction - mean)) + ((volumeFraction - mean) * (volumeFraction - mean))) / float64(3))
-
-
-
- return int64((1 - variance) * float64(schedulerapi.MaxPriority))
- }
- if cpuFraction >= 1 || memoryFraction >= 1 {
-
- return 0
- }
-
-
-
-
- diff := math.Abs(cpuFraction - memoryFraction)
- return int64((1 - diff) * float64(schedulerapi.MaxPriority))
- }
- func fractionOfCapacity(requested, capacity int64) float64 {
- if capacity == 0 {
- return 1
- }
- return float64(requested) / float64(capacity)
- }
|