summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-11-05 23:47:18 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2019-11-05 23:47:18 +0100
commit99defb946229477e4929682ba5f8701c77a2aa77 (patch)
tree06ce30103f027d72858b3cfdf0faf5256d68271a
parent127daf91cb05c906e2d8024a8606506fb913f0fa (diff)
Make it possible specify a cpu speedup factor for a flavor
This allows us to model the speed difference between different cpu generations.
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/NodeFlavorTuning.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java6
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java24
-rw-r--r--config-provisioning/src/main/resources/configdefinitions/flavors.def4
5 files changed, 26 insertions, 16 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/NodeFlavorTuning.java b/config-model/src/main/java/com/yahoo/vespa/model/container/NodeFlavorTuning.java
index 077b97d82c0..b300dcfe85e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/NodeFlavorTuning.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/NodeFlavorTuning.java
@@ -10,12 +10,16 @@ import com.yahoo.search.config.QrStartConfig;
* @author balder
*/
public class NodeFlavorTuning implements QrStartConfig.Producer {
+
private final Flavor flavor;
+
NodeFlavorTuning(Flavor flavor) {
this.flavor = flavor;
}
+
@Override
public void getConfig(QrStartConfig.Builder builder) {
- builder.jvm.availableProcessors(Math.max(2, (int)Math.ceil(flavor.getMinCpuCores())));
+ builder.jvm.availableProcessors(Math.max(2, (int)Math.ceil(flavor.resources().vcpu())));
}
+
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java
index c8220071373..8c3dce4d968 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java
@@ -88,7 +88,7 @@ public class StorageNode extends ContentNode implements StorServerConfig.Produce
public void getConfig(StorFilestorConfig.Builder builder) {
if (getHostResource() != null && getHostResource().getFlavor().isPresent()) {
Flavor nodeFlavor = getHostResource().getFlavor().get();
- builder.num_threads(Math.max(4, (int)nodeFlavor.getMinCpuCores()));
+ builder.num_threads(Math.max(4, (int)nodeFlavor.resources().vcpu()));
}
cluster.getConfig(builder);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java
index 3260cf3a680..64bb4e964f0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java
@@ -56,10 +56,10 @@ public class NodeFlavorTuning implements ProtonConfig.Producer {
}
private void setHwInfo(ProtonConfig.Builder builder) {
- builder.hwinfo.disk.size((long)nodeFlavor.getMinDiskAvailableGb() * GB);
builder.hwinfo.disk.shared(nodeFlavor.getType().equals(Flavor.Type.DOCKER_CONTAINER));
- builder.hwinfo.memory.size((long)nodeFlavor.getMinMainMemoryAvailableGb() * GB);
- builder.hwinfo.cpu.cores((int)nodeFlavor.getMinCpuCores());
+ builder.hwinfo.cpu.cores((int)nodeFlavor.resources().vcpu());
+ builder.hwinfo.memory.size((long)nodeFlavor.resources().memoryGb() * GB);
+ builder.hwinfo.disk.size((long)nodeFlavor.resources().diskGb() * GB);
}
private void tuneDiskWriteSpeed(ProtonConfig.Builder builder) {
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java
index bc1f7fbf83b..9e6e2c3bb67 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java
@@ -26,19 +26,21 @@ public class Flavor {
private final Optional<FlavorOverrides> flavorOverrides;
+ private static final double coreSpeedupRolloutFactor = 1.0/3.0; // TODO: Increase to 2/3 (then 1) on later releases
+
/** Creates a *host* flavor from configuration */
public Flavor(FlavorsConfig.Flavor flavorConfig) {
- this(
- flavorConfig.name(),
- new NodeResources(flavorConfig.minCpuCores(),
- flavorConfig.minMainMemoryAvailableGb(),
- flavorConfig.minDiskAvailableGb(),
- flavorConfig.bandwidth() / 1000,
- flavorConfig.fastDisk() ? NodeResources.DiskSpeed.fast : NodeResources.DiskSpeed.slow),
- Optional.empty(),
- Type.valueOf(flavorConfig.environment()),
- true,
- flavorConfig.cost());
+ this(flavorConfig.name(),
+ new NodeResources(flavorConfig.minCpuCores() *
+ (1 + (flavorConfig.cpuCoreSpeedup() - 1) * coreSpeedupRolloutFactor),
+ flavorConfig.minMainMemoryAvailableGb(),
+ flavorConfig.minDiskAvailableGb(),
+ flavorConfig.bandwidth() / 1000,
+ flavorConfig.fastDisk() ? NodeResources.DiskSpeed.fast : NodeResources.DiskSpeed.slow),
+ Optional.empty(),
+ Type.valueOf(flavorConfig.environment()),
+ true,
+ flavorConfig.cost());
}
/** Creates a *node* flavor from a node resources spec */
diff --git a/config-provisioning/src/main/resources/configdefinitions/flavors.def b/config-provisioning/src/main/resources/configdefinitions/flavors.def
index 59b6c852b0e..a33f141c91b 100644
--- a/config-provisioning/src/main/resources/configdefinitions/flavors.def
+++ b/config-provisioning/src/main/resources/configdefinitions/flavors.def
@@ -17,6 +17,10 @@ flavor[].environment string default="undefined"
# The minimum number of CPU cores available.
flavor[].minCpuCores double default=0.0
+# The speedup factor per cpu core compared to an historical baseline for a particular cpu generation
+# The vcpu resources available on the node will be minCpuCores * cpuCoreSpeedup
+flavor[].cpuCoreSpeedup double default=1.0
+
# The minimum amount of main memory available.
flavor[].minMainMemoryAvailableGb double default=0.0