@@ -71,63 +71,17 @@ func filterSingleNumaHints(allResourcesHints [][]TopologyHint) [][]TopologyHint
71
71
return filteredResourcesHints
72
72
}
73
73
74
- func (p * singleNumaNodePolicy ) mergeProvidersHints (filteredHints [][]TopologyHint ) TopologyHint {
75
- // Set the default affinity as an any-numa affinity containing the list
76
- // of NUMA Nodes available on this machine.
77
- defaultAffinity , _ := bitmask .NewBitMask (p .numaNodes ... )
78
-
79
- // Set the bestHint to return from this function as {nil false}.
80
- // This will only be returned if no better hint can be found when
81
- // merging hints from each hint provider.
82
- bestHint := TopologyHint {defaultAffinity , false }
83
- iterateAllProviderTopologyHints (filteredHints , func (permutation []TopologyHint ) {
84
- // Get the NUMANodeAffinity from each hint in the permutation and see if any
85
- // of them encode unpreferred allocations.
86
- mergedHint := mergePermutation (p .numaNodes , permutation )
87
-
88
- // Only consider mergedHints that result in a NUMANodeAffinity > 0 to
89
- // replace the current bestHint.
90
- if mergedHint .NUMANodeAffinity .Count () == 0 {
91
- return
92
- }
93
-
94
- // If the current bestHint is non-preferred and the new mergedHint is
95
- // preferred, always choose the preferred hint over the non-preferred one.
96
- if mergedHint .Preferred && ! bestHint .Preferred {
97
- bestHint = mergedHint
98
- return
99
- }
100
-
101
- // If the current bestHint is preferred and the new mergedHint is
102
- // non-preferred, never update bestHint, regardless of mergedHint's
103
- // narowness.
104
- if ! mergedHint .Preferred && bestHint .Preferred {
105
- return
106
- }
107
-
108
- // If mergedHint and bestHint has the same preference, only consider
109
- // mergedHints that have a narrower NUMANodeAffinity than the
110
- // NUMANodeAffinity in the current bestHint.
111
- if ! mergedHint .NUMANodeAffinity .IsNarrowerThan (bestHint .NUMANodeAffinity ) {
112
- return
113
- }
114
-
115
- // In all other cases, update bestHint to the current mergedHint
116
- bestHint = mergedHint
117
- })
74
+ func (p * singleNumaNodePolicy ) Merge (providersHints []map [string ][]TopologyHint ) (TopologyHint , lifecycle.PodAdmitResult ) {
75
+ filteredHints := filterProvidersHints (providersHints )
76
+ // Filter to only include don't cares and hints with a single NUMA node.
77
+ singleNumaHints := filterSingleNumaHints (filteredHints )
78
+ bestHint := mergeFilteredHints (p .numaNodes , singleNumaHints )
118
79
80
+ defaultAffinity , _ := bitmask .NewBitMask (p .numaNodes ... )
119
81
if bestHint .NUMANodeAffinity .IsEqual (defaultAffinity ) {
120
82
bestHint = TopologyHint {nil , bestHint .Preferred }
121
83
}
122
84
123
- return bestHint
124
- }
125
-
126
- func (p * singleNumaNodePolicy ) Merge (providersHints []map [string ][]TopologyHint ) (TopologyHint , lifecycle.PodAdmitResult ) {
127
- filteredHints := filterProvidersHints (providersHints )
128
- // Filter to only include don't cares and hints with a single NUMA node.
129
- singleNumaHints := filterSingleNumaHints (filteredHints )
130
- hint := p .mergeProvidersHints (singleNumaHints )
131
- admit := p .canAdmitPodResult (& hint )
132
- return hint , admit
85
+ admit := p .canAdmitPodResult (& bestHint )
86
+ return bestHint , admit
133
87
}
0 commit comments