func findSuitableCombination()

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
}