diff options
author | Martin Polden <mpolden@mpolden.no> | 2024-05-24 14:19:04 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2024-05-24 14:19:04 +0200 |
commit | 54c14c5efd43349ea22f8a8100b2a79159103cd7 (patch) | |
tree | 7b405f47661e7e592c703101204995e1ddce208d /node-repository | |
parent | 8e4316f3c29c5bc0c83a1cd92c9f1c0711443f58 (diff) |
Handle fulfilment precision loss
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableResources.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableResources.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableResources.java index 98c5af2688a..79e709e7bae 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableResources.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableResources.java @@ -130,7 +130,10 @@ public class AllocatableResources { double vcpuFulfilment = Math.min(1, realResources.totalResources().vcpu() / idealResources.totalResources().vcpu()); double memoryGbFulfilment = Math.min(1, realResources.totalResources().memoryGb() / idealResources.totalResources().memoryGb()); double diskGbFulfilment = Math.min(1, realResources.totalResources().diskGb() / idealResources.totalResources().diskGb()); - return (vcpuFulfilment + memoryGbFulfilment + diskGbFulfilment) / 3; + double fulfilment = (vcpuFulfilment + memoryGbFulfilment + diskGbFulfilment) / 3; + if (equal(fulfilment, 0)) return 0; + if (equal(fulfilment, 1)) return 1; + return fulfilment; } public boolean preferableTo(AllocatableResources other, ClusterModel model) { @@ -292,4 +295,8 @@ public class AllocatableResources { return true; } + private static boolean equal(double a, double b) { + return Math.abs(a - b) < 1e-9; + } + } |