The new call CQ is for the initial tag identifying the new call's 
initiation. The call CQ is for further operations on that call (like 
Read/Write/Finish). You can use the same CQ for both and that is probably 
the most common/recommended configuration.

Factors for selecting CQ count: in almost all cases, you should use 1 CQ 
for the entire server. This is the best for efficiency and avoiding work 
stranding, as long as your CQ processing thread is able to process any type 
of tag that comes back. Some of our performance benchmarks use a separate 
CQ for each CQ processing thread just to avoid CQ contention in the extreme 
cases, but that's not a major factor except in a very small number of 
cases. Generally the advice is to use 1 CQ for the whole server.

On Sunday, April 12, 2020 at 10:38:33 AM UTC-7 [email protected] wrote:

> I'm learning gRPC and when I was checking asynchronous servers, I noticed 
> that a call for obtaining gRPC requests like:
>
> "service_->RequestSayHello(&ctx_, &request_, &responder_, new_call_cq_, 
> notification_cq_, this);"
>
> takes 2 completion queues as input. From their name, it seems that they 
> are for finding getting new calls and for notifications separately. I have 
> seen that same queue is used as for both, but is there any benefit for 
> using 2 different queues for each one?
>
> In addition, what factors are important for selecting number of completion 
> queues? Should I select 1 per service or 1 per rpc call? or use other 
> factors such as selecting 1 for a highly accessed service?
>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/99eb70de-6976-462c-8c18-7a93476de12d%40googlegroups.com.

Reply via email to