[omniORB] omniORB slow transfer when clientCallTimeOutPeriod != 0

Igor Lautar igor.lautar at hermes-softlab.com
Tue Aug 11 15:04:35 BST 2009


Hi,

On Tuesday 11 August 2009 13:41:01 Duncan Grisby wrote:
> That sounds like a bug in Windows that means nonblocking sockets impose
> ridiculous delays if you do large transfers:
>
>   http://support.microsoft.com/kb/823764
>
> In my experiments, the default transfer and socket send buffer sizes
> that omniORB uses are suitable to avoid the delays, but there must be
> something about your access pattern that triggers it. Your trace shows
> that much of the data for the call is sent as a single large transfer
> (the sendCopyChunk message), which could be the trigger.

Yes, we send data in chunks of 256k. Its just an arbitrary number that is easy 
to work with (also processing this data on server side is faster if it is done 
in larger chunks).

> Try modifying the values of the maxSocketSend and / or socketSendBuffer
> parameters. In particular, try setting maxSocketSend to something
> smaller than socketSendBuffer.

Thats it!

I've just tested it with larger socket buffer and it works the same if timeout 
is set.


I remember playing with maxSocketSend to increase transfer speed (it helped a 
little bit), but have not read the comment in description of socketSendBuffer 
(duh).

Anyhow, thx for omniORB and support you're providing here on list. Hopefully 
somebody will find this useful (besides me).

Btw, we are able to throttle full 1 Gbit network with omniORB sending data 
using 256k message sizes. Transfer in this case is around 70-80 MB/s, which is 
really good, especially taking into consideration we do not have to fiddle 
with raw sockets to get there.

Thx again and take care,
Igor



More information about the omniORB-list mailing list