IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Mémoire allouée par perl


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 26
    Points
    26
    Par défaut Mémoire allouée par perl
    Bonjour,

    j'ai un message 'Out of memory!' en essayant de trier un fichier d'une centaine de Mo avec perl. Le serveur sur lequel est exécuté mon script comporte plusieurs Go de RAM.
    Quelle est la mémoire limite que peut s'allouer perl par défaut et y a-t-il un moyen de l'augmenter ?

    Merci.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    tu devrais nous montrer ton script pour voir ce qu'il en est afin de l'optimiser

  3. #3
    Membre du Club Avatar de blacksnake
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 64
    Points : 69
    Points
    69
    Par défaut
    Tu n'enverais pas l'intégralité du fichier dans un tableau ?

    Essaie de lire le fichier ligne par ligne avec un while.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 26
    Points
    26
    Par défaut
    En fait, le script en question est généré par Talend (c'est un ETL opensource(ETL = outil d'extraction/transformation/chargement de données)).
    Il est un peu gros pour le publier dans le forum, mais d'après mes maigres connaissances de Perl, je pense effectivement que l'ensemble du fichier est envoyé dans un tableau, puis trié par la suite.
    Je ne souhaite pas modifier le script généré car ce n'est pas très propre pour le déploiement et la maintenance de l'application.
    Par contre je peux modifier l'environnement d'exécution (càd: s'il existe une variable d'environnement permettant d'augmenter la mémoire maximale dont dispose Perl par exemple, je pourrais modifier cette valeur...)
    Si ce n'est pas possible j'utiliserai la fonction sort du shell, mais avant je voulais avoir votre avis.

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    bah si je ne me trompe pas, je pense que perl utilise toute la memoire disponible sur le serveur .
    Sinon sous quel OS es tu?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 26
    Points
    26
    Par défaut
    Merci de ton aide, je suis sous AIX 5.2, avec perl v5.8.0

    D'après ce que me retourne la commande vmstat, le script Perl s'alloue environ 65000 pages de 4 Ko (environ 260 Mo), puis il plante, mais il reste encore 270000 pages de disponible:
    Avant exécution:
    System Configuration: lcpu=1 mem=4096MB
    kthr memory page faults cpu
    ----- ----------- ------------------------ ------------ -----------
    r b avm fre re pi po fr sr cy in sy cs us sy id wa
    16 1 590268 336074 0 0 1 121 36 0 598 3022 1185 10 5 83 3

    Pendant (quand memory.fre est au plus bas):
    kthr memory page faults cpu
    ----- ----------- ------------------------ ------------ -----------
    r b avm fre re pi po fr sr cy in sy cs us sy id wa
    16 1 655312 271030 0 0 1 121 36 0 598 3022 1185 10 5 83 3

    N.B.: avm = Nombre de pages de 4Ko utilisées
    fre = Nombre de pages de 4Ko dispos

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    t'es sur qu'il n'y a pas moyen de refaire le script?
    256Mo c pas grand chose

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 26
    Points
    26
    Par défaut
    Ben ce ne serait pas très propre, tu imagines, à chaque évolution de mon traitement je devrais refaire des modifications après que le script ait été généré.
    Enfin je mets le script à cette adresse à tout hasard...
    http://r5tr.free.fr/tri_perl.txt
    Le script lit un fichier de 3 champs séparés par des ';' et dont le nom est défini dans la variable d'environnement $INPUT_FILE, le trie et produit le fichier de sortie $OUTPUT_FILE

Discussions similaires

  1. Libérer la mémoire allouée par iplImage
    Par marouame dans le forum OpenCV
    Réponses: 4
    Dernier message: 23/04/2012, 20h30
  2. Réponses: 5
    Dernier message: 02/10/2011, 22h59
  3. Limitation de la mémoire allouée par Oracle 11
    Par hassene5 dans le forum Oracle
    Réponses: 3
    Dernier message: 18/03/2011, 13h49
  4. Mémoire allouées par les dll.. où ?
    Par qdaemon_fr dans le forum Général Java
    Réponses: 0
    Dernier message: 19/05/2009, 10h03
  5. [JVM] Connaitre la taille mémoire utilisé par les dif classe
    Par sur_uix dans le forum Général Java
    Réponses: 4
    Dernier message: 18/09/2003, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo