On Fri, Jul 30, 2010 at 7:28 PM, Cedric Pradalier < cedric.pradalier@mavt.ethz.ch> wrote: > On 07/31/10 01:56, Josh Faust wrote: > > There are a couple different polling timeouts used that may affect this: > > xmlrpc_manager.cpp:256: server_.work(0.01); > > poll_manager.cpp:95: poll_set_.update(10); > > > > If you're using timers: > > timer_manager.h:508: timers_cond_.timed_wait(lock, > > boost::posix_time::milliseconds(1)); > > > > Adjusting these to your needs will likely help quite a bit -- we don't > > run on any embedded systems here, so we're haven't optimized for them > > or provided knobs to tweak for these. > > Thanks a lot. > Changing the 2 first timeouts to 0.1 and 100 respectively my process > much much lighter on my system. My real program is now oscillating > around the 1% mark, which match my expectation for something gathering > data on a serial port and publishing them at 30 fps. > > I'm not quite sure what is the drawback of this change. My understanding > is that it will make the program termination and some connection closing > a little bit slower. Is there something more? > Essentially, yes. I think those #s are from the days when the xmlrpc and ROS polling happened in the same thread, so we didn't want to starve 1 or the other. I'll have to look into if they severely affect anything else. > > Now, I'm not using timers in these programs, so I cannot say what is the > influence of the 1ms wait in timer_manager.h. I have not looked at the > code in details, but it look like this wait could be advantageously > replaced by the following code: > > int remaining_time = std::max((int)((sleep_end.toSec() - > current.toSec())*1000),0); > timers_cond_.timed_wait(lock, > boost::posix_time::milliseconds(std::min(50,remaining_time))); > > Is there any reason to verify that the time is not going backward at 1kHz? > This is unfortunately not possible because of the ROS clock used in simulation. If simulated time is going faster than normal time you end up missing timer events. Building up a predictive model of how fast time is actually moving is possible, but not high priority. Josh