Possible to do simultaneous CORBA transfers?

Is it possible to have multiple, simultaneous CORBA transfers via Orocos data ports?

We have a slow wireless link with decent sized images coming across it from an Orocos deployer to a GUI. The GUI app is multi-threaded and requests smaller, higher rate data in one thread, while requesting larger, slower rate image data in another thread (all via data ports). Besides the network congestion itself, is there anything within Orocos preventing multiple, simultaneous transfers? We are definitely getting lock-step data transfer, which might simply be TCP, or Orocos, or CORBA, or ...

We have looked at ACE/TAOs multi-thread options, but haven't yet played with them much to see what effect they have. We just want to know if Orocos might be a restriction here.

Cheers
Stephen

Possible to do simultaneous CORBA transfers?

On Tue, Jul 14, 2009 at 01:18, <kiwi [dot] net [..] ...> wrote:
> Is it possible to have multiple, simultaneous CORBA transfers via Orocos data ports?

Yes. This is 'simply' a command line option for the deployer which
gets passed to your ORB. They will exactly allow what you envision,
Orocos does not lock nor serializes access.

The correct reference is:

<http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/docs/configurations.html>

We should add this to the documentation.

peter

Possible to do simultaneous CORBA transfers?

On Jul 14, 2009, at 03:40 , Peter Soetens wrote:

> On Tue, Jul 14, 2009 at 01:18, <kiwi [dot] net [..] ...> wrote:
>> Is it possible to have multiple, simultaneous CORBA transfers via
>> Orocos data ports?
>
> Yes. This is 'simply' a command line option for the deployer which
> gets passed to your ORB. They will exactly allow what you envision,
> Orocos does not lock nor serializes access.
>
> The correct reference is:
>
> <http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/docs/configurations.html
> >
>
> We should add this to the documentation.
>
> peter

I presume that you are you thinking of the "Multiple threads, single
ORB, thread-per-connection model"? The others all seem to require
changes - ie spawning multiple ControlTaskServer ORB threads, etc.

We put a "svc.conf" file, with the following line, in the directory
that we run the deployer from, and also the directory that we run the
GUI from (both start ControlTaskServer's after all). No change in
behaviour.

{{{
static Server_Strategy_Factory "-ORBConcurrency thread-per-connection"
}}}

NB that ACE/TAO won't take "-ORBConcurrency thread-per-connection" as
a command line parameter, and throws an exception on it. No idea why.

Reading the "Server concurrency strategy" and "Thread Pools" sections
at the above web page, do we need changes to Orocos to support any of
the non-single-thread models? Certainly the thread-pools requires
multiple threads with ORB::run() in them (ie like your email re
Xenomai/RTAI). And for the thread-per-connection, we would need
multiple outbound connections from one process to trigger the thread
spawning in an ORB in another process. Does using different ports in
multiple threads but only running one ORB in the same process, support
that?

I still haven't completely convinced myself that network congestion
might cause some of what we're seeing, but I'd still like to figure
this out in general.

Cheers
Stephen

Possible to do simultaneous CORBA transfers?

On Tue, Jul 14, 2009 at 09:40, Peter Soetens<peter [..] ...> wrote:
> On Tue, Jul 14, 2009 at 01:18, <kiwi [dot] net [..] ...> wrote:
>> Is it possible to have multiple, simultaneous CORBA transfers via Orocos data ports?
>
> Yes. This is 'simply' a command line option for the deployer which
> gets passed to your ORB. They will exactly allow what you envision,
> Orocos does not lock nor serializes access.
>
> The correct reference is:
>
> <http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/docs/configurations.html>
>
> We should add this to the documentation.

Whoops, I just realize that it's not that simple for Xenomai/RTAI
targets. The threads created by the ORB are plain gnulinux threads,
which can't hold locks or signal semaphores under Xenomai/RTAI. The
reason it works today is because of the thread that executes ORB::run
is correctly configured already and processes all incoming
connections.

The only way to get this working on these targets it to use the
"Multiple threads, single ORB, TAO thread-pool model." In this model
the user creates the (RTAI/Xenomai) threads which all do an ORB::run.
The plus-side is that the ORB is configured by default for this way of
working. So it just comes down to create OS::SingleThread instances
and let them execute ControlTaskServer::RunOrb(); in step()

Alternatively, we could extend ControlTaskServer::ThreadOrb() such
that it spawns a thread each time it is called, instead of a singleton
now.

Peter.

Possible to do simultaneous CORBA transfers?

Is it possible to have multiple, simultaneous CORBA transfers via Orocos data ports?

We have a slow wireless link with decent sized images coming across it from an Orocos deployer to a GUI. The GUI app is multi-threaded and requests smaller, higher rate data in one thread, while requesting larger, slower rate image data in another thread (all via data ports). Besides the network congestion itself, is there anything within Orocos preventing multiple, simultaneous transfers? We are definitely getting lock-step data transfer, which might simply be TCP, or Orocos, or CORBA, or ...

We have looked at ACE/TAOs multi-thread options, but haven't yet played with them much to see what effect they have. We just want to know if Orocos might be a restriction here.

Cheers
Stephen