Check out the QPS Driver code:
https://github.com/grpc/grpc/tree/master/test/cpp/qps
make qps_json_driver
Then you can run different scenarios by invoking bins/opt/qps_json_driver --scenarios_json <scenario>
A scenario that might work well for you would be:
'{"scenarios":[{"spawn_local_worker_count":-6,"name":"generated", "warmup_seconds": 30, "benchmark_seconds": 120, "num_servers": 1, "server_config": {"async_server_threads": 31, "security_params": null, "server_type": "ASYNC_SERVER"}, "num_clients": 5, "client_config": {"client_type": "ASYNC_CLIENT", "security_params": null, "payload_config": {"simple_params": {"resp_size": 1024, "req_size": 1024}}, "client_channels": 31, "async_client_threads": 31, "outstanding_rpcs_per_channel": 100, "rpc_type": "UNARY", "load_params": {"closed_loop": {}}, "histogram_params": {"max_possible": 60000000000.0, "resolution": 0.01}}}]}'
That involves 5 clients being served by a single server. But you can play around with all of the above knobs