Hi,
We are evaluating grpc for serving 4k-16k payload and saturating the network while doing so. It's a simulation to model, what would be our typical workload. We compared this scenario with iperf3 with 16k size and found that iperf was able to saturate the n/w in multiple runs consistently where as with same payload grpc was not able to saturate even 1/4 the available bandwidth.
I was wondering is this is expected or we are doing something wrong. I know comparing iperf with grpc is not really apples to apples although we want to ensure that grpc will support the workload and won't be a bottle neck.
We have tried all the implementations on the server unary, async with call back and async with completion queues with no major difference. We haven't tried streaming yet.
One thing to note is if the size of the payload increases to 1MB we are able to saturate the same benchmark.
I have even tried flatbuffer's(sync) to see if it helps instead of default protobuf without any luck.
Any advice would be greatly appreciated. Are we measuring it wrong or is there is any expected performance drop. Also if there is a way to debug this further that would be appreciated as well.
Are there any existing benchmarks which we can run to simulate this behavior?
Thanks and regards,
Mandar