diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-10-16 17:24:19 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-10-16 17:24:19 +0200 |
commit | 6689925862f271e9ddfc6d328272b11b0959b57e (patch) | |
tree | 83445a212e0f10890a33164cffbf1fec04add6e8 /config-provisioning | |
parent | c51b015a8dd8f9fc8f6c6f65c4ceab4090831df3 (diff) |
Pick hosts for nodes to reduce resource allocation skew
Diffstat (limited to 'config-provisioning')
-rw-r--r-- | config-provisioning/abi-spec.json | 3 | ||||
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java | 17 |
2 files changed, 18 insertions, 2 deletions
diff --git a/config-provisioning/abi-spec.json b/config-provisioning/abi-spec.json index dc9dc80fddf..32fb870150e 100644 --- a/config-provisioning/abi-spec.json +++ b/config-provisioning/abi-spec.json @@ -587,7 +587,8 @@ ], "methods": [ "public static com.yahoo.config.provision.NodeResources$DiskSpeed[] values()", - "public static com.yahoo.config.provision.NodeResources$DiskSpeed valueOf(java.lang.String)" + "public static com.yahoo.config.provision.NodeResources$DiskSpeed valueOf(java.lang.String)", + "public static int compare(com.yahoo.config.provision.NodeResources$DiskSpeed, com.yahoo.config.provision.NodeResources$DiskSpeed)" ], "fields": [ "public static final enum com.yahoo.config.provision.NodeResources$DiskSpeed fast", 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 4469eef98cf..5687697aff9 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 @@ -11,9 +11,24 @@ import java.util.Objects; public class NodeResources { public enum DiskSpeed { + fast, // SSD disk or similar speed is needed slow, // This is tuned to work with the speed of spinning disks - any // The performance of the cluster using this does not depend on disk speed + any; // The performance of the cluster using this does not depend on disk speed + + /** + * Compares disk speeds by cost: Slower is cheaper, and therefore before. + * Any can be slow and therefore costs the same as slow. + */ + public static int compare(DiskSpeed a, DiskSpeed b) { + if (a == any) a = slow; + if (b == any) b = slow; + + if (a == slow && b == fast) return -1; + if (a == fast && b == slow) return 1; + return 0; + } + } private final double vcpu; |