message: orca: split cost and utilization into separate maps.
  The cost and utilization are fundamentally different in the way they
  are defined.  There is no benefit to stuff them together, and only
  causes confusion and difficulties in aggregation should anyone ever
  try to do it.
diff: @@ -14,22 +14,23 @@ import "validate/validate.proto";
  message OrcaLoadReport {
  // CPU utilization expressed as a fraction of available CPU resources. This
  - // should be derived from a sample or measurement taken during the request.
  + // should be derived from the latest sample or measurement.
  double cpu_utilization = 1 [(validate.rules).double.gte = 0, (validate.rules).double.lte = 1];
  // Memory utilization expressed as a fraction of available memory
  - // resources. This should be derived from a sample or measurement taken
  - // during the request.
  + // resources. This should be derived from the latest sample or measurement.
  double mem_utilization = 2 [(validate.rules).double.gte = 0, (validate.rules).double.lte = 1];
  // Total RPS being served by an endpoint. This should cover all services that an endpoint is
  // responsible for.
  uint64 rps = 3;
  - // Application specific requests costs. Each value may be an absolute cost (e.g.
  - // 3487 bytes of storage) or utilization associated with the request,
  - // expressed as a fraction of total resources available. Utilization
  - // metrics should be derived from a sample or measurement taken
  - // during the request.
  - map<string, double> request_cost_or_utilization = 4;
  + // Application specific requests costs. Each value is an absolute cost (e.g. 3487 bytes of
  + // storage) associated with the request.
  + map<string, double> request_cost = 4;
  +
  + // Resource utilization values. Each value is expressed as a fraction of total resources
  + // available, derived from the latest sample or measurement.
  + map<string, double> utilization = 5
  + [(validate.rules).map.values.double.gte = 0, (validate.rules).map.values.double.lte = 1];
  }
  