1syntax = "proto3"; 2 3package xds.data.orca.v3; 4 5option java_outer_classname = "OrcaLoadReportProto"; 6option java_multiple_files = true; 7option java_package = "com.github.xds.data.orca.v3"; 8option go_package = "github.com/cncf/xds/go/xds/data/orca/v3"; 9 10import "validate/validate.proto"; 11 12// See section `ORCA load report format` of the design document in 13// :ref:`https://github.com/envoyproxy/envoy/issues/6614`. 14 15message OrcaLoadReport { 16 // CPU utilization expressed as a fraction of available CPU resources. This 17 // should be derived from the latest sample or measurement. The value may be 18 // larger than 1.0 when the usage exceeds the reporter dependent notion of 19 // soft limits. 20 double cpu_utilization = 1 [(validate.rules).double.gte = 0]; 21 22 // Memory utilization expressed as a fraction of available memory 23 // resources. This should be derived from the latest sample or measurement. 24 double mem_utilization = 2 [(validate.rules).double.gte = 0, (validate.rules).double.lte = 1]; 25 26 // Total RPS being served by an endpoint. This should cover all services that an endpoint is 27 // responsible for. 28 // Deprecated -- use ``rps_fractional`` field instead. 29 uint64 rps = 3 [deprecated = true]; 30 31 // Application specific requests costs. Each value is an absolute cost (e.g. 3487 bytes of 32 // storage) associated with the request. 33 map<string, double> request_cost = 4; 34 35 // Resource utilization values. Each value is expressed as a fraction of total resources 36 // available, derived from the latest sample or measurement. 37 map<string, double> utilization = 5 38 [(validate.rules).map.values.double.gte = 0, (validate.rules).map.values.double.lte = 1]; 39 40 // Total RPS being served by an endpoint. This should cover all services that an endpoint is 41 // responsible for. 42 double rps_fractional = 6 [(validate.rules).double.gte = 0]; 43 44 // Total EPS (errors/second) being served by an endpoint. This should cover 45 // all services that an endpoint is responsible for. 46 double eps = 7 [(validate.rules).double.gte = 0]; 47 48 // Application specific opaque metrics. 49 map<string, double> named_metrics = 8; 50 51 // Application specific utilization expressed as a fraction of available 52 // resources. For example, an application may report the max of CPU and memory 53 // utilization for better load balancing if it is both CPU and memory bound. 54 // This should be derived from the latest sample or measurement. 55 // The value may be larger than 1.0 when the usage exceeds the reporter 56 // dependent notion of soft limits. 57 double application_utilization = 9 [(validate.rules).double.gte = 0]; 58} 59