Hi Sam,
See below:

Samuel LIU wrote:
Just got back.

In my test, each client is a java process, not thread. So each client needs to initiate client stubs.
That is OK, but make sure you re-use the client stubs once they are created.
Based on your suggestion, I changed my test using java threads. then I saw consistent responses from server.
Can you define consistent?
However, the number of threads at server side did not change regardless how 
many simultaneous threads I created. The number is 72.
That sounds like a lot of threads, certainly more than I usually see active in a container. The number of threads in my case increases and decreases from some 30 to 50 based on load when using GT4.0.4 Java WS-Core.
Whether to use process or thread to do this test is based on the realistic environment that this test wants to simulate.
Right, but if you reuse the client stubs, you are only being penalized for the first message, afterwhich things should run much quicker.
I think process is the correct way to go. That is, we have to assume that each JVM is on a different machine.
That is OK, actually much better, as the client side is quite expensive, and there would be little benefit beyond a few threads per CPU.
I still don't understand why using java processes caused so much delay at 
server side.
Can you be more specific?  What is "much delay"?
BTW, I did not draw any conclusion saying that only 2 threads were there at 
server processing requests. I posted it as a question.
Aha, ok. Can you do a little experiment that will for sure give you the number of threads that are servicing the GT4 container? Implement the simplest WS that has a single function, say "sleep" which takes an argument a long value. Now, invoke from the client, the "sleep 60000", which should make the service side sleep for 60 seconds upon receiving this call. Now, start 50 parallel clients (in separate processes or separate threads, it doesn't matter), and send the sleep 60000 WS call as fast as possible from all clients. You should print out a statement right before each send so you know that all 50 client requests were submitted, and then you should print out a message saying that the WS call was successfully sent. Now, assuming that you have X threads servicing WS calls on the GT4 container, you will see exactly X print statements that the sleep 60000 was completed roughly 60 seconds after they are submitted. After 120 seconds, you will see another X print statements, and so on... until you either reach some timeouts, or all 50 requests are completed. That value X is the number of threads that are servicing the GT4 web service requests. That number X should also correspond to the number listed in your config file for the GT4 container. Other than doing this experiment, the only other thing I can suggest is to run some tests showing the performance and load on the service, and send us the logs or graphs so we can take a look at them.
Good luck,
Ioan

Thanks,
Sam.

----------------------------------------
Date: Wed, 23 Jan 2008 17:35:41 -0600
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
CC: [email protected]
Subject: Re: [gt-user] WS Core containerThreads not working

I don't see how you came to the conclusion that only 2 service threads are running in the container. Also, the performance will also depend on whether or not you are reusing port stubs, as the first invocation is extremely expensive as opposed to subsequent invocations. Here are some throughput numbers I obtained a while back using GT4.0.4 on a dual Xeon 3GHz with HT and 32 client nodes and 20 threads at the container:

    * no security: 500 WS calls per sec
    * GSISecureConversation: 204 WS calls per sec
    * GSITransport: 65 WS calls per sec

There are also different settings for each security mechanism, such as encryption and integrity checks, which can affect performance. The number above (for the 2 security cases) are with encryption.

I heard that GT4.1.x and GT4.2.x are using persistent sockets, which hurt the performance of the GSITransport. I expect the GSITransport to be significantly better in the latest GT version. Another thing to remember is that these numbers reflect the re-use of port stubs on the client side. Without re-using the port stubs, my intuition says that the throughput would be one to two orders of magnitude lower, but I haven't actually measured it to know for sure. In conclusion, you think that you only have 2 threads servicing the WS calls at the GT4 container. I believe your tests are inconclusive based on what you described so far. Can you be more specific on the tests and results you have done, which leads you to believe that there are only 2 threads (when in fact you have set it higher)?

Ioan
Samuel LIU wrote:
0.8sec is in -nosec scenario. Yes, in this scenario, I could not infer the 2 
container thread limit. However, when I enabled signing and encryption on the 
communication channel (GSI Transport) or messages (GSI Secure Conversation), I 
could see the obvious delays among request processing at server side: 2 
responses at a time and interleaved by about 10 seconds. Client side overhead 
was ruled out by comparing starting timestamps.

My purpose of conducting this test is to measure service invocation overhead 
given different security options: no security, channel level, or message level. 
The performance of my service code has been tested separately.

Thanks,
Sam.

----------------------------------------
Date: Wed, 23 Jan 2008 14:39:06 -0600
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
CC: [email protected]
Subject: Re: [gt-user] WS Core containerThreads not working

If you have such short requests that they can be handled in 0.8 sec, then how do you know that there are only 2 at a time being serviced? Here is the test I would do to see how many threads are really running. In the service code, add a sleep 60 sec call... and on the client, start as many threads, which is hopefully larger than what you set as a max on the GT4 container, something on the order of O(100s), and invoke the service as fast as possible from all client threads. If for example you had a max of 50 threads set on the GT4 container, you would see after 60 seconds that 50 invocations were completed successfully, then after another 60 sec, another 50 invocations, etc... if indeed you only have 2 threads, then you would see only 2 at a time every 60 sec. Now, about seeing performance difference in your own code (without the sleep 60) as you increase the number of threads, it all depends on your specific code and what the client/service are doing. Also, from my experience, the client side is generally more heavy weight that the service side... which means that you will need multiple concurrent clients to generally saturate a given service.
Ioan

Samuel LIU wrote:
I am trying to test the service response time of a Grid service I wrote given 
different request rate. By default, WS Core sets initial thread number to be 2. 
When I started globus container w/ -nosec, I could not see much difference. All 
requests were served within 0.8 sec. However, when I started container with GSI 
Transport or GSI Secure Conversation settings, I could see clearly two requests 
were served at a time.

The problem is: based on gt4 doc, when I changed thread settings to:

and restarted container, I saw no difference: still 2 requests were accepted at 
one time, then another 2, ...

Can anyone suggest what went wrong? I am using globus 4.0.5 on a CentOS machine.
Thanks,
Sam.
_________________________________________________________________
Climb to the top of the charts! Play the word scramble challenge with star 
power.
http://club.live.com/star_shuffle.aspx?icid=starshuffle_wlmailtextlink_jan

--
==================================================
Ioan Raicu
Ph.D. Candidate
==================================================
Distributed Systems Laboratory
Computer Science Department
University of Chicago
1100 E. 58th Street, Ryerson Hall
Chicago, IL 60637
==================================================
Email: [EMAIL PROTECTED]
Web:   http://www.cs.uchicago.edu/~iraicu
http://dev.globus.org/wiki/Incubator/Falkon
http://www.ci.uchicago.edu/wiki/bin/view/VDS/DslCS
==================================================
==================================================


_________________________________________________________________
Need to know the score, the latest news, or you need your HotmailĀ®-get your 
"fix".
http://www.msnmobilefix.com/Default.aspx

_________________________________________________________________
Need to know the score, the latest news, or you need your HotmailĀ®-get your 
"fix".
http://www.msnmobilefix.com/Default.aspx

--
==================================================
Ioan Raicu
Ph.D. Candidate
==================================================
Distributed Systems Laboratory
Computer Science Department
University of Chicago
1100 E. 58th Street, Ryerson Hall
Chicago, IL 60637
==================================================
Email: [EMAIL PROTECTED]
Web:   http://www.cs.uchicago.edu/~iraicu
http://dev.globus.org/wiki/Incubator/Falkon
http://www.ci.uchicago.edu/wiki/bin/view/VDS/DslCS
==================================================
==================================================


Reply via email to