Skip to content

Commit 281d405

Browse files
get rid of node infos list in try to scale down
1 parent 9c5507e commit 281d405

File tree

2 files changed

+21
-23
lines changed

2 files changed

+21
-23
lines changed

cluster-autoscaler/core/scale_down.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ type scaleDownResourcesDelta map[string]int64
166166
// used as a value in scaleDownResourcesLimits if actual limit could not be obtained due to errors talking to cloud provider
167167
const scaleDownLimitUnknown = math.MinInt64
168168

169-
func computeScaleDownResourcesLeftLimits(nodes []*schedulernodeinfo.NodeInfo, resourceLimiter *cloudprovider.ResourceLimiter, cp cloudprovider.CloudProvider, timestamp time.Time) scaleDownResourcesLimits {
169+
func computeScaleDownResourcesLeftLimits(nodes []*apiv1.Node, resourceLimiter *cloudprovider.ResourceLimiter, cp cloudprovider.CloudProvider, timestamp time.Time) scaleDownResourcesLimits {
170170
totalCores, totalMem := calculateScaleDownCoresMemoryTotal(nodes, timestamp)
171171

172172
var totalGpus map[string]int64
@@ -208,10 +208,9 @@ func computeAboveMin(total int64, min int64) int64 {
208208

209209
}
210210

211-
func calculateScaleDownCoresMemoryTotal(nodes []*schedulernodeinfo.NodeInfo, timestamp time.Time) (int64, int64) {
211+
func calculateScaleDownCoresMemoryTotal(nodes []*apiv1.Node, timestamp time.Time) (int64, int64) {
212212
var coresTotal, memoryTotal int64
213-
for _, nodeInfo := range nodes {
214-
node := nodeInfo.Node()
213+
for _, node := range nodes {
215214
if isNodeBeingDeleted(node, timestamp) {
216215
// Nodes being deleted do not count towards total cluster resources
217216
continue
@@ -225,16 +224,15 @@ func calculateScaleDownCoresMemoryTotal(nodes []*schedulernodeinfo.NodeInfo, tim
225224
return coresTotal, memoryTotal
226225
}
227226

228-
func calculateScaleDownGpusTotal(nodes []*schedulernodeinfo.NodeInfo, cp cloudprovider.CloudProvider, timestamp time.Time) (map[string]int64, error) {
227+
func calculateScaleDownGpusTotal(nodes []*apiv1.Node, cp cloudprovider.CloudProvider, timestamp time.Time) (map[string]int64, error) {
229228
type gpuInfo struct {
230229
name string
231230
count int64
232231
}
233232

234233
result := make(map[string]int64)
235234
ngCache := make(map[string]gpuInfo)
236-
for _, nodeInfo := range nodes {
237-
node := nodeInfo.Node()
235+
for _, node := range nodes {
238236
if isNodeBeingDeleted(node, timestamp) {
239237
// Nodes being deleted do not count towards total cluster resources
240238
continue
@@ -753,6 +751,9 @@ func (sd *ScaleDown) TryToScaleDown(pdbs []*policyv1.PodDisruptionBudget, curren
753751

754752
nodesWithoutMaster := filterOutMasters(allNodeInfos)
755753
nodesWithoutMasterNames := make([]string, 0, len(nodesWithoutMaster))
754+
for _, node := range nodesWithoutMaster {
755+
nodesWithoutMasterNames = append(nodesWithoutMasterNames, node.Name)
756+
}
756757

757758
candidateNames := make([]string, 0)
758759
readinessMap := make(map[string]bool)
@@ -770,17 +771,16 @@ func (sd *ScaleDown) TryToScaleDown(pdbs []*policyv1.PodDisruptionBudget, curren
770771

771772
nodeGroupSize := utils.GetNodeGroupSizeMap(sd.context.CloudProvider)
772773
resourcesWithLimits := resourceLimiter.GetResources()
773-
for _, nodeInfo := range nodesWithoutMaster {
774-
node := nodeInfo.Node()
775-
nodesWithoutMasterNames = append(nodesWithoutMasterNames, node.Name)
774+
for nodeName, unneededSince := range sd.unneededNodes {
775+
klog.V(2).Infof("%s was unneeded for %s", nodeName, currentTime.Sub(unneededSince).String())
776776

777-
unneededSince, found := sd.unneededNodes[node.Name]
778-
if !found {
779-
// Node is not unneeded.
777+
nodeInfo, err := sd.context.ClusterSnapshot.NodeInfos().Get(nodeName)
778+
if err != nil {
779+
klog.Errorf("Can't retrieve unneeded node %s from snapshot, err: %v", nodeName, err)
780780
continue
781781
}
782782

783-
klog.V(2).Infof("%s was unneeded for %s", node.Name, currentTime.Sub(unneededSince).String())
783+
node := nodeInfo.Node()
784784

785785
// Check if node is marked with no scale down annotation.
786786
if hasNoScaleDownAnnotation(node) {
@@ -1326,11 +1326,11 @@ func isMasterNode(nodeInfo *schedulernodeinfo.NodeInfo) bool {
13261326
return false
13271327
}
13281328

1329-
func filterOutMasters(nodeInfos []*schedulernodeinfo.NodeInfo) []*schedulernodeinfo.NodeInfo {
1330-
result := make([]*schedulernodeinfo.NodeInfo, 0, len(nodeInfos))
1329+
func filterOutMasters(nodeInfos []*schedulernodeinfo.NodeInfo) []*apiv1.Node {
1330+
result := make([]*apiv1.Node, 0, len(nodeInfos))
13311331
for _, nodeInfo := range nodeInfos {
13321332
if !isMasterNode(nodeInfo) {
1333-
result = append(result, nodeInfo)
1333+
result = append(result, nodeInfo.Node())
13341334
}
13351335
}
13361336
return result

cluster-autoscaler/core/scale_down_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1456,16 +1456,14 @@ func TestCalculateCoresAndMemoryTotal(t *testing.T) {
14561456
{"n6", 8000, 6000 * utils.MiB, 0, true, "ng1"},
14571457
{"n7", 6000, 16000 * utils.MiB, 0, true, "ng1"},
14581458
}
1459-
nodes := make([]*schedulernodeinfo.NodeInfo, len(nodeConfigs))
1459+
nodes := make([]*apiv1.Node, len(nodeConfigs))
14601460
for i, n := range nodeConfigs {
14611461
node := BuildTestNode(n.name, n.cpu, n.memory)
14621462
SetNodeReadyState(node, n.ready, time.Now())
1463-
nodeInfo := schedulernodeinfo.NewNodeInfo()
1464-
nodeInfo.SetNode(node)
1465-
nodes[i] = nodeInfo
1463+
nodes[i] = node
14661464
}
14671465

1468-
nodes[6].Node().Spec.Taints = []apiv1.Taint{
1466+
nodes[6].Spec.Taints = []apiv1.Taint{
14691467
{
14701468
Key: deletetaint.ToBeDeletedTaint,
14711469
Value: fmt.Sprint(time.Now().Unix()),
@@ -1528,7 +1526,7 @@ func TestFilterOutMasters(t *testing.T) {
15281526

15291527
withoutMastersNames := make([]string, len(withoutMasters))
15301528
for i, n := range withoutMasters {
1531-
withoutMastersNames[i] = n.Node().Name
1529+
withoutMastersNames[i] = n.Name
15321530
}
15331531
assertEqualSet(t, []string{"n1", "n2", "n4", "n5", "n6"}, withoutMastersNames)
15341532
}

0 commit comments

Comments
 (0)