thanks Mark, parallelizing is not an option for my project. As I initially mentioned this project is conversion of CORBA IPC into GRPC whereas CORBA able to complete 1000 RPCs in 1 second vs 10 seconds in GRPC.
I will send GRPC logs with TCP enabled soon; If you prefer wireshark, i need to learn the tool usage and send it later. On Friday, September 3, 2021 at 9:58:02 PM UTC+5:30 Mark D. Roth wrote: > I don't see anything obviously wrong with your code. > > Since this test is sending RPCs serially instead of in parallel, it's > possible that there are too many network round-trips happening here, each > one of which would increase latency because the next operation is blocking > on the previous one. Can you try running with the environment variables > GRPC_VERBOSITY=DEBUG > GRPC_TRACE=tcp? Or, alternatively, getting a wireshark capture of the > network communication? That might help us see how many round-trips are > happening here. > > You might also consider whether sending a bunch of RPCs serially is > actually a realistic benchmark for your production workload. You might get > better performance by parallelizing the requests from the client. > > On Fri, Sep 3, 2021 at 2:29 AM Sureshbabu Seshadri <sureshb...@gmail.com> > wrote: > >> Thanks Mark. The below link has source code of my sample, please let me >> know if you need any other information to analyze >> >> >> https://drive.google.com/file/d/12PH65OYwflaPBpa2a-yMcBqSE3xYX9S-/view?usp=sharing >> >> >> On Thursday, September 2, 2021 at 3:45:04 AM UTC+5:30 Mark D. Roth wrote: >> >>> I'm so sorry for not responding sooner! For some reason, gmail >>> tagged your messages as spam, so I didn't see them. :( >>> >>> On Fri, Aug 27, 2021 at 10:55 PM Sureshbabu Seshadri < >>> sureshb...@gmail.com> wrote: >>> >>>> Dear GRPC team, >>>> Can any one help on this? >>>> >>>> On Friday, August 13, 2021 at 12:53:21 PM UTC+5:30 Sureshbabu Seshadri >>>> wrote: >>>> >>>>> Mark, >>>>> Please find the grpc ttrace logs in the following link >>>>> https://drive.google.com/file/d/15y7KzyCtIeAoYSUzyPHpY4gcr7uUnIP0/view?usp=sharing >>>>> >>>>> I am not able to upload files directly here. Please note that the >>>>> profiling is done for same API called in loop for 1000 times and let me >>>>> know. >>>>> >>>>> On Thursday, August 12, 2021 at 11:27:16 AM UTC+5:30 Sureshbabu >>>>> Seshadri wrote: >>>>> >>>>>> Thanks Mark, my current profile does not include channel creation >>>>>> time. Profiling is only applicable for RPC calls. >>>>> >>>>> >>> Note that when you first create a gRPC channel, it does not actually do >>> any name resolution or connect to any servers until you either explicitly >>> tell it to do so (such as by calling channel->WaitForConnected(gpr_ >>> inf_future(GPR_CLOCK_MONOTONIC))) or send the first RPC on it. So if >>> you don't proactively tell the channel to connect but start counting the >>> elapsed time right before you send the first RPC, then you are actually >>> including the channel connection time in your benchmark. >>> >>> From the trace log above, though, it seems clear that the problem you're >>> seeing here is not actually channel startup time. The channel starts to >>> connect on this line: >>> >>> I0812 21:30:17.760000000 5748 resolving_lb_policy.cc:161] >>> resolving_lb=000001EBA08F00D0: starting name resolution >>> >>> >>> And it finishes connecting here: >>> >>> I0812 21:30:17.903000000 44244 client_channel.cc:1362] >>> chand=000001EBA08F35B0: update: state=READY picker=000001EBA0900B70 >>> >>> >>> So it took the channel only 0.143 seconds to get connected, which means >>> that's probably not the problem you're seeing here. >>> >>> Once it did get connected, it looks like it took about 8 seconds to >>> process 1000 RPCs, which does seem quite slow. >>> >>> Can you share the code you're using for the client and server? >>> >>> >>> >>>> We have an existing code base for IPC which uses CORBA architecture and >>>>>> we are trying to replace it with GRPC, similar sample in CORBA completes >>>>>> quickly that is 1000 RPCs are completed within 2 seconds in same >>>>>> network. >>>>>> Hence this is kind of roadblock for our migration. >>>>>> >>>>>> I will execute test with traces enabled and share the logs ASAP >>>>>> >>>>>> On Wednesday, August 11, 2021 at 10:38:48 PM UTC+5:30 Mark D. Roth >>>>>> wrote: >>>>>> >>>>>>> You can check to see whether the problem is a channel startup >>>>>>> problem or a latency problem by calling >>>>>>> channel->WaitForConnected(gpr_inf_future(GPR_CLOCK_MONOTONIC)) >>>>>>> before you start sending RPCs on the channel. That call won't return >>>>>>> until >>>>>>> the channel has completed the DNS lookup and established a connection >>>>>>> to >>>>>>> the server, so if you start timing after that, your timing will exclude >>>>>>> the >>>>>>> channel startup time. >>>>>>> >>>>>>> If you see that the channel startup time is high but the RPCs flow >>>>>>> quickly once the startup time is passed, then the problem is either the >>>>>>> DNS >>>>>>> lookup or establishing a connection to the server. In that case, >>>>>>> please >>>>>>> try running with the environment variables GRPC_VERBOSITY=DEBUG >>>>>>> GRPC_TRACE=client_channel_routing,pick_first and share the log, so >>>>>>> that we can help you figure out which one is the problem. >>>>>>> >>>>>>> If you see that the channel startup time is not that high but that >>>>>>> the RPCs are actually flowing more slowly over the network, then the >>>>>>> problem might be network congestion of some sort. >>>>>>> >>>>>>> Also, if the problem does turn out to be channel startup time, note >>>>>>> that it probably won't matter much in practice, as long as your >>>>>>> application >>>>>>> creates the channel once and reuses it for all of its RPCs. We do not >>>>>>> recommend a pattern where you create a channel, send a bunch of RPCs, >>>>>>> then >>>>>>> destroy the channel, and then do that whole thing again later when you >>>>>>> need >>>>>>> to send more RPCs. >>>>>>> >>>>>>> I hope this information is helpful. >>>>>>> On Sunday, August 8, 2021 at 9:34:43 AM UTC-7 sureshb...@gmail.com >>>>>>> wrote: >>>>>>> >>>>>>>> *Environment* >>>>>>>> >>>>>>>> 1. Both client and server are C++ >>>>>>>> 2. Server might be running either locally or in different system >>>>>>>> 3. In case of remote server, it is in same network. >>>>>>>> 4. Using SYNC C++ server >>>>>>>> 5. Unary RPC >>>>>>>> >>>>>>>> Our performance numbers are very low for running 1000 RPC calls >>>>>>>> (continuous calls through loop for testing) it takes about 10 seconds >>>>>>>> when >>>>>>>> server running in different PC. >>>>>>>> >>>>>>>> The client creates channel using *hostname:portnumber *method and >>>>>>>> using this approach the local server were also taking similar 10 >>>>>>>> seconds >>>>>>>> for 1000 calls. Later we modified channel creation for local server by >>>>>>>> using *localhost:port *then it was much improved performance, all >>>>>>>> the 1000 calls completed within 300 ms. >>>>>>>> >>>>>>>> Based on the above test, we strongly believe DNS resolution seems >>>>>>>> to cause slow performance as change hostname to localhost results in >>>>>>>> huge >>>>>>>> performance gain, however that is not possible for servers running on >>>>>>>> different PC. >>>>>>>> >>>>>>>> Can someone help with this? Is DNS the real culprit or what else >>>>>>>> can be changed to get good performance throughput in this case. >>>>>>>> >>>>>>>> Please let me know if there any other input required for this. >>>>>>>> >>>>>>> -- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "grpc.io" group. >>>> To unsubscribe from this topic, visit >>>> https://groups.google.com/d/topic/grpc-io/pD3HiDvxymY/unsubscribe. >>>> To unsubscribe from this group and all its topics, send an email to >>>> grpc-io+u...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/grpc-io/66ff211a-e86f-47ff-9583-b423877b8f02n%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/grpc-io/66ff211a-e86f-47ff-9583-b423877b8f02n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> >>> >>> -- >>> Mark D. Roth <ro...@google.com> >>> Software Engineer >>> Google, Inc. >>> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "grpc.io" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/grpc-io/pD3HiDvxymY/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> grpc-io+u...@googlegroups.com. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/grpc-io/f010b3e1-8554-4c39-a086-a0741e4f7d12n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/grpc-io/f010b3e1-8554-4c39-a086-a0741e4f7d12n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > > > -- > Mark D. Roth <ro...@google.com> > Software Engineer > Google, Inc. > -- 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 grpc-io+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/50c98f17-fdee-4e33-bbc1-dbd4d77897fdn%40googlegroups.com.