|  | @@ -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(),
 |