Skip to content

Commit

Permalink
scheduler: remove invalid hint in which some numaNode lack resource (#…
Browse files Browse the repository at this point in the history
…2018)

Signed-off-by: wangjianyu.wjy <wangjianyu.wjy@alibaba-inc.com>
Co-authored-by: wangjianyu.wjy <wangjianyu.wjy@alibaba-inc.com>
  • Loading branch information
ZiMengSheng and wangjianyu.wjy committed Apr 28, 2024
1 parent e7624d0 commit f455a9d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 18 deletions.
28 changes: 24 additions & 4 deletions pkg/scheduler/plugins/nodenumaresource/resource_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -457,9 +457,22 @@ func (c *resourceManager) getAvailableNUMANodeResources(nodeName string, topolog
}

func generateResourceHints(numaNodeResources []NUMANodeResource, podRequests corev1.ResourceList, totalAvailable map[int]corev1.ResourceList, numaScorer *resourceAllocationScorer) map[string][]topologymanager.NUMATopologyHint {
var resourceNamesByNUMA []corev1.ResourceName
for _, numaNodeResource := range numaNodeResources {
resourceNamesByNUMA = append(resourceNamesByNUMA, quotav1.ResourceNames(numaNodeResource.Resources)...)
}
numaNodesLackResource := map[corev1.ResourceName][]int{}
for _, resourceName := range resourceNamesByNUMA {
for nodeID, numaAvailable := range totalAvailable {
if available, ok := numaAvailable[resourceName]; !ok || available.IsZero() {
numaNodesLackResource[resourceName] = append(numaNodesLackResource[resourceName], nodeID)
}
}
}
generator := hintsGenerator{
minAffinitySize: make(map[corev1.ResourceName]int),
hints: map[string][]topologymanager.NUMATopologyHint{},
numaNodesLackResource: numaNodesLackResource,
minAffinitySize: make(map[corev1.ResourceName]int),
hints: map[string][]topologymanager.NUMATopologyHint{},
}
var memoryResourceNames []corev1.ResourceName
for resourceName := range podRequests {
Expand Down Expand Up @@ -533,8 +546,9 @@ func generateResourceHints(numaNodeResources []NUMANodeResource, podRequests cor
}

type hintsGenerator struct {
minAffinitySize map[corev1.ResourceName]int
hints map[string][]topologymanager.NUMATopologyHint
numaNodesLackResource map[corev1.ResourceName][]int
minAffinitySize map[corev1.ResourceName]int
hints map[string][]topologymanager.NUMATopologyHint
}

func (g *hintsGenerator) generateHints(mask bitmask.BitMask, score int64, totalAllocatable, totalFree corev1.ResourceList, podRequests corev1.ResourceList, resourceNames ...corev1.ResourceName) {
Expand All @@ -545,6 +559,12 @@ func (g *hintsGenerator) generateHints(mask bitmask.BitMask, score int64, totalA
}
}

for _, resourceName := range resourceNames {
if mask.AnySet(g.numaNodesLackResource[resourceName]) {
return
}
}

nodeCount := mask.Count()
for _, resourceName := range resourceNames {
affinitySize := g.minAffinitySize[resourceName]
Expand Down
14 changes: 0 additions & 14 deletions pkg/scheduler/plugins/nodenumaresource/resource_manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1367,13 +1367,6 @@ func TestResourceManagerGetTopologyHint(t *testing.T) {
}(),
Preferred: true,
},
{
NUMANodeAffinity: func() bitmask.BitMask {
mask, _ := bitmask.NewBitMask(0, 1)
return mask
}(),
Preferred: false,
},
},
},
wantErr: false,
Expand Down Expand Up @@ -1495,13 +1488,6 @@ func TestResourceManagerGetTopologyHint(t *testing.T) {
}(),
Preferred: true,
},
{
NUMANodeAffinity: func() bitmask.BitMask {
mask, _ := bitmask.NewBitMask(0, 1)
return mask
}(),
Preferred: false,
},
},
},
wantErr: false,
Expand Down

0 comments on commit f455a9d

Please sign in to comment.