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

C Discussion :

Memoire qui augmente


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Par défaut Memoire qui augmente
    Bonjour,

    Je viens demander une petit coup de main j'ai un petit soucis.
    J'ai un processus en C qui s'occupe des traitements entre applicatifs et le web et qui possède un démon http.
    Celui-ci est propre, du mtrace pendant une heure pas de suites mémoires.
    Je le laisse faire la même tache pendant plusieurs heures.

    Après 4-5 heures le processus fait la même taille au ko près.

    Cependant après plusieurs heures supplémentaires sa taille a doublé (d'un coup semble t'il). donc je ne comprend pas car il n'y a pas eu d'autres appels de fonctions autres que celles qui on été testé avec mtrace.

    J'ai remarqué que dans le pmap -x j'ai (après que le processus ai grossit) un 8188ko dans [anon]

    Quelqu'un aurait-il une piste ?

    En vous remerciant d'avance

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Si tu utilises des pointeurs de pointeurs, il est possible que tu fasses :
    free(*x);*x a déjà été libéré et dont la valeur est indéterminée ?

    Ainsi cela peut fonctionner la plupart du temps et ne plus marcher soudainement, après ce n'est qu'un hypothèse.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Par défaut
    non, je ne pense pas, j'ai déjà pas mal tourner autour du pot. j'ai l'impression que cette allocation ce fais peut-tetre plus bas?

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Je pense qu'il faudrait que tu donnes tes sources, avec une explication de l'architecture.
    Je pense que cela sera plus facile aux membres expérimentés de t'aider.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Par défaut
    Je suis ingénieur dans une entreprise donc bien sur les codes sont privés .. désolé.. Je vois cependant souvent dans les gens qui montrent des pmaps de logiciels souvent ce 8188 dans [anon] donc j'esperait que quelqu'un est une explication, le fait qu'il soit si souvent présent, je pense que c'est le noyau qui l'alloue mais pourquoi? et ou ? :s

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Il y a une série de possibilités. Principalement segment BSS des lib dynamiques et le tas. Il faut chercher dans ton programme. Note que la fragmentation peut expliquer ce genre de comportement, mais j'aurais tendance à chercher d'abord les fuites (et les fuites cachées, la mémoire qui est toujours référencées mais qu'on pourrait libérer parce qu'elle ne sera plus utilisée).

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Citation Envoyé par jeanmini Voir le message
    Je suis ingénieur dans une entreprise donc bien sur les codes sont privés .. désolé.. Je vois cependant souvent dans les gens qui montrent des pmaps de logiciels souvent ce 8188 dans [anon] donc j'esperait que quelqu'un est une explication, le fait qu'il soit si souvent présent, je pense que c'est le noyau qui l'alloue mais pourquoi? et ou ? :s
    Autant que je sache, pmap fait état des segments de mémoire partagée alloués avec mmap et les segments « anonymes », déclarés avec MAP_ANONYMOUS, sont ceux qui ne sont rattachés à aucun fichier propre (à l'image des tubes nommés ou anonymes) et qui, donc, iront dans le swap si nécessaire. Il me semble que c'est la façon « BSD » de gérer la chose.

    Donc, il est normal qu'un mtrace() sur les appels à malloc() ne donne rien. Ce qui est plus étonnant, c'est que vérification faite, ça ne semble pas choquer valgrind non plus.

  8. #8
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Tu peux aussi utiliser un outil de type valgrind ou purify.....
    Il y'a la possibilité de le combiner avec un outil d'analyse de couverture de code (gcov) pour voir quel code est executé.



    tu peux aussi regarder dans les logs/traces reseau dans la période ou la mémoire a augmenté et comparer avec ce qu'il se passe en temps normal pour essayer de deviner dans quelle partie du code cela se situe.

Discussions similaires

  1. tempdb qui augmente
    Par dngaya dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 21/05/2007, 16h25
  2. liste de combo qui augmente
    Par philguio dans le forum IHM
    Réponses: 7
    Dernier message: 30/12/2006, 09h46
  3. Pb de tablespace UNDO qui augmente toujours
    Par foster06 dans le forum Oracle
    Réponses: 2
    Dernier message: 08/12/2006, 18h32
  4. Réponses: 9
    Dernier message: 08/12/2006, 10h36
  5. [JVM]Mémoire utilisée qui augmente...
    Par Vrylx dans le forum Général Java
    Réponses: 1
    Dernier message: 11/10/2005, 13h10

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