ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

SPARC arch: rosout node loads CPU on 100%

asked 2019-03-12 07:58:59 -0600

twdragon gravatar image

updated 2019-05-16 05:55:51 -0600

gvdhoorn gravatar image

We experienced strange behaviour on our embedded SPARC-like system. Just after start, the rosout process loads CPU on 100%. We would be very appreciated if you guys help us to reveal the reason of such behaviour.

Also, how many processes should roscore run?

edit retag flag offensive close merge delete

Comments

I've seen that happen when you abuse the parameter server, its meant for static parameters at bringup not to set throughout use (if you do that)

stevemacenski gravatar image stevemacenski  ( 2019-03-13 17:24:38 -0600 )edit

Probably won't solve your problem, but you can reduce the work done by rosout node in a few ways: disable topics in log lines, disable file logging.

NB: ROSOUT_DISABLE_FILE_LOGGING is not yet in official melodic release, but there are other ways of disabling rosout file logging.

knxa gravatar image knxa  ( 2019-03-14 02:51:42 -0600 )edit

I also meet this problem, rosout loads one full cpu kernel

942951641@qq.com gravatar image 942951641@qq.com  ( 2019-05-21 06:18:24 -0600 )edit

1 Answer

Sort by » oldest newest most voted
0

answered 2019-05-16 05:37:08 -0600

twdragon gravatar image

updated 2019-05-16 06:01:16 -0600

After some attempts to reveal the source of problem I found a solution. There are no correct realizations of SteadyTimer system entity on some VLIW and SPARC-like platforms. This leads any function using SteadyTimer to return immediately after calling. In threaded implementation such funсtions consume all CPU time just for continuous function calls. This issue can be solved with replacement of all SteadyTimer-related calls to equivalents which use WallTimer.

There is brilliant solution on GitHub made by Christopher Wecht: https://github.com/cwecht/ros_comm/tr... His solution makes ROS core true platform-independent on the described case.

To integrate Christopher's solution into the existing ROS sources it is only needed to replace src/ros_comm/roscpp directory with variant from here. After that compiled ROS works properly on VLIW platforms.

edit flag offensive delete link more

Comments

To integrate Christopher's solution into the existing ROS sources it is only needed to replace src/ros_comm/roscpp directory with variant from here.

please be aware that you are now responsible for keeping ros_comm (and all pkgs in it) up-to-date. The fork you link to is (at the time of writing) 8 commits behind melodic-devel.

gvdhoorn gravatar image gvdhoorn  ( 2019-05-16 05:55:22 -0600 )edit
1

It looks like there is a pull request to merge those changes into ros_comm: https://github.com/ros/ros_comm/pull/... . At this time, it looks like there are still some open discussions that need to be resolved before it can merge.

ahendrix gravatar image ahendrix  ( 2019-05-16 09:52:06 -0600 )edit

Question Tools

3 followers

Stats

Asked: 2019-03-12 07:58:59 -0600

Seen: 308 times

Last updated: May 16 '19