In multi-group allocation think about the whole cluster
authorKlaus Aehlig <aehlig@google.com>
Mon, 27 Jul 2015 12:45:43 +0000 (14:45 +0200)
committerKlaus Aehlig <aehlig@google.com>
Mon, 27 Jul 2015 14:33:59 +0000 (16:33 +0200)
When choosing a group for allocating a new instance, not only
consider how balanced the group of the new instance would be,
but look at the overall balancedness of the cluster.

The net effect of this change is that hail will prefer the most
empty group and not (as it is now) the most balanced node group.
This will keep the overall cluster more balanced.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

src/Ganeti/HTools/Cluster.hs

index 3b6aadb..b8f1f60 100644 (file)
@@ -618,9 +618,9 @@ findBestAllocGroup opts mggl mgnl mgil allowed_gdxs inst cnt =
                 (\gs -> filter ((`elem` gs) . Group.idx . fst) groups)
                 allowed_gdxs
       (groups'', filter_group_msgs) = filterValidGroups groups' inst
-      sols = map (\(gr, (nl, il)) ->
+      sols = map (\(gr, (nl, _)) ->
                    (gr, genAllocNodes opts mggl nl cnt False >>=
-                        tryAlloc opts nl il inst))
+                        tryAlloc opts mgnl mgil inst))
              groups''::[(Group.Group, Result AllocSolution)]
       all_msgs = filter_group_msgs ++ concatMap solutionDescription sols
       goodSols = filterMGResults sols