[ros-users] ROS communication performance .

Ken Conley kwc at willowgarage.com
Fri Sep 10 00:59:48 UTC 2010


Josh can probably provide better comment on roscpp specifics. At a
high level, C Turtle improvements include:

 * roscpp: much better *intra*process latency performance
 * nodelets: basically our alternative to shared memory that takes
advantage of the improved roscpp intraprocess performance
 * rospy: much better serialization performance (thanks to James Bowman)

Also, we do have a UDP transport for roscpp. It has been slightly
improved since Box Turtle, but it is not very sophisticated in terms
of protocol. If the criteria is latency, then it should certainly do
better on that metric than TCP. These performance metrics are always
difficult, because with an actual robot you want to know what happens
with different message sizes, flaky wifi connections, etc...

I try to always include a link to what the ICE people have to say when
it comes to performance analysis, which I've included in the FAQ here:

http://www.ros.org/wiki/FAQ#How_does_ROS_compare_in_terms_of_performance.3F

Basically, performance really only matters if you are at a bottleneck,
otherwise it's not a relevant criteria for selecting middleware. When
we see a bottleneck, we develop something like nodelets, then we focus
back on tools, integration, and libraries, which, in the end, we think
are more important for developers.

 - Ken

On Thu, Sep 9, 2010 at 5:35 PM, Alex Barvo <robotnv at gmail.com> wrote:
> Ken,
>
> The paper you pointed to was using Box Turtle and found that performance of
> ROS wss pretty good compared to (what appears to be very optimised) LCM.
> Do you think C-turtle got any improvements in this area?
>
> From paper:
>
>>The ROS TCP transport achieves high throughput when the maximum queue
>> length (
>
> q) is set to infinity, but at the
>
>>expense of message latency. Various settings of
>
> q provide an adjustable tradeoff between throughput and latency.
>
> On Thu, Sep 9, 2010 at 12:06 PM, Ken Conley <kwc at willowgarage.com> wrote:
>>
>> Hi Konrad,
>>
>> If you read this paper from the authors of LCM, you will find that the
>> performance of ROS, LCM, and IPC are generally comparable (note: the
>> article tests LCM's UDP implementation against ROS' TCP
>> implementation):
>>
>> http://lcm.googlecode.com/files/2010-huang-olson-moore-lcm-iros.pdf
>>
>> Comparing any middleware to "raw TCP" is generally difficult to come
>> to conclusions, especially without including exact information on how
>> your test was conducted. With any middleware, there is the overhead of
>> (un)marshaling the data into individual messages.  The size and
>> composition of these messages is a significant factor in any
>> performance numbers that result.
>>
>> - Ken
>>
>> On Thu, Sep 9, 2010 at 11:48 AM, Konrad Banachowicz <konradb3 at gmail.com>
>> wrote:
>> > Dear all,
>> > I recently done some testing on ROS communication performence.
>> > There are the reesults :
>> >                           throughput [MB/s]     time [s]           data
>> > [MB]
>> > ROS                 7.25906                      4.827058      35.0399
>> > raw TCP          56.8430                      8.387205      476.75466
>> > POSIX MQ      124.36626                  3.834136      476.837158
>> >
>> > That shows grate overhead of ROS communication.
>> > I looked on code, I found that the communication code is very
>> > complicated
>> > and contains many locks and queues. It's also integrate interprocess and
>> > intraprocess communication. This with all callback stuff make whole
>> > communication overcomplicated.
>> >
>> > I think this show serious problem with design of whole network stack in
>> > ROS.
>> >
>> > I will do some more testing.
>> >
>> > Pozdrawiam
>> > Konrad Banachowicz
>> >
>> > _______________________________________________
>> > ros-users mailing list
>> > ros-users at code.ros.org
>> > https://code.ros.org/mailman/listinfo/ros-users
>> >
>> >
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
>
>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
>



More information about the ros-users mailing list