[OSM-dev-fr] mod_tile / render_list "recursif"
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
Re: [OSM-dev-fr] mod_tile / render_list "recursif"
Le 20/07/2014 11:49, Christian Quest a écrit : > 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 ? Et comment parcours tu les tuiles a générer ? Un scan en zig-zag (style DCT du MPEG) serait sans doute aussi une bonne chose pour le cache http://www.bretl.com/mpeghtml/zigzag.HTM http://www.cs.cf.ac.uk/Dave/Multimedia/node238.html > 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 > -- Christophe Merlet (RedFox) ___ dev-fr mailing list dev-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] mod_tile / render_list "recursif"
Le 20 juillet 2014 13:07, Christophe Merlet a écrit : > Le 20/07/2014 11:49, Christian Quest a écrit : > > 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 ? > > Et comment parcours tu les tuiles a générer ? > Un scan en zig-zag (style DCT du MPEG) serait sans doute aussi une bonne > chose pour le cache > http://www.bretl.com/mpeghtml/zigzag.HTM > http://www.cs.cf.ac.uk/Dave/Multimedia/node238.html > > De N à N+1, l'effet zig-zag est sûrement limité... car on passe de 1 à 4 tuiles. Je suis en train de faire des bench pour voir si la théorie se vérifie dans la pratique ;) -- Christian Quest - OpenStreetMap France ___ dev-fr mailing list dev-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev-fr