Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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: 168

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

Powered by FluxBB