Ca me titillait depuis longtemps... j'ai modifié render_list, l'utilitaire
de mod_tile qui sert à prégénérer les tuiles.


Le but de la modif:
1- profiter au mieux des caches lors du process de prégénération

render_list procédait jusqu'aujourd'hui niveau de zoom par niveau de zoom.
génération du zoom n, puis n+1, puis n+2

Du coup, les requêtes postgis chargeaient les données d'une zone, puis les
dévait les recharger au zoom suivant car le reste du rendu les avait
forcément supprimé des caches. Du coup ceci généère un grand nombre
d'I/O... nerf de la guerre avec de telles volumes de données.

Désormais, render_list peut immédiatement calculer les tuiles du zoom
suivant, tirant parti du fait que les données utiles sont encore en
cache... et donc réduisant les I/O et donc le temps de rendu.

Mais bon... où arrêter la récursion ?

2- prégénérer uniquement ce qui vaut le coup de l'être

Deuxième apport... une limite de temps de génération.

Si une metatile a pris moins de temps que cette limite, on peut se passer
de la prégénérer, elle pourra l'être rapidement si jamais elle est demandée.


Pour utiliser cette nouvelle fonctionnalité, j'ai juste ajouté l'option de
temps maximum de rendu (en ms), qui déclenche et contrôle la récursion.
Sans elle, le fonctionnement est inchangé.

Exemple:
render_list -m osm -a -f -z 9 -Z 9 --max-time 5000

A faire:
- pour un rendu multi-niveau (-z 9 -Z 12) prévoir de tester si une metatile
a déjà été rendue en testant son heure de génération par rapport à l'heure
de démarrage de render_list
- ajouter une limite sur le zoom maxi pour la récursion (pour l'instant ça
descend jusqu'au 18 codé en dur)

La modif est sur github, commentaires bienvenus !

https://github.com/cquest/mod_tile/commit/652ec90c7d1293a4b049ee0b58be53c01a602e75
-- 
Christian Quest - OpenStreetMap France
_______________________________________________
dev-fr mailing list
dev-fr@openstreetmap.org
https://lists.openstreetmap.org/listinfo/dev-fr

Répondre à