summaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2020-05-15 14:14:54 +0200
committerGitHub <noreply@github.com>2020-05-15 14:14:54 +0200
commit737f467373ce178c15c95fc0fe824fc14351eb62 (patch)
tree7b1b0b3950e2642ca9a8c52b14aa66f7cbbcadc7 /node-repository/src/main/java
parentca294b0a05520dff341016d2fc75056ac75b0d8e (diff)
parent80408fa890d7f89bd870bf95c12a258d0764244a (diff)
Merge pull request #13267 from vespa-engine/bratseth/disk-limit-improvements
Disk limit handling improvements
Diffstat (limited to 'node-repository/src/main/java')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java12
4 files changed, 13 insertions, 12 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
index fdbf58cda3d..5c990f0a3f3 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
@@ -52,8 +52,7 @@ public class CapacityPolicies {
target = target.with(NodeResources.DiskSpeed.any).with(NodeResources.StorageType.any);
// Dev does not cap the cpu of containers since usage is spotty: Allocate just a small amount exclusively
- // Do not cap in AWS as hosts are allocated on demand and 1-to-1, so the node can use the entire host
- if (zone.environment() == Environment.dev && !zone.region().value().contains("aws-"))
+ if (zone.environment() == Environment.dev && zone.getCloud().allowHostSharing())
target = target.withVcpu(0.1);
return target;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
index ca9cbc418bb..0544b675a6f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
@@ -113,7 +113,7 @@ class NodeAllocation {
if (requestedNodes.considerRetiring()) {
boolean wantToRetireNode = false;
- // if ( ! nodeResourceLimits.isWithinRealLimits(offered, cluster)) wantToRetireNode = true;
+ if ( ! nodeResourceLimits.isWithinRealLimits(offered, cluster)) wantToRetireNode = true;
if (violatesParentHostPolicy(this.nodes, offered)) wantToRetireNode = true;
if ( ! hasCompatibleFlavor(node)) wantToRetireNode = true;
if (offered.status().wantToRetire()) wantToRetireNode = true;
@@ -127,12 +127,10 @@ class NodeAllocation {
}
}
else if (! saturated() && hasCompatibleFlavor(node)) {
- /*
if ( ! nodeResourceLimits.isWithinRealLimits(offered, cluster)) {
++rejectedDueToInsufficientRealResources;
continue;
}
- */
if ( violatesParentHostPolicy(this.nodes, offered)) {
++rejectedDueToClashingParentHost;
continue;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
index 4f66794fa84..913357b16ca 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
@@ -163,11 +163,11 @@ public class NodeRepositoryProvisioner implements Provisioner {
AllocatableClusterResources currentResources =
nodes.isEmpty() ? new AllocatableClusterResources(requested.minResources(), clusterSpec.type()) // new deployment: Use min
: new AllocatableClusterResources(nodes, nodeRepository);
- return ensureWithin(Limits.of(requested), currentResources);
+ return within(Limits.of(requested), currentResources);
}
/** Make the minimal adjustments needed to the current resources to stay within the limits */
- private ClusterResources ensureWithin(Limits limits, AllocatableClusterResources current) {
+ private ClusterResources within(Limits limits, AllocatableClusterResources current) {
if (limits.isEmpty()) return current.toAdvertisedClusterResources();
if (limits.min().equals(limits.max())) return limits.min();
@@ -202,7 +202,7 @@ public class NodeRepositoryProvisioner implements Provisioner {
Optional.of(nodeAllocation.membership()),
node.status().vespaVersion(),
nodeAllocation.networkPorts(),
- requestedResources == NodeResources.unspecified ? Optional.empty() : Optional.of(requestedResources),
+ requestedResources.isUnspecified() ? Optional.empty() : Optional.of(requestedResources),
node.status().dockerImage()));
if (nodeAllocation.networkPorts().isPresent()) {
log.log(Level.FINE, () -> "Prepared node " + node.hostname() + " has port allocations");
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java
index 94d25d7cabc..db54fd316f6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java
@@ -43,8 +43,11 @@ public class NodeResourceLimits {
return true;
}
- public NodeResources enlargeToLegal(NodeResources advertisedResources, ClusterSpec.Type clusterType) {
- return advertisedResources.withMemoryGb(Math.max(minAdvertisedMemoryGb(clusterType), advertisedResources.memoryGb()));
+ public NodeResources enlargeToLegal(NodeResources requested, ClusterSpec.Type clusterType) {
+ if (requested.isUnspecified()) return requested;
+
+ return requested.withMemoryGb(Math.max(minAdvertisedMemoryGb(clusterType), requested.memoryGb()))
+ .withDiskGb(Math.max(minAdvertisedDiskGb(requested), requested.diskGb()));
}
private double minAdvertisedMemoryGb(ClusterSpec.Type clusterType) {
@@ -58,6 +61,7 @@ public class NodeResourceLimits {
}
private double minAdvertisedDiskGb(NodeResources requested) {
+
if (requested.storageType() == NodeResources.StorageType.local
&& nodeRepository.zone().getCloud().dynamicProvisioning()) {
if (nodeRepository.zone().system() == SystemName.Public)
@@ -65,11 +69,11 @@ public class NodeResourceLimits {
else
return 55 + minRealDiskGb();
}
- return minRealDiskGb();
+ return 4 + minRealDiskGb();
}
private double minRealDiskGb() {
- return 10;
+ return 6;
}
private void illegal(String type, String resource, ClusterSpec cluster, double requested, double minAllowed) {