Hi all,
I'm using gRPC to communicate between a go and C++ process running on the same node. The C++ process hosts the gRPC server and the go process is the client. The go process makes a lot of gRPC calls hosted by the gRPC server in the C++ process in a blocking manner.
I collected a CPU profile (see below) of the go process and I see that about 50% of CPU is spent in gRPC. Out of which, only about 20% is spent in I/O. I assume that the remaining 30% is spent in marshalling/unmarshalling the messages. Given that all the communications is going to be limited to just one node, is there any way that I could tune gRPC to get better performance? For example, is there a way to avoid the overhead in constructing HTTP2 messages? Essentially, what I'm looking for is a way to use gRPC for Inter Process Communication.

Thanks,
--Gautham