Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Re number of connections: AFAIK, all roscpp's IO happens in a select loop (https://github.com/ros/ros_comm/blob/ros_comm-1.8.15/clients/cpp/roscpp/src/libros/io.cpp#L167), so one thread can service many connections. The select() call, though is O(n) in the number of connections. There is a Linux specific epoll() which handles large numbers of connections more efficiently. This page discusses some general networking/scalability issues: http://www.kegel.com/c10k.html.

Re latency: roscpp message latency is ~100us on recent Intel CPUs under Linux PREEMPT_RT. This is 10-20 times slower than direct kernel sockets and IPC. Benchmark code: https://github.com/ndantam/ipcbench Some discussion in our recent article: http://dx.doi.org/10.1109/MRA.2014.2356937.