Gilad Chaplik has uploaded a new change for review. Change subject: core: scheduling: optimize filters run ......................................................................
core: scheduling: optimize filters run This patch include 2 optimizations in scheduling process: 1) Check destination host is already included with the rest of the hosts, so there is no need to invoke runFilters only for destHost. 2) run external filters should be invoked only in actual scheduling and not in validation process. Change-Id: I319ca2a5d9dbbc6634639e7b842beac1cf6c6ad9 Signed-off-by: Gilad Chaplik <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java 1 file changed, 13 insertions(+), 57 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/54/18354/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java index fc6695c..3314118 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java @@ -16,7 +16,6 @@ import org.ovirt.engine.core.bll.scheduling.external.ExternalSchedulerDiscoveryThread; import org.ovirt.engine.core.bll.scheduling.external.ExternalSchedulerFactory; import org.ovirt.engine.core.common.businessentities.BusinessEntity; -import org.ovirt.engine.core.common.businessentities.MigrationSupport; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VDSStatus; @@ -178,19 +177,6 @@ updateInitialHostList(vdsList, hostWhiteList, false); ClusterPolicy policy = policyMap.get(cluster.getClusterPolicyId()); Map<String, String> parameters = createClusterPolicyParameters(cluster); - if (destHostId != null) { - if (checkDestinationHost(vm, - vdsList, - destHostId, - messages, - policy, - parameters, - memoryChecker)) { - return destHostId; - } else if (vm.getMigrationSupport() == MigrationSupport.PINNED_TO_HOST) { - return null; - } - } vdsList = runFilters(policy.getFilters(), vdsList, @@ -198,10 +184,14 @@ parameters, policy.getFilterPositionMap(), messages, - memoryChecker); + memoryChecker, + true); if (vdsList == null || vdsList.size() == 0) { return null; + } + if (destHostId != null && vdsList.contains(destHostId)) { + return destHostId; } if (policy.getFunctions() == null || policy.getFunctions().isEmpty()) { return vdsList.get(0).getId(); @@ -232,19 +222,6 @@ updateInitialHostList(vdsList, vdsWhiteList, false); ClusterPolicy policy = policyMap.get(cluster.getClusterPolicyId()); Map<String, String> parameters = createClusterPolicyParameters(cluster); - if (destVdsId != null) { - if (checkDestinationHost(vm, - vdsList, - destVdsId, - messages, - policy, - parameters, - noWaitingMemoryChecker)) { - return true; - } else if (vm.getMigrationSupport() == MigrationSupport.PINNED_TO_HOST) { - return false; - } - } vdsList = runFilters(policy.getFilters(), vdsList, @@ -252,38 +229,13 @@ parameters, policy.getFilterPositionMap(), messages, - noWaitingMemoryChecker); + noWaitingMemoryChecker, + false); if (vdsList == null || vdsList.size() == 0) { return false; } return true; - } - - protected boolean checkDestinationHost(VM vm, - List<VDS> vdsList, - Guid destVdsId, - List<String> messages, - ClusterPolicy policy, - Map<String, String> parameters, - VdsFreeMemoryChecker memoryChecker) { - List<VDS> destVdsList = new ArrayList<VDS>(); - for (VDS vds : vdsList) { - if (vds.getId().equals(destVdsId)) { - destVdsList.add(vds); - break; - } - } - destVdsList = - runFilters(policy.getFilters(), - destVdsList, - vm, - parameters, - policy.getFilterPositionMap(), - messages, - memoryChecker); - - return destVdsList != null && destVdsList.size() == 1; } static List<Guid> getEntityIds(List<? extends BusinessEntity<Guid>> entities) { @@ -320,7 +272,9 @@ VM vm, Map<String, String> parameters, Map<Guid, Integer> filterPositionMap, - List<String> messages, VdsFreeMemoryChecker memoryChecker) { + List<String> messages, + VdsFreeMemoryChecker memoryChecker, + boolean runExternalFilters) { ArrayList<PolicyUnitImpl> internalFilters = new ArrayList<PolicyUnitImpl>(); ArrayList<PolicyUnitImpl> externalFilters = new ArrayList<PolicyUnitImpl>(); sortFilters(filters, filterPositionMap); @@ -340,7 +294,9 @@ hostList = runInternalFilters(internalFilters, hostList, vm, parameters, filterPositionMap, messages, memoryChecker); - if (Config.<Boolean> GetValue(ConfigValues.ExternalSchedulerEnabled) && externalFilters.size() > 0 + if (Config.<Boolean> GetValue(ConfigValues.ExternalSchedulerEnabled) + && runExternalFilters + && externalFilters.size() > 0 && hostList != null && hostList.size() > 0) { hostList = runExternalFilters(externalFilters, hostList, vm, parameters, messages); } -- To view, visit http://gerrit.ovirt.org/18354 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I319ca2a5d9dbbc6634639e7b842beac1cf6c6ad9 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Gilad Chaplik <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
