On Wed, 2010-09-29 at 07:31 -0700, Kai Krueger wrote: > > Samir Faci (Dev) wrote: > > > > render_list does seem to have a bug where it ignores the -l, > > --max-load=LOAD value. Though I need to look at it a bit more to see > > why its not using the value, I'm passing. > > > My guess would be the check_load() call needs to happen in the dequeueing > path rather than the enqueueing, as otherwise the rendering continues out of > the queue above load, which is rapidly filled up again the instance the load > dips below the allowed. I haven't verified this though, so I might be wrong.
I think you are right, the check_load() call should really be inside the while() loop of the thread_main() otherwise the render threads carry on and empty the queue when the system is overloaded. This became an issue when I added the extra queueing to allow the multi-threaded requests. I just committed this change into SVN. > Depending on how you see it (bug or feature?), a similar issue I think > occurs with mod_tile / renderd. The load checks again are on the enqueueing > side (mod_tile) rather than dequeueing side of renderd, meaning it continues > to render under heavy load, just stops queuing new requests, although that > has its benefits as well. We want checking in mod_tile so it can know whether it is even worth trying to enqueue the request or not. When the code was first written the maximum queue size was small and just doing the checking during enqueue was good enough. Now that some servers queue up so many requests that the queue might need several hours to empty it probably makes sense to check in renderd as well. Jon _______________________________________________ dev mailing list [email protected] http://lists.openstreetmap.org/listinfo/dev

