#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
#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...
)
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
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...![]()
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 ![]()
![]()
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...![]()
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 !!! ![]()
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" ![]()
Hors ligne

