[omniORB] Bad performance with oneway invocation - UNDERSTOOD
Serguei Kolos
Serguei.Kolos at cern.ch
Tue Jul 22 20:15:30 BST 2003
Hello all
Serguei Kolos wrote:
>
> But the bad thing is that the problem with oneway calls still exist
> somewhere :-( (I hope not only in my mind)
>
U-u-u-u-u-u-u-u-u-u-u-u-ffff.
I spent several days trying to solve the oneway call issue and ... I GOT IT.
The problem is connected to the fact that the GIOP_S::SendReply function
throws the terminateProcessing exception for the oneway calls. The
execution
of this exception takes enormous time. Don't ask me why, may be it is
compiler
bug (I'm using gcc 3.2), may be it must be so - I don't know.
But the good news are that when I changed the line 626 in the
GIOP_S::SendReply
from
if (!response_expected()) throw terminateProcessing();
to
if (!response_expected()) return;
everything starts working as I expected. The CPU consumption on server
gets in order
now. The time for the oneway call (measured on a client side) improved
by a factor of 5.
I'm not sure that simply replacing the exception with the return is a
correct solution. If it isn't
could some one figure out the best way of getting rid of this nasty
exception.
Cheers
Sergei
PS: I would recommend to everybody to use excellent Valgrind and
Kcachegrind tools, which
I used to locate a problem. Without them it would be completely
impossible. (this is not an advertisement)
Link:
http://kcachegrind.sourceforge.net/
More information about the omniORB-list
mailing list