[ros-users] Arm Core Performance

Daniel Stonier d.stonier at gmail.com
Tue Jul 13 09:22:01 UTC 2010


On 13 July 2010 09:46, Josh Faust <jfaust at willowgarage.com> wrote:
>
> Can you try it with a publisher/subscriber in the same process, both passing the message as a shared_ptr and not?  e.g. both:
> Msg m;
> publisher.publish(m);
> and
> MsgPtr m(new Msg);
> publisher.publish(m);
> Also, can you try running the pointcloud_serdes executable in the test_roscpp_serialization_perf package?
> This should at least help narrow down where the bottleneck may be occurring.  The first will do everything the same as interprocess except it won't hit the TCP stack, while the second will bypass almost everything.  pointcloud_serdes should let us know if it's the serialization/deserialization itself.
> Josh

Ok - running through some more tests, but doesn't seem to be giving
any clear indication except that everything in general is running
pretty slow...except the raw socket test, which isn't too bad in
comparison to the intel i5.

I think the next couple of things I'll do will be to verify just
exactly how much memory is left after roscore starts and also enable
kernel preemption (low latency) to see if there is some speedup.

====== test_roscpp_serialization_perf ======

In pointcloud_serdes.cpp, I reduced NUM_PTS from 1000000 to 1000
because the arm board ran out of memory.

== NUM_PTS 1000000 ==

Intel i5 results only.

#avg serialization took 0.007236 sec
#avg deserialization time 0.029470 sec

== NUM_PTS 1000 ==

board               avg_ser     avg_deser
intel i5             0.000011    0.000025
arm1176jzf-s   0.001328    0.003354

====== Ros Msg Latency Tests ======

See previous email for details.

== Tests ==

IPC : tests the latency of inter-process communication between
publisher and subscriber.
NoTCP : tests the latency of communication between publisher and
subscriber within a process.
Bypass: tests the latency of pointer communications between publisher
and subscriber within a process.

== Latency Results ==

                          IPC        NoTCP      Bypass
intel i5           :   0.4ms     0.10ms     0.05ms
arm1176jzf-s :   25.0ms   4.50ms     3.50ms

====== Raw Socket Tests ======

Tests the latencies of sending a single char from server to client,
written using simple posix socket code.

intel i5           : 0.1ms
arm1176jzf-s : 1.4ms


>
> On Mon, Jul 12, 2010 at 9:46 AM, Brian Gerkey <gerkey at willowgarage.com> wrote:
>>
>> hi Daniel,
>>
>> We're interested in supporting ROS on embedded platforms such as the
>> one you're working with. But we don't do embedded development
>> ourselves, so it's possible that we're not aware of optimizations that
>> are especially relevant in that domain.
>>
>> If you can track down the source of the performance bottleneck, please
>> let us know and we'll work with you to improve things.
>>
>>        brian.
>>
>> On Thu, Jul 8, 2010 at 7:02 PM, Daniel Stonier <d.stonier at gmail.com> wrote:
>> > Now that I'm getting some working results, I'm a bit curious about the
>> > arm performance for ros messaging. I have two test cases running on an
>> > armv6 core (arm1176jzf-s).
>> >
>> > Topics (time taken from publisher sending a message to subscriber
>> > callback activating)
>> >  - intel i5: ~200us
>> >  - armv6: ~ 20ms
>> >
>> > Services (time taken on a round trip rpc request response passing
>> > float64 data values)
>> >  - intel i5: ~2ms
>> >  - armv6: ~ 190ms
>> >
>> > Can it really be 100x slower? This kernel does not yet have a low
>> > latency scheduler (kernel premption is not configured, will figure out
>> > how to do that later) but I thought that would only affect performance
>> > by a few milliseconds, not tens or hundreds of ms. Is there perhaps
>> > some critical kernel configuration or something similar I'm missing? I
>> > guess the next thing to do would be to write a very simple tcp/ip
>> > client/server pair and test it without ros.
>> >
>> > Regards,
>> > Daniel.
>> >
>> > --
>> > Phone : +82-10-5400-3296 (010-5400-3296)
>> > Home: http://snorriheim.dnsdojo.com/
>> > Yujin Robot: http://www.yujinrobot.com/
>> > Embedded Control Libraries: http://snorriheim.dnsdojo.com/redmine/wiki/ecl
>> > _______________________________________________
>> > 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
>



--
Phone : +82-10-5400-3296 (010-5400-3296)
Home: http://snorriheim.dnsdojo.com/
Yujin Robot: http://www.yujinrobot.com/
Embedded Control Libraries: http://snorriheim.dnsdojo.com/redmine/wiki/ecl



More information about the ros-users mailing list