summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2024-01-17 21:53:55 +0100
committerHarald Musum <musum@yahooinc.com>2024-01-17 21:53:55 +0100
commit823dd86af7eefade5f4b4d380a291ffe90fff3b0 (patch)
tree7dee67258e7533f93fe39f3d3a304b3182604bc5 /config-model
parentb894173caeb89b8f6850cae5e25641cb2a527e25 (diff)
Use memory from the node with lowest available memory
Also handle empty container cluster
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForOnnxModelChangesValidator.java6
1 files changed, 5 insertions, 1 deletions
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<ApplicationContainer> 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);