aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Resource.java
blob: 8353f56df91c3cfd375613eb209886ecdedab446 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;

import com.yahoo.config.provision.NodeResources;

/**
 * A resource subject to autoscaling
 *
 * @author bratseth
 */
public enum Resource {

    /** Cpu utilization ratio */
    cpu {
        public double idealAverageLoad() { return 0.4; }
        double valueFrom(NodeResources resources) { return resources.vcpu(); }
    },

    /** Memory utilization ratio */
    memory {
        public double idealAverageLoad() { return 0.7; }
        double valueFrom(NodeResources resources) { return resources.memoryGb(); }
    },

    /** Disk utilization ratio */
    disk {
        public double idealAverageLoad() { return 0.6; }
        double valueFrom(NodeResources resources) { return resources.diskGb(); }
    };

    /** The load we should have of this resource on average, when one node in the cluster is down */
    public abstract double idealAverageLoad();

    abstract double valueFrom(NodeResources resources);

}