[Rd] How to execute R scripts simultaneously from multiple threads

Vladimir Dergachev vdergachev at rcgardis.com
Thu Jan 4 18:37:29 CET 2007


On Thursday 04 January 2007 4:54 am, Erik van Zijst wrote:
> Vladimir Dergachev wrote:
> > On Wednesday 03 January 2007 3:47 am, Erik van Zijst wrote:
> >>Appearantly the R C-API does not provide a mechanism for parallel
> >>execution..
> >>
> >>It is preferred that the solution is not based on multi-processing (like
> >>C/S), because that would introduce IPC overhead.
> >
> > One thing to keep in mind is that IPC is very fast in Linux. So unless
> > you are making lots of calls to really tiny functions this should not be
> > an issue.
>
> Using pipes or shared memory to pass things around to other processes on
> the same box is very fast indeed, but if we base our design around
> something like RServe which uses TCP it could be significantly slower.
> Our R-based system will be running scripts in response to high-volume
> real-time stock exchange data, so we expect lots of calls to many tiny
> functions indeed.

Very interesting :) 

If you are running RServe on the other box you will need to send data over 
ethernet anyway (and will probably use TCP). If it is on the same box and you 
use "localhost" the packets will go over loopback - which would be 
significantly faster.

At some point (years ago) there was even an argument on some mailiing list 
(xfree86-devel ?) about whether Xserver should support shared memory as unix 
socket was "fast enough" - with the other side arguing that when you pass 
megabyte images around (as in DVD playback) there is non-negligible overhead.

                       best

                           Vladimir Dergachev



More information about the R-devel mailing list