[omniORB] Bad performance with oneway invocation - UNDERSTOOD

Jon Dyte jon at totient.demon.co.uk
Tue Jul 22 21:53:45 BST 2003


Serguei,

If you look at the latest CVS you will GIOP_S::SendReply() see has already 
been changed. I think Duncan did this in response to yr issues with
performance of oneway calls.


GIOP_S::SendReply() {

  OMNIORB_ASSERT(pd_state == WaitingForReply);

  if (!response_expected()) {
    pd_state = ReplyCompleted;
    return;
  }

  pd_service_contexts.length(0);

  if (omniInterceptorP::serverSendReply) {
    omniInterceptors::serverSendReply_T::info_T info(*this);
    omniInterceptorP::visit(info);
  }
  pd_state = ReplyIsBeingComposed;
  impl()->outputMessageBegin(this,impl()->marshalReplyHeader);
  cdrStream& s = *this;
  calldescriptor()->marshalReturnedValues(s);
  impl()->outputMessageEnd(this);
  pd_state = ReplyCompleted;
}


Jon

On Tuesday 22 Jul 2003 6:15 pm, Serguei Kolos wrote:
> 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/
>
>
>
> _______________________________________________
> omniORB-list mailing list
> omniORB-list at omniorb-support.com
> http://www.omniorb-support.com/mailman/listinfo/omniorb-list




More information about the omniORB-list mailing list