OptionalDouble costPerQuery() {
            if (averageQueryRate(at()).isEmpty() || averageQueryRate(at()).getAsDouble() == 0.0) return OptionalDouble.empty();
            // TODO: Query rate should generally be sampled at the time where we see the peak resource usage
            int fanOut = clusterSpec.type().isContainer() ? 1 : groupSize();
            return OptionalDouble.of(peakLoad().cpu() * queryFraction() * fanOut * nodes.not().retired().first().get().resources().vcpu()
                                     / averageQueryRate(at).getAsDouble() / groupCount());
        }
Ideal cpu load must take the application traffic fraction into account.
node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java