We have been working on a pub/sub project using gRPC in C++, we are publish messages to gRPC server with unary RPC, and receive the message with server streaming RPC call. We implement the server with cq-based async way, just like the qps test server in grpc repo, and the client will issue the unary RPC with a fix interval. We run the test on a 48 core server machine with CPU E5-2650 2.20gHZ.
perf test repo
We have seen a wired performance result with throughput: there will be a performance drop when we increase the client RPC issue rate:
Throughput reesult
We also observe that some “default-executor” threads occupys CPU when this happens, and when these threads remains calm, there will be no such drop:
No Performance Drop.
Performance Drop.
We are confusing about why these threads will interfere our cq working threads (pubhandleRPCT). Is that a good explanation for this performance drop?
P.S., we are aware that gRPC has deco the “default-executor” and use “Event-Engine” in the latest version, but we cannot get the same performance result using the latest gRPC version with Event Engine. Why there is a drop with event engine in 1.62 vs default executor in 1.55?
Yunhao Bai is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.