|
|
|
@ -50,7 +50,7 @@ DEFINE_int32(benchmark_seconds, 30, "Benchmark time (in seconds)"); |
|
|
|
|
DEFINE_int32(local_workers, 0, "Number of local workers to start"); |
|
|
|
|
|
|
|
|
|
// Common config
|
|
|
|
|
DEFINE_bool(enable_ssl, false, "Use SSL"); |
|
|
|
|
DEFINE_bool(use_tls, false, "Use TLS"); |
|
|
|
|
DEFINE_string(rpc_type, "UNARY", "Type of RPC: UNARY or STREAMING"); |
|
|
|
|
|
|
|
|
|
// Server config
|
|
|
|
@ -64,15 +64,20 @@ DEFINE_int32(client_channels, 1, "Number of client channels"); |
|
|
|
|
DEFINE_int32(payload_size, 1, "Payload size"); |
|
|
|
|
DEFINE_string(client_type, "SYNCHRONOUS_CLIENT", "Client type"); |
|
|
|
|
DEFINE_int32(async_client_threads, 1, "Async client threads"); |
|
|
|
|
|
|
|
|
|
DEFINE_double(poisson_load, -1.0, "Poisson offered load (qps)"); |
|
|
|
|
DEFINE_double(uniform_lo, -1.0, "Uniform low interarrival time (us)"); |
|
|
|
|
DEFINE_double(uniform_hi, -1.0, "Uniform high interarrival time (us)"); |
|
|
|
|
DEFINE_double(determ_load, -1.0, "Deterministic offered load (qps)"); |
|
|
|
|
DEFINE_double(pareto_base, -1.0, "Pareto base interarrival time (us)"); |
|
|
|
|
DEFINE_double(pareto_alpha, -1.0, "Pareto alpha value"); |
|
|
|
|
|
|
|
|
|
DEFINE_string(load_type, "CLOSED_LOOP", "Load type"); |
|
|
|
|
DEFINE_double(load_param_1, 0.0, "Load parameter 1"); |
|
|
|
|
DEFINE_double(load_param_2, 0.0, "Load parameter 2"); |
|
|
|
|
|
|
|
|
|
using grpc::testing::ClientConfig; |
|
|
|
|
using grpc::testing::ServerConfig; |
|
|
|
|
using grpc::testing::ClientType; |
|
|
|
|
using grpc::testing::ServerType; |
|
|
|
|
using grpc::testing::LoadType; |
|
|
|
|
using grpc::testing::RpcType; |
|
|
|
|
using grpc::testing::ResourceUsage; |
|
|
|
|
|
|
|
|
@ -85,15 +90,12 @@ static void QpsDriver() { |
|
|
|
|
|
|
|
|
|
ClientType client_type; |
|
|
|
|
ServerType server_type; |
|
|
|
|
LoadType load_type; |
|
|
|
|
GPR_ASSERT(ClientType_Parse(FLAGS_client_type, &client_type)); |
|
|
|
|
GPR_ASSERT(ServerType_Parse(FLAGS_server_type, &server_type)); |
|
|
|
|
GPR_ASSERT(LoadType_Parse(FLAGS_load_type, &load_type)); |
|
|
|
|
|
|
|
|
|
ClientConfig client_config; |
|
|
|
|
client_config.set_client_type(client_type); |
|
|
|
|
client_config.set_load_type(load_type); |
|
|
|
|
client_config.set_enable_ssl(FLAGS_enable_ssl); |
|
|
|
|
client_config.set_use_tls(FLAGS_use_tls); |
|
|
|
|
client_config.set_outstanding_rpcs_per_channel( |
|
|
|
|
FLAGS_outstanding_rpcs_per_channel); |
|
|
|
|
client_config.set_client_channels(FLAGS_client_channels); |
|
|
|
@ -102,46 +104,29 @@ static void QpsDriver() { |
|
|
|
|
client_config.set_rpc_type(rpc_type); |
|
|
|
|
|
|
|
|
|
// set up the load parameters
|
|
|
|
|
switch (load_type) { |
|
|
|
|
case grpc::testing::CLOSED_LOOP: |
|
|
|
|
break; |
|
|
|
|
case grpc::testing::POISSON: { |
|
|
|
|
auto poisson = client_config.mutable_load_params()->mutable_poisson(); |
|
|
|
|
GPR_ASSERT(FLAGS_load_param_1 != 0.0); |
|
|
|
|
poisson->set_offered_load(FLAGS_load_param_1); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case grpc::testing::UNIFORM: { |
|
|
|
|
auto uniform = client_config.mutable_load_params()->mutable_uniform(); |
|
|
|
|
GPR_ASSERT(FLAGS_load_param_1 != 0.0); |
|
|
|
|
GPR_ASSERT(FLAGS_load_param_2 != 0.0); |
|
|
|
|
uniform->set_interarrival_lo(FLAGS_load_param_1 / 1e6); |
|
|
|
|
uniform->set_interarrival_hi(FLAGS_load_param_2 / 1e6); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case grpc::testing::DETERMINISTIC: { |
|
|
|
|
auto determ = client_config.mutable_load_params()->mutable_determ(); |
|
|
|
|
GPR_ASSERT(FLAGS_load_param_1 != 0.0); |
|
|
|
|
determ->set_offered_load(FLAGS_load_param_1); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case grpc::testing::PARETO: { |
|
|
|
|
auto pareto = client_config.mutable_load_params()->mutable_pareto(); |
|
|
|
|
GPR_ASSERT(FLAGS_load_param_1 != 0.0); |
|
|
|
|
GPR_ASSERT(FLAGS_load_param_2 != 0.0); |
|
|
|
|
pareto->set_interarrival_base(FLAGS_load_param_1 / 1e6); |
|
|
|
|
pareto->set_alpha(FLAGS_load_param_2); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
default: |
|
|
|
|
GPR_ASSERT(false); |
|
|
|
|
break; |
|
|
|
|
if (FLAGS_poisson_load > 0.0) { |
|
|
|
|
auto poisson = client_config.mutable_load_params()->mutable_poisson(); |
|
|
|
|
poisson->set_offered_load(FLAGS_poisson_load); |
|
|
|
|
} else if (FLAGS_uniform_lo > 0.0) { |
|
|
|
|
auto uniform = client_config.mutable_load_params()->mutable_uniform(); |
|
|
|
|
uniform->set_interarrival_lo(FLAGS_uniform_lo / 1e6); |
|
|
|
|
uniform->set_interarrival_hi(FLAGS_uniform_hi / 1e6); |
|
|
|
|
} else if (FLAGS_determ_load > 0.0) { |
|
|
|
|
auto determ = client_config.mutable_load_params()->mutable_determ(); |
|
|
|
|
determ->set_offered_load(FLAGS_determ_load); |
|
|
|
|
} else if (FLAGS_pareto_base > 0.0) { |
|
|
|
|
auto pareto = client_config.mutable_load_params()->mutable_pareto(); |
|
|
|
|
pareto->set_interarrival_base(FLAGS_pareto_base / 1e6); |
|
|
|
|
pareto->set_alpha(FLAGS_pareto_alpha); |
|
|
|
|
} else { |
|
|
|
|
// Default is closed loop
|
|
|
|
|
// No need to set up any other load parameters here
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ServerConfig server_config; |
|
|
|
|
server_config.set_server_type(server_type); |
|
|
|
|
server_config.set_threads(FLAGS_server_threads); |
|
|
|
|
server_config.set_enable_ssl(FLAGS_enable_ssl); |
|
|
|
|
server_config.set_use_tls(FLAGS_use_tls); |
|
|
|
|
|
|
|
|
|
// If we're running a sync-server streaming test, make sure
|
|
|
|
|
// that we have at least as many threads as the active streams
|
|
|
|
|