The search in tiered allocation is to first try shrinking the instance
to be allocated on the resource that blocks most allocations, and if
that fails try if unilaterally shrinking a single resource leads to a
valid solution. In that second step, we can drop the resource
investigated in the first step, as, after a shrinking step,
unilaterally shrinking it will be considered anyway.

Signed-off-by: Klaus Aehlig <[email protected]>
---
 src/Ganeti/HTools/Cluster.hs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/Ganeti/HTools/Cluster.hs b/src/Ganeti/HTools/Cluster.hs
index 0aa6c2f..2ea3580 100644
--- a/src/Ganeti/HTools/Cluster.hs
+++ b/src/Ganeti/HTools/Cluster.hs
@@ -917,7 +917,7 @@ tieredAlloc opts nl il limit newinst allocnodes ixes cstats 
=
           allocFn = fromMaybe emptyAllocSolution
                       . flip (tryAlloc opts nl' il') allocnodes
           suffShrink = sufficesShrinking allocFn newinst
-          bigSteps = filter isJust . map suffShrink $ sortedErrs
+          bigSteps = filter isJust . map suffShrink $ drop 1 sortedErrs
           progress (Ok (_, _, _, newil', _)) (Ok (_, _, _, newil, _)) =
             length newil' > length newil
           progress _ _ = False
-- 
2.6.0.rc2.230.g3dd15c0

Reply via email to