From 705c7fa946cd1c00039e53bafd8d5e1740738143 Mon Sep 17 00:00:00 2001 From: Ingo Oppermann Date: Tue, 17 Sep 2024 11:55:31 +0200 Subject: [PATCH] Introduce budget for process relocation --- cluster/leader_relocate.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cluster/leader_relocate.go b/cluster/leader_relocate.go index 285a087f..dc5a057a 100644 --- a/cluster/leader_relocate.go +++ b/cluster/leader_relocate.go @@ -106,6 +106,7 @@ func relocate(have []node.Process, nodes map[string]node.About, relocateMap map[ haveReferenceAffinity := NewReferenceAffinity(have) opStack := []interface{}{} + opBudget := 100 // Check for any requested relocations. for processid, targetNodeid := range relocateMap { @@ -190,6 +191,8 @@ func relocate(have []node.Process, nodes map[string]node.About, relocateMap map[ order: process.Order, }) + opBudget -= 5 + // Adjust the resources. resources.Move(targetNodeid, sourceNodeid, process.CPU, process.Mem) @@ -199,7 +202,9 @@ func relocate(have []node.Process, nodes map[string]node.About, relocateMap map[ relocatedProcessIDs = append(relocatedProcessIDs, processid) // Move only one process at a time. - break + if opBudget <= 0 { + break + } } return opStack, resources.Map(), relocatedProcessIDs