in pkg/noderesourcetopology/least_numa.go [187:216]
func findSuitableCombination(lh logr.Logger, qos v1.PodQOSClass, numaNodes NUMANodeList, resources v1.ResourceList, numaNodesCombination [][]int) ([]int, bool) {
minAvgDistance := minAvgDistanceInCombinations(lh, numaNodes, numaNodesCombination)
var (
minDistanceCombination []int
// init as max distance
minDistance float32 = 256
)
for _, combination := range numaNodesCombination {
if !isValidCombineResources(numaNodes, resources, combination) {
continue
}
combinationResources := combineResources(numaNodes, combination)
resourcesFit := checkResourcesFit(lh, qos, resources, combinationResources)
if resourcesFit {
distance := nodesAvgDistance(lh, numaNodes, combination...)
if distance == minAvgDistance {
// return early if we can fit resources into combination and provide minDistance
return combination, true
}
// we don't have to check which combination bitmask has lower value since we are generating them from lowest value
if distance < minDistance {
minDistance = distance
minDistanceCombination = combination
}
}
}
return minDistanceCombination, false
}