@ -25,76 +25,111 @@ const char* const description_tcp_frame_size_tuning =
" would not indicate completion of a read operation until a specified "
" number of bytes have been read over the socket. Buffers are also "
" allocated according to estimated RPC sizes. " ;
const char * const additional_constraints_tcp_frame_size_tuning = " " ;
const char * const description_tcp_rcv_lowat =
" Use SO_RCVLOWAT to avoid wakeups on the read path. " ;
const char * const additional_constraints_tcp_rcv_lowat = " " ;
const char * const description_peer_state_based_framing =
" If set, the max sizes of frames sent to lower layers is controlled based "
" on the peer's memory pressure which is reflected in its max http2 frame "
" size. " ;
const char * const additional_constraints_peer_state_based_framing = " " ;
const char * const description_memory_pressure_controller =
" New memory pressure controller " ;
const char * const additional_constraints_memory_pressure_controller = " " ;
const char * const description_unconstrained_max_quota_buffer_size =
" Discard the cap on the max free pool size for one memory allocator " ;
const char * const additional_constraints_unconstrained_max_quota_buffer_size =
" " ;
const char * const description_event_engine_client =
" Use EventEngine clients instead of iomgr's grpc_tcp_client " ;
const char * const additional_constraints_event_engine_client = " " ;
const char * const description_monitoring_experiment =
" Placeholder experiment to prove/disprove our monitoring is working " ;
const char * const additional_constraints_monitoring_experiment = " " ;
const char * const description_promise_based_client_call =
" If set, use the new gRPC promise based call code when it's appropriate "
" (ie when all filters in a stack are promise based) " ;
const char * const additional_constraints_promise_based_client_call = " " ;
const char * const description_free_large_allocator =
" If set, return all free bytes from a \042 big \042 allocator " ;
const char * const additional_constraints_free_large_allocator = " " ;
const char * const description_promise_based_server_call =
" If set, use the new gRPC promise based call code when it's appropriate "
" (ie when all filters in a stack are promise based) " ;
const char * const additional_constraints_promise_based_server_call = " " ;
const char * const description_transport_supplies_client_latency =
" If set, use the transport represented value for client latency in "
" opencensus " ;
const char * const additional_constraints_transport_supplies_client_latency = " " ;
const char * const description_event_engine_listener =
" Use EventEngine listeners instead of iomgr's grpc_tcp_server " ;
const char * const additional_constraints_event_engine_listener = " " ;
const char * const description_schedule_cancellation_over_write =
" Allow cancellation op to be scheduled over a write " ;
const char * const additional_constraints_schedule_cancellation_over_write = " " ;
const char * const description_trace_record_callops =
" Enables tracing of call batch initiation and completion. " ;
const char * const additional_constraints_trace_record_callops = " " ;
const char * const description_event_engine_dns =
" If set, use EventEngine DNSResolver for client channel resolution " ;
const char * const additional_constraints_event_engine_dns = " " ;
const char * const description_work_stealing =
" If set, use a work stealing thread pool implementation in EventEngine " ;
const char * const additional_constraints_work_stealing = " " ;
const char * const description_client_privacy = " If set, client privacy " ;
const char * const additional_constraints_client_privacy = " " ;
const char * const description_canary_client_privacy =
" If set, canary client privacy " ;
const char * const additional_constraints_canary_client_privacy = " " ;
const char * const description_server_privacy = " If set, server privacy " ;
const char * const additional_constraints_server_privacy = " " ;
} // namespace
namespace grpc_core {
const ExperimentMetadata g_experiment_metadata [ ] = {
{ " tcp_frame_size_tuning " , description_tcp_frame_size_tuning , false , true } ,
{ " tcp_rcv_lowat " , description_tcp_rcv_lowat , false , true } ,
{ " peer_state_based_framing " , description_peer_state_based_framing , false ,
true } ,
{ " tcp_frame_size_tuning " , description_tcp_frame_size_tuning ,
additional_constraints_tcp_frame_size_tuning , false , true } ,
{ " tcp_rcv_lowat " , description_tcp_rcv_lowat ,
additional_constraints_tcp_rcv_lowat , false , true } ,
{ " peer_state_based_framing " , description_peer_state_based_framing ,
additional_constraints_peer_state_based_framing , false , true } ,
{ " memory_pressure_controller " , description_memory_pressure_controller ,
false , true } ,
additional_constraints_memory_pressure_controller , false , true } ,
{ " unconstrained_max_quota_buffer_size " ,
description_unconstrained_max_quota_buffer_size , false , true } ,
{ " event_engine_client " , description_event_engine_client , false , true } ,
{ " monitoring_experiment " , description_monitoring_experiment , true , true } ,
{ " promise_based_client_call " , description_promise_based_client_call , false ,
true } ,
{ " free_large_allocator " , description_free_large_allocator , false , true } ,
{ " promise_based_server_call " , description_promise_based_server_call , false ,
true } ,
description_unconstrained_max_quota_buffer_size ,
additional_constraints_unconstrained_max_quota_buffer_size , false , true } ,
{ " event_engine_client " , description_event_engine_client ,
additional_constraints_event_engine_client , false , true } ,
{ " monitoring_experiment " , description_monitoring_experiment ,
additional_constraints_monitoring_experiment , true , true } ,
{ " promise_based_client_call " , description_promise_based_client_call ,
additional_constraints_promise_based_client_call , false , true } ,
{ " free_large_allocator " , description_free_large_allocator ,
additional_constraints_free_large_allocator , false , true } ,
{ " promise_based_server_call " , description_promise_based_server_call ,
additional_constraints_promise_based_server_call , false , true } ,
{ " transport_supplies_client_latency " ,
description_transport_supplies_client_latency , false , true } ,
{ " event_engine_listener " , description_event_engine_listener , false , true } ,
description_transport_supplies_client_latency ,
additional_constraints_transport_supplies_client_latency , false , true } ,
{ " event_engine_listener " , description_event_engine_listener ,
additional_constraints_event_engine_listener , false , true } ,
{ " schedule_cancellation_over_write " ,
description_schedule_cancellation_over_write , false , true } ,
{ " trace_record_callops " , description_trace_record_callops , false , true } ,
{ " event_engine_dns " , description_event_engine_dns , false , false } ,
{ " work_stealing " , description_work_stealing , false , false } ,
{ " client_privacy " , description_client_privacy , false , false } ,
{ " canary_client_privacy " , description_canary_client_privacy , false , false } ,
{ " server_privacy " , description_server_privacy , false , false } ,
description_schedule_cancellation_over_write ,
additional_constraints_schedule_cancellation_over_write , false , true } ,
{ " trace_record_callops " , description_trace_record_callops ,
additional_constraints_trace_record_callops , false , true } ,
{ " event_engine_dns " , description_event_engine_dns ,
additional_constraints_event_engine_dns , false , false } ,
{ " work_stealing " , description_work_stealing ,
additional_constraints_work_stealing , false , false } ,
{ " client_privacy " , description_client_privacy ,
additional_constraints_client_privacy , false , false } ,
{ " canary_client_privacy " , description_canary_client_privacy ,
additional_constraints_canary_client_privacy , false , false } ,
{ " server_privacy " , description_server_privacy ,
additional_constraints_server_privacy , false , false } ,
} ;
} // namespace grpc_core