banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oubliĂ© ?

#1 Mon 01 March 2010 16:14

Sam_Dalembert
Participant actif
Lieu: Mérignac
Date d'inscription: 5 Aug 2009
Messages: 121

[GDAL] GDAL_CACHEMAX et wm

Bonjour Ă  tous,


Je cherche des infos sur ces deux options, et je ne trouve pas grand chose. Pas sur comment les utiliser (syntaxe...etc.), mais sur leur efficacité, quelles valeurs mettre.
Sur certains sites on peut lire qu'il faut mettre GDAL_CACHEMAX Ă  la mĂȘme valeur que la taille du fichier input. Que plus les valeurs sont Ă©levĂ©es (pour cachemax et wm) plus ça augmente la capacitĂ© de GDAL.

Moi il y a un truc qui m'intrigue : quand je fais l'extraction d'un gros fichier ECW en sortie (presque 400Mo) Ă  partir d'un fichier d'1.2Go (aussi en ecw), il me met l'erreur classique "Failed to allocate X byte source buffer."
- en touchant Ă  rien, Ă  58%
- en mettant  "GDAL_CACHEMAX 300", Ă  78%.
- en mettant "GDAL_CACHEMAX 900", Ă  30%
- en mettant "GDAL_CACHEMAX 100", Ă  56%
- en mettant "GDAL_CACHEMAX 1200", Ă  22%

Donc y a mĂȘme pas vraiment de logique (sinon le 100 aurait du m'emmener plus loin que 78%).

Ce que je comprends encore moins, c'est que j'avais déjà essayé, en passant par gdalwarp (cachemax + wm), et ça avait marché. Donc ça veut dire quoi, que GDAL_CACHEMAX est une config inter-commandes ? Et wm, c'est juste pour gdalwarp ou aussi pour tout ? Et chose surprenante, le processus ne dépassait pas les 100Mo.
LĂ , avec juste GDAL_CACHEMAX 300 dans gdal_translate, il monte largement plus haut, et explose.

Ce qui m'embĂȘte dans tout ça c'est que je n'arrive pas Ă  reproduire le mĂȘme cas de figure que l'autre fois (limiter le processus Ă  100Mo avec gdalwarp --config GDAL_CACHEMAX 300 -wm 300), alors que je fais exactement la mĂȘme chose... Et du coup je n'arrive plus Ă  ressortir mon fichier de 400Mo en ECW...
J'avais bien observĂ© le processus, il oscillait entre 95 et 100 Mo (en gros), ça fluctuait trĂšs peu. Alors que lĂ , j'ai beau jouer avec les options, le processus ne cesse d'augmenter (par exemple jusqu'Ă  650) et arrivĂ© Ă  650, il redescend brutalement Ă  320, et ça recommence, sur des cycles de peut-ĂȘtre 30s.

Enfin bref, tous ceux qui ont des informations sur ces 2 options sont les bienvenus ! Merci !

Hors ligne

 

#2 Wed 03 March 2010 22:30

rouault
Participant assidu
Date d'inscription: 26 Apr 2009
Messages: 172

Re: [GDAL] GDAL_CACHEMAX et wm

La librarie ECW a elle-mĂȘme son propre cache RAM pour ces petites activitĂ©s, qui te bouffe 1/4 de la RAM par dĂ©faut. Cf la variable d'environnement GDAL_ECW_CACHE_MAXMEM pour controler ça mentionnĂ©e dans http://gdal.org/frmt_ecw.html. RĂ©cemment je me suis aperçu d'un bug dans la lib ECW sur Linux 64bit avec 8 GB de RAM : le truc essaye de te bouffer toute ta RAM. ECW est vraiment a PITA comme disent les anglophones... Erdas ne permettant mĂȘme plus son libre tĂ©lĂ©chargement, c'est le signe de passer Ă  autre chose!

"Sur certains sites on peut lire qu'il faut mettre GDAL_CACHEMAX Ă  la mĂȘme valeur que la taille du fichier input" ... Ouais, il n'y a pas de rĂšgle en fait. Tout dĂ©pend de l'algo GDAL utilisĂ©, du format, de la taille des blocs, de l'entrelacement pixel ou canal etc... Il faut surtout ĂȘtre raisonnable dans la valeur qu'on met pour que ça reste dans les clous de la RAM disponible. Je dirais que rien ne sert de monter au delĂ  de 300 MO.

Quant à -wm, ça augmente généralement les performances à la reprojection, mais pas toujours, voire ça peut les diminuer dans certains cas particuliers... La meilleure source d'information est : http://trac.osgeo.org/gdal/wiki/UserDocs/GdalWarp

Dernière modification par rouault (Wed 03 March 2010 22:32)

Hors ligne

 

#3 Wed 03 March 2010 22:40

Sylvain33
Participant assidu
Lieu: Mauritius
Date d'inscription: 13 Feb 2007
Messages: 320
Site web

Re: [GDAL] GDAL_CACHEMAX et wm

TrÚs intéressant ta réponse rouault !
Merci du partage

Dernière modification par Sylvain33 (Wed 03 March 2010 22:40)

Hors ligne

 

#4 Thu 04 March 2010 10:08

Sam_Dalembert
Participant actif
Lieu: Mérignac
Date d'inscription: 5 Aug 2009
Messages: 121

Re: [GDAL] GDAL_CACHEMAX et wm

Bon ben que dire de plus : merci Even ! (je viens de voir que tu fais partie de l'équipe qui développe GDAL, je comprends mieux d'un coup, toutes tes interventions toujours exactes...smile)

