Re: POA threading - more details
Dion Picco <[email protected]> Thu, 29 Sep 2005 16:11:22 -0230
| Newsgroups | gmane.comp.corba.orbacus |
|---|---|
| Organization | IONA | Making Software Work Together TM |
| Message-ID | <[email protected]> |
Hi Erez, On Thu, Sep 29, 2005 at 08:25:48PM +0300, Erez Hadad wrote: > Hi Dion, > > Your answer does seem to be the right explanation. Thank you. > Still, because of the large throughput difference, I would just like to > verify the following, so please bear with me: Does ORBacus discriminate in > any way between its own threads and "outsider" threads, e.g. in the form of > thread-local storage, priority, etc.? > > I have one more question regarding throughput using a thread pool: > Consider the following scenario (in JOB-4.1.3/JDK-1.4.2/Linux): A server is > processing multiple concurrent CPU-bound requests from remote clients > (non-collocated) using a thread pool model. Is it likely (and why) that the > server throughput would drop if the client load (number of concurrent > requests) is considerably lower or considerably higher than the thread pool > size? I noticed these phenomena in my tests. > > Best reagrds, > Erez Hadad Orbacus does differentiate its own JTC threads from non-JTC threads with regards to TSS. Any threads making requests to the ORB MUST be JTC threads. These JTC threads are implemented using the OS-specific mechanism however and are treated the same in the system. The JTC is a great multi-threaded library that our customers can use for their own needs as its cross-platform and greatly simplifies many of the constructs needed for MT programming (as well as closly mimicking the Java implementation). If you have a thread-pool of size N, then it can only handle up to N requests at once. The other thing to remember is that a single thread within the client can only invoke a single operation at once. If my client only has 3 threads making requests but my thread-pool is size 10, then basically 7 threads are being unused in the thread-pool at all times. Likewise if my client has 20 threads making requests, only 10 can be serviced at a time due to the limit of the number of worker threads in the pool. So if you drop the number of concurrent requests in your client, then the overall server throughput will drop since it has left-over worker threads being unused. If you increase the workload in the client, then the thread-pool on the server should max out at some throughput above which it just cannot reach. In order to shed some more light though I would need to see some concrete data (calls/sec, bytes/sec, etc) to cross-reference. Cheers. -- Dion Picco, Software Engineer IONA Technologies Inc. Team Orbacus - Your CORBA Source mailto:[email protected] http://www.orbacus.com _______________________________________________ OB-Users Mailing List - [email protected] http://mail.ooc.nf.ca/mailman/listinfo/ob-users Visit our support FAQ before you send a message. http://www.orbacus.com/faq/support.html