[omniORB] slow transfer speed for certain sequence lengths

Duncan Grisby duncan@grisby.org
Thu, 02 May 2002 13:35:27 +0100


On Thursday 2 May, Claudio Scafuri wrote:

> In one of the tests a sequence of data is sent from client to
> server.  For certain lengths of the sequence the time needed by the
> call jumps to a very high and nearly constant value of about 40
> ms. For example, the first "window" for a sequence of integers is
> between 339 an 518 elements. Outside this window the time is less
> than 1 ms. There are other slow windows for longer sequnece lengths.

Unfortunately, the cause of this problem seems to be a bug in the
Linux loopback interface, and maybe the whole TCP system. It has never
been reported on a different platform. I've only ever seen it on Linux
using the loopback interface, but one person reported seeing it in
more limited circumstances with a remote interface.

The problem seems to be that omniORB is quite aggressive about doing
large transfers using a single system call when possible, rather than
doing lots of small sends as most other ORBs do. Linux seems to have
problems with that, certainly with the loopback interface. It isn't
especially feasible to modify omniORB to do smaller sends, since
different people have reported different sizes at which the problem
occurs. There would be no way of deciding what size to use.

Looking on the bright side, the problem is non-existent or at least
much less common when doing remote calls, so you can use omniORB 4 and
its Unix domain transport to avoid the problem.

Cheers,

Duncan.

-- 
 -- Duncan Grisby         --
  -- duncan@grisby.org     --
   -- http://www.grisby.org --