diff --git a/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto b/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto index 5becf769..4af32eb6 100644 --- a/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto +++ b/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto @@ -22,13 +22,17 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE; // how the endpoint weights are determined. In the ROUND_ROBIN policy, // the endpoint weights are sent by the control plane via EDS. However, // in this policy, the endpoint weights are instead determined via -// qps and CPU utilization metrics sent by the endpoint using the Open -// Request Cost Aggregation (ORCA) protocol. The weight of a given endpoint -// is computed as qps / cpu_utilization. +// qps (queries per second), eps (errors per second), and CPU utilization +// metrics sent by the endpoint using the Open Request Cost Aggregation (ORCA) +// protocol. A query counts towards qps when successful, otherwise towards both +// qps and eps. What counts as an error is up to the endpoint to define. +// A config parameter error_utilization_penalty controls the penalty to adjust +// endpoint weights using eps and qps. The weight of a given endpoint is +// computed as: qps / (cpu_utilization + eps/qps * error_utilization_penalty) // // See the :ref:`load balancing architecture overview` for more information. // -// [#next-free-field: 6] +// [#next-free-field: 7] message ClientSideWeightedRoundRobin { // Whether to enable out-of-band utilization reporting collection from // the endpoints. By default, per-request utilization reporting is used. @@ -56,4 +60,8 @@ message ClientSideWeightedRoundRobin { // How often endpoint weights are recalculated. Default is 1 second. google.protobuf.Duration weight_update_period = 5; + + // The multiplier used to adjust endpoint weights with the error rate + // calculated as eps/qps. Default is 1.0. + google.protobuf.FloatValue error_utilization_penalty = 6; }