diff options
author | Jon Bratseth <bratseth@vespa.ai> | 2023-05-17 10:03:38 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@vespa.ai> | 2023-05-17 10:03:38 +0200 |
commit | 2fbd594d9d27fd00ed1630e8158e35cdcfc7d32c (patch) | |
tree | 3722d5538edd3301ad0c54e748b6dd0af4414c33 /config-provisioning | |
parent | b7d6ca3d0dd94f33ca5793ec9b9d427da2a1623b (diff) |
Better messaging when no allocation is possible
- Show nearest satisfying resources only. This avoids in general showing resources
not intended by the user, such as suggesting nodes without gpu when gpu is requested,
at the cost of more often not showing any nearest match.
- Add missing colon after 'disk' in NodeResources toString
Diffstat (limited to 'config-provisioning')
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java | 2 | ||||
-rw-r--r-- | config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java | 35 |
2 files changed, 33 insertions, 4 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java index d1fd409fc93..36ba12c7cf8 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java @@ -362,7 +362,7 @@ public class NodeResources { appendDouble(sb, vcpu); sb.append(", memory: "); appendDouble(sb, memoryGb); - sb.append(" Gb, disk "); + sb.append(" Gb, disk: "); appendDouble(sb, diskGb); sb.append(" Gb"); if (bandwidthGbps > 0) { diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java index ae052c03556..230d28e04aa 100644 --- a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java @@ -6,6 +6,8 @@ import org.junit.jupiter.api.Test; import java.util.function.Supplier; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; /** @@ -20,11 +22,11 @@ public class NodeResourcesTest { @Test void testToString() { - assertEquals("[vcpu: 1.0, memory: 10.0 Gb, disk 100.0 Gb, architecture: any]", + assertEquals("[vcpu: 1.0, memory: 10.0 Gb, disk: 100.0 Gb, architecture: any]", new NodeResources(1., 10., 100., 0).toString()); - assertEquals("[vcpu: 0.3, memory: 3.3 Gb, disk 33.3 Gb, bandwidth: 0.3 Gbps, architecture: any]", + assertEquals("[vcpu: 0.3, memory: 3.3 Gb, disk: 33.3 Gb, bandwidth: 0.3 Gbps, architecture: any]", new NodeResources(1 / 3., 10 / 3., 100 / 3., 0.3).toString()); - assertEquals("[vcpu: 0.7, memory: 9.0 Gb, disk 66.7 Gb, bandwidth: 0.7 Gbps, architecture: any]", + assertEquals("[vcpu: 0.7, memory: 9.0 Gb, disk: 66.7 Gb, bandwidth: 0.7 Gbps, architecture: any]", new NodeResources(2 / 3., 8.97, 200 / 3., 0.67).toString()); } @@ -37,6 +39,33 @@ public class NodeResourcesTest { } @Test + void testSatisfies() { + var hostResources = new NodeResources(1, 2, 3, 1); + assertTrue(hostResources.satisfies(new NodeResources(1, 2, 3, 1))); + assertTrue(hostResources.satisfies(new NodeResources(1, 1, 1, 1))); + assertFalse(hostResources.satisfies(new NodeResources(2, 2, 3, 1))); + assertFalse(hostResources.satisfies(new NodeResources(1, 3, 3, 1))); + assertFalse(hostResources.satisfies(new NodeResources(1, 2, 4, 1))); + + var gpuHostResources = new NodeResources(1, 2, 3, 1, + NodeResources.DiskSpeed.fast, + NodeResources.StorageType.local, + NodeResources.Architecture.x86_64, + new NodeResources.GpuResources(1, 16)); + assertTrue(gpuHostResources.satisfies(new NodeResources(1, 2, 3, 1, + NodeResources.DiskSpeed.fast, + NodeResources.StorageType.local, + NodeResources.Architecture.x86_64, + new NodeResources.GpuResources(1, 16)))); + assertFalse(gpuHostResources.satisfies(new NodeResources(1, 2, 3, 1, + NodeResources.DiskSpeed.fast, + NodeResources.StorageType.local, + NodeResources.Architecture.x86_64, + new NodeResources.GpuResources(1, 32)))); + assertFalse(hostResources.satisfies(gpuHostResources)); + } + + @Test void benchmark() { NodeResources [] resouces = new NodeResources[100]; for (int i = 0; i < resouces.length; i++) { |