From 823dd86af7eefade5f4b4d380a291ffe90fff3b0 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Wed, 17 Jan 2024 21:53:55 +0100 Subject: Use memory from the node with lowest available memory Also handle empty container cluster --- .../change/RestartOnDeployForOnnxModelChangesValidator.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'config-model') diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForOnnxModelChangesValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForOnnxModelChangesValidator.java index 7fccd1c453f..b809f36a436 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForOnnxModelChangesValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForOnnxModelChangesValidator.java @@ -6,6 +6,7 @@ import com.yahoo.config.model.api.ConfigChangeAction; import com.yahoo.config.model.api.OnnxModelCost; import com.yahoo.vespa.model.Host; import com.yahoo.vespa.model.application.validation.Validation.ChangeContext; +import com.yahoo.vespa.model.container.ApplicationContainer; import com.yahoo.vespa.model.container.ApplicationContainerCluster; import java.util.ArrayList; @@ -105,10 +106,13 @@ public class RestartOnDeployForOnnxModelChangesValidator implements ChangeValida private static boolean enoughMemoryToAvoidRestart(ApplicationContainerCluster clusterInCurrentModel, ApplicationContainerCluster cluster, DeployLogger deployLogger) { + List containers = cluster.getContainers(); + if (containers.isEmpty()) return true; + double currentModelCostInGb = onnxModelCostInGb(clusterInCurrentModel); double nextModelCostInGb = onnxModelCostInGb(cluster); - double totalMemory = cluster.getContainers().get(0).getHostResource().realResources().memoryGb(); + double totalMemory = containers.stream().mapToDouble(c -> c.getHostResource().realResources().memoryGb()).min().orElseThrow(); double memoryUsedByModels = currentModelCostInGb + nextModelCostInGb; double availableMemory = Math.max(0, totalMemory - Host.memoryOverheadGb - memoryUsedByModels); -- cgit v1.2.3