|
|
|
@ -145,6 +145,10 @@ def _ping_pong_scenario(name, rpc_type, |
|
|
|
|
|
|
|
|
|
if unconstrained_client: |
|
|
|
|
outstanding_calls = outstanding if outstanding is not None else OUTSTANDING_REQUESTS[unconstrained_client] |
|
|
|
|
# clamp buffer usage to something reasonable (16 gig for now) |
|
|
|
|
MAX_MEMORY_USE = 16 * 1024 * 1024 * 1024 |
|
|
|
|
if outstanding_calls * max(req_size, resp_size) > MAX_MEMORY_USE: |
|
|
|
|
outstanding_calls = max(1, MAX_MEMORY_USE / max(req_size, resp_size)) |
|
|
|
|
wide = channels if channels is not None else WIDE |
|
|
|
|
deep = int(math.ceil(1.0 * outstanding_calls / wide)) |
|
|
|
|
|
|
|
|
@ -241,6 +245,18 @@ class CXXLanguage: |
|
|
|
|
async_server_threads=1, |
|
|
|
|
secure=secure) |
|
|
|
|
|
|
|
|
|
for size in geometric_progression(1, 1024*1024*1024+1, 8): |
|
|
|
|
yield _ping_pong_scenario( |
|
|
|
|
'cpp_protobuf_%s_%s_qps_unconstrained_%s_%db' % (synchronicity, rpc_type, secstr, size), |
|
|
|
|
rpc_type=rpc_type.upper(), |
|
|
|
|
req_size=size, |
|
|
|
|
resp_size=size, |
|
|
|
|
client_type='%s_CLIENT' % synchronicity.upper(), |
|
|
|
|
server_type='%s_SERVER' % synchronicity.upper(), |
|
|
|
|
unconstrained_client=synchronicity, |
|
|
|
|
secure=secure, |
|
|
|
|
categories=[SWEEP]) |
|
|
|
|
|
|
|
|
|
yield _ping_pong_scenario( |
|
|
|
|
'cpp_protobuf_%s_%s_qps_unconstrained_%s' % (synchronicity, rpc_type, secstr), |
|
|
|
|
rpc_type=rpc_type.upper(), |
|
|
|
|