Hi,
Apologies for my silence in the last couple of days. I have been busy...
On Sat, 24 Nov 2001, marc fleury wrote:
> Ok so if I read your stuff correctly what you mean by "RMI/IIOP" semantics
> is enforcing that we work from IOR all the time, ie. serialized
> representations of invocations. It is as if we were using "MO.get()" in the
> optimized stack, WHICH WE DO if for example the cl test we were talking
> about the other day fails.
Yes.
> You are saying removing the network give a speed of 2. I want to see MO vs
> the same serialization both without the stack.
Ok, now I got some new numbers. But they are so counter-intuitive I feel
uneasy about posting them. (Did I screwed something up bigtime?)
Well, even at the risk of looking ridiculous, I am attaching to this
message a text file with my new numbers. (To view it you need a text
window with at least 97 columns.) I am about to commit to contrib/iiop the
code I used to get these numbers, so anyone can look if there is something
wrong in it. This will also allow me to tell you precisely (by referring
to the code) what changed in each measurement.
Anyway, these numbers show that:
- My IIOP stuff does not like the multithreaded testcases of the bank
suite. This might be a problem in JacORB, I do not know yet. I played
with the jacorb.poa.thread_pool_max parameter in an attempt to make
things better, but had very small success here. On the other hand, the
IIOP stuff outperforms the JRMP code in RH on _all_ other bank testcases.
- A local call path buys me nothing. This is very counter-intuitive!
A possible reason could be that my local call path is superfluous
because JacORB provides one such path anyway, but I still have to
check if this is true or not.
- MarshalledObjects are bad. Maybe not as bad as the numbers I posted
last week might have suggested, but they're bad anyway.
- Having getHandle()/getHomeHandle() implementations in the IIOP stubs
makes a great difference. I could reproduce last week's bad numbers
only by disabling the stub implementations of these methods. This was a
big surprise for me, as the bank testsuite does not explicitly call
getHandle(). It appears that the object pooling code makes a lot of
getHandle() calls.
- The performace penalty of param/result copying (to get proper RMI/IIOP
semantics on the local call path) is very small in the bank testcases.
Cheers,
Francisco
Times in seconds, on a PII 400MHz w/ 256M RAM
running Linux kernel 2.2.19
and Sun JDK 1.3.1 build 1.3.1-b24
RH main IIOP IIOP IIOP IIOP IIOP IIOP
IIOP IIOP
(JRMP LP LP LP LP LP no LP no
LP no LP
LP no CP no CP CP no CP CP
no CP) no MO no MO no MO MO MO no MO
MO MO
(1) (2)
(3)
testTeller 19.983 20.452 20.590 19.562 23.422 23.879 20.374
22.401 31.356
testBank 1.001 0.395 0.507 0.527 1.421 1.517 0.497
1.340 1.340
testMultiThread 178.551 888.022 874.585 888.838 905.898 942.769 891.106
909.519 1868.587
testMultiThread2 173.741 885.955 880.567 896.045 926.035 952.402 899.614
947.406 1856.483
testTransaction 10.041 5.837 6.975 5.593 8.796 9.054 6.009
8.993 11.095
testTransfer 14.304 13.343 13.354 14.570 18.557 18.878 12.555
16.646 84.310
testReadOnly 85.222 8.781 8.593 8.227 58.318 59.394 9.671
58.349 62.116
testPassivation 5.454 7.282 6.402 7.136 6.760 6.762 6.399
7.092 7.434
testFinder 43.323 13.537 11.713 12.349 59.452 59.249 12.534
58.291 62.631
testServerFound 38.240 6.459 5.754 6.295 53.620 53.398 6.304
52.409 56.642
- LP x no LP: Local call path enabled (LP) or disabled (no LP)
- CP x no CP (just for the LP case): copy parameters and return value
to get proper RMI/IIOP semantics (CP) or just pass references
around (no CP)
- MO X no MO: IORs of entity beans contain a MarshalledObject wrapping the
entity bean's PK (MO) or contain a custom serialization of the
PK (no MO)
- except for column (3), the methods getHandle()/getHomeHandle() are
implemented directly in the IIOP stubs and hence never reach the container
(1) - jacorb.poa.thread_pool_max=100
(2) - jacorb.poa.thread_pool_max=200 at this column and at the following ones
(3) - disabled implementation of getHandle/getHomeHandle in the stubs