J'avais jamais entendu parler de cette variable-lĂ ...MĂȘme en cherchant des infos sur les diffĂ©rentes variables, mĂȘme sur cette page ce n'est pas marquĂ© ! http://trac.osgeo.org/gdal/wiki/ConfigOptions

Bon et comme par hasard, ça marche smile Le fichier que j'essayais de créer a fonctionné, et l'utilisation mémoire du processus n'a pas dépassé les 100Mo, comme prévu.

Le seul truc que je ne comprends toujours pas c'est pourquoi cela a marchĂ© l'autre fois, avec GDAL_CACHEMAX. Et je suis sĂ»r Ă  99% que ça a marchĂ©, vu que j'ai toujours les fichiers sur le pc, et vu la taille (~400Mo), il n'a pu ĂȘtre créé que comme ça (parce que quand je sors le fichier en TIFF, pas de souci d'utilisation mĂ©moire, mais quand je le convertis ensuite en ECW, la taille de l'ecw n'est plus du tout la mĂȘme).

Finalement il y a aussi un autre truc que je ne comprends pas...tongue
J'ai défini la variable à 100000 : SET GDAL_ECW_CACHE_MAXMEM=100000
Ok, ça marche, le processus ne monte pas au-dessus des 100Mo.

Mais quand je redéfinis la variable, ça n'a plus aucun effet. Pourtant, la variable est bien définie
C:\Program Files\FWTools2.4.7>SET GDAL_ECW_CACHE_MAXMEM
GDAL_ECW_CACHE_MAXMEM=500000

Sauf que le processus gdal_translate est bloquĂ© Ă  100Mo quand mĂȘme. MĂȘme en faisant la commande dans une autre fenĂȘtre FWTools (et lĂ  la variable n'est plus dĂ©finie).
Par contre, en définissant la variable GDAL_CACHEMAX à 300, là le processus gdal_translate monte (mais plus lentement que d'habitude) jusqu'à...370Mo (va savoir pourquoi). Donc l'utilisation mémoire est plus importante, et pourtant la création du fichier est plus longue (40min contre 35min pour le premier, donc le GDAL_ECW_CACHE_MAXMEM à 100000)...

Hors ligne

 

#5 Thu 04 March 2010 15:58

Sam_Dalembert
Participant actif
Lieu: Mérignac
Date d'inscription: 5 Aug 2009
Messages: 121

Re: [GDAL] GDAL_CACHEMAX et wm

Bon ben au final je comprends toujours rien smilesad

Déjà j'avais mis 100000, alors qu'il fallait mettre 100000000 (vu que c'est en byte).
Ensuite, que je mette 100000, 100000000, 300000000, ou n'importe quel autre chiffre, le rĂ©sultat est toujours le mĂȘme, pour mon fichier de 400Mo, il se limite Ă  100Mo d'utilisation mĂ©moire.
Et le pire, c'est que cette utilisation mémoire, dépend de la taille de l'extraction voulue. Avec une emprise moins grande, le processus va par exemple se limite à 80Mo, avec une emprise plus grande, il monte à 150.

Donc quand je dois reprojeter l'ensemble des dalles (1.4Go en ECW Ă  la base), il m'utilise 210-220Mo, et explose au bout d'un moment -->ERREUR, j'ai dit une bĂȘtise, il n'explose pas, il ne dĂ©marre pas, tout simplement !. Le problĂšme "rĂ©solu" avec le fichier de 400Mo, est toujours lĂ  avec le fichier de 1.4Go.
Le pire, c'est que cet été j'avais réussi à le reprojeter, ce fichier de 1.4Go (sur un autre PC)...

A tout hasard j'essaye en ajoutant l'option GDAL_FORCE_CACHING, lĂ  le processus n'arrĂȘte pas de monter/descendre mais dans des valeurs pour l'instant faibles (60-70Mo), mais bon ça n'arrĂȘte pas de monter... Et lĂ  avec cette option, l'UC est utilisĂ©e Ă  100% constamment, donc j'ai peu d'espoir...

Dernière modification par Sam_Dalembert (Thu 04 March 2010 16:16)

Hors ligne

 

#6 Fri 05 March 2010 08:35

Sam_Dalembert
Participant actif
Lieu: Mérignac
Date d'inscription: 5 Aug 2009
Messages: 121

Re: [GDAL] GDAL_CACHEMAX et wm

Suite des tests : le fichier ECW à 1.4go est finalement passé !
Avec la mĂȘme configuration que quand j'ai rĂ©ussi le fichier de 400Mo en limitant le processus Ă  100Mo d'utilisation mĂ©moire. LĂ  pour le fichier d'1.4Go, gdal_translate montait Ă  270Mo, mais en restant apparemment Ă  cette limite. La crĂ©ation du fichier a durĂ© 3h47.
Maintenant le dernier morceau, le fichier d'origine en ECW est à 2.5Go, on va voir si ça va passer...smile

Pour l'instant le processus oscille entre 400 et 460 sans jamais dépasser les 460.

Dernière modification par Sam_Dalembert (Fri 05 March 2010 08:43)

Hors ligne

 

#7 Mon 08 March 2010 09:02

Sam_Dalembert
Participant actif
Lieu: Mérignac
Date d'inscription: 5 Aug 2009
Messages: 121

Re: [GDAL] GDAL_CACHEMAX et wm

Bonne nouvelle, la reprojection a réussi !!! smile

Bon le fichier est anormalement plus lourd (4.4Go au lieu de 2.5 !), mais l'essentiel est là. Le traitement a duré un peu plus de 9h.
Donc encore merci Ă  Even pour l'"astuce" smile

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo