[OSM-dev] renderd multithreading question

Kai Krueger kakrueger at gmail.com
Mon Nov 16 13:05:49 GMT 2009


Frederik Ramm wrote:
> <div class="moz-text-flowed" style="font-family: -moz-fixed">Jon,
> 
...

> 
> render_list now makes "bulk" requests, and I assume that mod_tile makes 
> "priority" requests - but there seems to be a third category in between 
> these (those that are neither bulk nor priority) - what's this used for?

Mod_tile distinguishes between tiles that would cause a 404 response if 
not rendered in time and those that would only return an outdated but 
still valid tile. The former gets submitted to the priority queue where 
as the latter to the "normal" rendering queue. The order of the queues 
are cmdRenderPrio, cmdRender, cmdDirty, cmdRenderBulk, with each one 
being able to starve the queues lower down. The idea behind RenderPrio 
was mainly to minimise the number of 404 tiles returned when the server 
is overloaded with rerendering expired tiles, e.g. after a new planet 
import.

cmdRenderBulk has the peculiarity that it is lower priority than 
cmdDirty, but will still overflow into it, boosting priority of 
overflown requests. However the idea behind RenderBulk was that it is 
only used for background render jobs that will always block on the 
rendering jobs arbitrarily long and thus the submission rate self 
throttles to point that the queue should never overflow in the first place.

The dirty queue is for all asynchronous requests that don't block and 
can grow large (thousands of requests). Mod_tile uses this, if it 
expects that it is unlikely that the request will get rendered in a 
reasonable time period and rather than timing out, immediately returns 
the old tile. E.g. when the server is under heavy load.

Kai

> 
> Bye
> Frederik
> 
> 
> 
> </div>





More information about the dev mailing list