Load loadWith(int givenNodes, int givenGroups, Instant now) {
        int nodes = nodesAdjustedForRedundancy(givenNodes, givenGroups);
        int groups = groupsAdjustedForRedundancy(givenNodes, givenGroups);
        if (clusterSpec().type() == ClusterSpec.Type.content) { // load scales with node share of content
            int groupSize = nodes / groups;

            // Cpu: Query cpu scales with cluster size, write cpu scales with group size
            // Memory and disk: Scales with group size

            // The fixed cost portion of cpu does not scale with changes to the node count
            double queryCpuPerGroup = fixedCpuCostFraction + (1 - fixedCpuCostFraction) * groupSize() / groupSize;

            double queryCpu = queryCpuPerGroup * groupCount() / groups;
            double writeCpu = (double)groupSize() / groupSize;
            CpuModel cpu = cpu(now);
            return new Load(cpu.queryFraction() * queryCpu + (1 - cpu.queryFraction()) * writeCpu,
                            (1 - memory.fixedFraction()) * (double) groupSize() / groupSize + memory.fixedFraction() * 1,
                            (double)groupSize() / groupSize,
                            1,
                            1);
        }
        else {
            return new Load((double) nodeCount() / nodes, 1, 1, 1, 1);
        }
    }
Returns the relative load adjustment accounting for redundancy given these nodes+groups
relative to node nodes+groups in this.
node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java