One of the huge advantages is that you can isolate work, so that different threads don't interfere with each other (this is huge for performance).
On Wed, Apr 5, 2017, 1:36 AM <2012...@gmail.com> wrote: > hi, > why is async server thread model not like sync server thread model that > can use threadpool? what is the benefit of let user provide thread model? > > thanks~ > > 在 2016年2月17日星期三 UTC+8上午8:14:53,Vijay Pai写道: > >> Hello, >> Yes, you need to provide your own thread pool for the async model if you >> want multithreaded RPC processing of RPCs. The most straightforward >> example, IMO, is in test/cpp/thread_stress_test.cc . >> >> On Friday, February 12, 2016 at 2:14:49 PM UTC-8, douy...@gmail.com >> wrote: >>> >>> I suppose what you said is about sync server only. What about Async >>> server threading model? Do we need to have our own thread pool when we use >>> Async server? If so, is there an example we can follow? >>> >> >> Yes, you need to provide your own thread pool for the async model if you >> want multithreaded processing of RPCs and/or responses. The most >> straightforward example, IMO, is in test/cpp/end2end/thread_stress_test.cc >> . There are more complex examples in test/cpp/qps/*async.cc as well. >> >> The helloworld greeter_async_server example is single threaded, and when >>> I added multi-threads to handle cq, it doesn't work some times (hitting >>> server.cc:442 assertion error with GRPC_CALL_ERROR_TOO_MANY_OPERATIONS). >>> >> >> I'm going to followup on your other message at >> https://groups.google.com/forum/#!topic/grpc-io/yCzzroDbPa0 as I think >> you're describing your issue as a case of mixing sync and async. >> >> >>> >>> On Wednesday, February 10, 2016 at 11:24:18 PM UTC-8, Vijay Pai wrote: >>>> >>>> Hi there, >>>> The sync server threading model is implemented (currently) in various >>>> files in src/cpp/server . The essential idea is that there are many ways to >>>> implement the abstract base class ThreadPoolInterface. This is internal to >>>> the gRPC C++ implementation and not directly accessible by the user-level >>>> API. The implementation in current use is class DynamicThreadPool . This >>>> thread pool reacts to new work (RPCs to service) by keeping a certain >>>> number of threads in reserve (based on the number of cores), spawning new >>>> threads if the currently created threads are all in use, and freeing >>>> threads once the work is done and we have too many threads lying around (> >>>> the reserved count). >>>> >>>> These are the basic ideas, but the details of the thread-pool >>>> implementation may change as versions of gRPC C++ evolve. >>>> >>>> Best regards, >>>> Vijay >>>> >>>> On Wed, Feb 10, 2016 at 11:11 PM Poojitha A <pooji...@gmail.com> wrote: >>>> >>>>> Hi Craig, >>>>> >>>>> When you say "*The C++ server has two threading models available: >>>>> sync and async. Most users will want to use the sync model: the server >>>>> will >>>>> have an (internal) threadpool that manages multiplexing requests onto some >>>>> number of threads (reusing threads between requests). "* >>>>> >>>>> Could you please be more specific as in how does the multiplexing >>>>> happen and how the server spaws the threads? >>>>> >>>>> Any details on this please >>>>> >>>>> On Tue, Feb 2, 2016 at 5:17 PM, 'Craig Tiller' via grpc.io < >>>>> grp...@googlegroups.com> wrote: >>>>> >>>>>> My expectation is that C# should be seeing performance similar to >>>>>> Java. We've not done any serious benchmarking yet, but we expect to soon >>>>>> - >>>>>> and when that happens I expect there'll need to be some tuning made to >>>>>> the >>>>>> stack. But C# performance is something we care about. >>>>>> >>>>>> On Tue, Feb 2, 2016 at 5:14 PM Luke Mauldin <lukem...@gmail.com> >>>>>> wrote: >>>>>> >>>>>>> Craig, >>>>>>> >>>>>>> Thank you very much for the answer and for providing a roadmap of >>>>>>> what to expect in upcoming releases. Have there been any medium-scale >>>>>>> concurrent tests done on the C# server? I am concerned that the Grpc >>>>>>> C++ >>>>>>> server might receive more attention, have greater stability, and offer >>>>>>> substantially greater performance than the C# server since Google has >>>>>>> preferred C++ to C# in the past. For Grpc, is C#'s server >>>>>>> implementation >>>>>>> considered "first class" as compared to C++, Java, etc...? >>>>>>> >>>>>>> Luke >>>>>>> >>>>>>> On Tue, Feb 2, 2016 at 6:50 PM Craig Tiller <cti...@google.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Hey, >>>>>>>> >>>>>>>> Great question! >>>>>>>> >>>>>>>> The C++ server has two threading models available: sync and async. >>>>>>>> Most users will want to use the sync model: the server will have an >>>>>>>> (internal) threadpool that manages multiplexing requests onto some >>>>>>>> number >>>>>>>> of threads (reusing threads between requests). The async model allows >>>>>>>> you >>>>>>>> to bring your own threading model, but is a little trickier to use - in >>>>>>>> that mode you request new calls when your server is ready for them, and >>>>>>>> block in completion queues while there is no work to do. By arranging >>>>>>>> when >>>>>>>> you block on the completion queues, and on which completion queues you >>>>>>>> make >>>>>>>> requests, you can arrange a wide variety of threading models. >>>>>>>> >>>>>>>> We're working on exposing some knobs to control the behavior of the >>>>>>>> synchronous thread pool. I expect to start seeing those changes hit the >>>>>>>> codebase in the next 4-6 weeks, depending on where our priorities land. >>>>>>>> >>>>>>>> The C# server is similar to the synchronous mode of C++, mixed with >>>>>>>> C#'s excellent async capabilities so that a request doesn't always >>>>>>>> take up >>>>>>>> a thread if there's no processing on it. >>>>>>>> >>>>>>>> Hope this helps, >>>>>>>> Craig >>>>>>>> >>>>>>>> On Thursday, January 28, 2016 at 6:13:51 AM UTC-8, >>>>>>>> lukem...@gmail.com wrote: >>>>>>>>> >>>>>>>>> What is the GRPC server threading model? For example, if I write >>>>>>>>> a GRPC C++ server, will GRPC automatically spawn multiple threads (or >>>>>>>>> use >>>>>>>>> an eventing model) to handle multiple simultaneous client requests? >>>>>>>>> Are >>>>>>>>> there any configuration parameters I can modify that will impact the >>>>>>>>> number >>>>>>>>> of supported simultaneous client connections? >>>>>>>>> Also, are there any differences in the GRPC server threading model >>>>>>>>> used in a C++ server vs a Csharp server? >>>>>>>>> >>>>>>>>> Luke >>>>>>>>> >>>>>>>> -- >>>>>> 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+u...@googlegroups.com. >>>>>> To post to this group, send email to grp...@googlegroups.com. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/grpc-io/CAAvp3oNpg%2ByVCdAJFfcg8s_gUvotdPB4nzV0H8%2BA87wkPjkVzw%40mail.gmail.com >>>>>> <https://groups.google.com/d/msgid/grpc-io/CAAvp3oNpg%2ByVCdAJFfcg8s_gUvotdPB4nzV0H8%2BA87wkPjkVzw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>>>> 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+u...@googlegroups.com. >>>>> To post to this group, send email to grp...@googlegroups.com. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/grpc-io/CAE-QhELXVwEAtK%2BiM5Yywx-uk6vC5pjN5Ow1tMWxU2KxMrkZ2g%40mail.gmail.com >>>>> <https://groups.google.com/d/msgid/grpc-io/CAE-QhELXVwEAtK%2BiM5Yywx-uk6vC5pjN5Ow1tMWxU2KxMrkZ2g%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> -- 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 post to this group, send email to grpc-io@googlegroups.com. Visit this group at https://groups.google.com/group/grpc-io. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/CAAvp3oNp97vFwPyKz477eozJA08CohSAx-1Lvd5jF6c5xJobhg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
smime.p7s
Description: S/MIME Cryptographic Signature