Derniers journaux de nicOnicO :
- [27/08@16:30] [HS] tout ça pour ça : le concert de Madonna à Nice
- [26/08@09:16] Firefox: Encore plus vite que vite
- [15/08@12:18] [HS] Les russes se foutent de nous ?
- [06/08@10:52] [HS] mini-tornade, centaine de mini maisons dévastées, 3 mini morts et 12 mini blessés
- [23/07@17:52] L'extension à l'infini du droit d'auteur
- [15/07@18:05] "Affaire eBay-LVMH : 3,25 millions pour atteinte à leur réseau de distribution sélective."
- [09/07@12:23] La suite de Lestelechargements.com
- [30/06@13:11] "le lobby des télécommunications est actif et efficace. Mais où est le lobby du droit d’auteur et du copyright ? Inexistant à Bruxelles, faible à Paris…”
- [18/06@14:41] Christophe Espern : « L’industrie du disque essaye d’éponger la mer avec une serpillère »
- [18/06@12:14] "Anti-Counterfeiting Trade Agreement (ACTA)"
- [22/05@18:14] Cours du collège de France en ligne
- [14/05@14:32] Le brevet logiciel revient au travers d'un traité bilatéral US-Europe !
- [24/04@22:08] Lisaac plus rapide que le C !
- [14/04@14:02] "Vous n’avez pas à vous débarrasser de votre ordinateur à chaque fois que Microsoft lance une nouvelle version de ses logiciels. "
- [12/04@16:28] VLC et son érgonomie
- [25/03@14:02] [HS] Emplois, salaire et manque de troll politique...
- [19/03@09:57] Éric Besson devient "secrétaire d'État chargé du développement de l'économie numérique"
- [02/03@20:04] "« Propriété intellectuelle » est un euphémisme malencontreux"
- [24/01@15:35] Un nouveau processeur VIA
- [21/01@09:35] [presque HS] Le rapport Attali « propriété » de l'éditeur Bernard Fixot !
Journal : Récupérer la mémoire consommée
Posté par Nicolas Boulay () le 04 septembre 2008Time propose de rendre des informations sur la mémoire en plus du temps passé, mais il rend toujours "0".
J'ai lu cette page mais cela a l'air bien complexe:
http://elinux.org/Runtime_Memory_Measurement
En gros, elle suggère de lancer le test puis d'aller fouiller dans /proc ou dans la commande ps. Le problème est qu'il peut y avoir une race condition et que l'on ne peut pas avoir la "taille max".
La commande statique size permet d'avoir déjà beaucoup d'information (taille des données statiques et du code). Mais j'aimerais avoir les tailles allouées par malloc() et la taille de la pile sans devoir instrumenter mon code.
Donc, est-ce que vous connaissez un moyen simple d'avoir la taille max de la mémoire consommé par le tas (malloc) et la pile sur un processus "court" ? Ou est-ce que je vais devoir bricoler avec un ps lancé en parallèle ?
> Lire le journal (17 commentaires, moyenne: 3,1).
valgrind
Le seul outil qui te donnera les info fiable sur le sujet, c'est massif l'outil de valgrind. Sinon tu peux creer une lib qui intercepte tous les appel aux fonctions d'allocation (malloc,mmap,brk,...) et faire tes mesures toi meme.
Mais syncerement, massif pour analyser la conso memoire et callgrind pour analyser le temp passe dans chaque operation sont les deux seuls outils qui te donneront des informations fiables et utilisable.
-
[^]Re: valgrind
a la mimine
Tu peux toujours reimplementer un malloc bete qui appelle le vrai (via un syscall sinon ça va boucler severe avant de peter la pile ...) mais qui en profite pour comptabiliser dans une globale statique la taille memoire allouée et pourquoi pas generer un graphique via un thread. le tout dans une lib dynamique prechargée via un LD_PRELOAD.
ca ralentira considerablement le processus, mais tu pourra l'appliquer a n'importe quel process.
Ma signature ici
-
[^]Re: a la mimine
Posté par Sebastien Tanguy (page perso, ) le 04/09/2008 à 19:32. (lien). Évalué à 1.Tu peux toujours reimplementer un malloc bete qui appelle le vrai (via un syscall sinon ça va boucler severe avant de peter la pile ...)
Hum, tu es sûr de ce que tu dis? Il me semble que malloc n'est pas un appel système, mais une fonction de la libc. À moins que tu ne veuilles parler de brk(2)? Enfin, sans aller jusque là, la technique "habituelle" serait de faire un dlopen/dlsym de la libc et du symbole de malloc().
seb.-
[^]Re: a la mimine
-
struct rusage
Et en utilisant la struct rusage que te fournit wait4, et notamment les membres :
long ru_maxrss; /* max resident set size */
#define ru_first ru_ixrss
long ru_ixrss; /* integral shared memory size */
long ru_idrss; /* integral unshared data " */
long ru_isrss; /* integral unshared stack " */
tu n'as pas cette info ?
Source :
man 2 wait4
/usr/include/sys/ressource.h
-
[^]Re: struct rusage
Posté par Nicolas Boulay () le 04/09/2008 à 13:36. (lien). Évalué à 2.getrusage ressemble beaucoup aux informations que retourne time -A (mais qui sont toute nulle).
Je vais regarder.
[+] Journal ?!
Je me trompe où tu as fais un journal à la place d'écrire dans un forum ?
Et lorsque tu voudras faire un journal, tu en feras une dépêche de première page ?
-
[^]Re: Journal ?!
Posté par Nicolas Boulay () le 04/09/2008 à 14:24. (lien). Évalué à 9.Je me disais aussi qu'il manquait un commentaire aigri sur cette page...
-
[^]Re: Journal ?!
Posté par Matthieu Lagouge (Jabber id, page perso, ) le 05/09/2008 à 03:02. (lien). Évalué à 2.Et voilà! Pour la prochaine évolution majeure de linuxfr, les forums seront présentés sur la page d'accueil et on pourra les pertinenter ou les moinsser. Commes les forums sont moins lus que le reste, leur note par défaut sera inférieure à celle des journaux etc.
exmap
http://labs.o-hand.com/exmap-console/
Exemple pour le processus nautilus :
exmap nautilus
http://pastebin.com/m73c72c92
Exmap est très verbeux par défault, mais il y a des options de filtrage et de tri. Il t'affiche aussi une donnée bien sympathique: le "sole use" qui est la quantité de mémoire réellement consommée par le processus. Par exemple pour une appli GTK, les bibliothèques GTK sont partagées entre différent processus. Le sole use ne montre donc que la mémoire que seule cette application utilise, ce qui est un bonne indicateur de sa consommation mémoire réelle, quand tu es dans l'environnement cible. Ici, nautilus consommerait plus en "sole use" s'il était chargé dans un environnement KDE, vu qu'il serait la seule appli en cours d'utilisation utilisant les bibliothèques GNOME.
Voici une vue plus synthétique des informations fournies par exmap :
exmap --no-file-info nautilus
Process 4397 [nautilus]
Virtual memory : 92812 KB
Effective VM : 86660 KB
Heap : 6680 KB
Stack : 260 KB
vdso : 0 B
Mapped : 18704 KB
Effective mapped: 12552 KB
Sole use : 8792 KB
-
[^]Re: exmap
Posté par liberforce (Jabber id, page perso, ) le 04/09/2008 à 16:15. (lien). Évalué à 0.ah, et si tu veux les pics de consommation, ils n'ont pas l'air fournis par exmap. Tu peux alors essayer ceci :
cat /proc/$(pgrep nautilus)/status | grep VmPeak-
[^]Re: exmap
Posté par liberforce (Jabber id, page perso, ) le 04/09/2008 à 16:16. (lien). Évalué à 5.Arf, moinssez moi, j'ai encore cette mauvaise habitude :-p. Utilise plutôt :
grep VmPeak /proc/$(pgrep nautilus)/status-
[^]Re: exmap
Posté par plic () le 04/09/2008 à 16:49. (lien). Évalué à 5.Ouf, passé très près du Useless Use of Cat !
http://partmaps.org/era/unix/award.html#cat--
«La faculté de citer est un substitut commode à l'intelligence» — Sommerset Maugham
-
[^]Re: exmap
Posté par skeespin (page perso, ) le 04/09/2008 à 17:20. (lien). Évalué à 2.dis plutôt que tu veux utiliser tous les cores de ton CPU :op
-
-
un petit truc...
Et ce petit truc, ça peut pas aider ?
/*
* Warning: this function was a GNU/Linuxism !
*/
malloc_stats();
un compte rendu
J'ai testé toutes les méthodes proposées :
- valgrind avec massif
- valgrind avec memcheck
- exmap
- le grep de VmPeak
Pas un seul ne donne les mêmes résultats. En effet, entre les effets de partages mémoire (library), le COW, l'allocation paraisseuse (après un malloc il faut effectivement accéder à une page pour qu'elle soit lu), que le chiffre est différent.
memcheck donne ce qui est demander par malloc(). Dans mon cas, 3Go.
massif donne des résultats étranges sur mon cas de test. Mais je n'ai pas la dernière version.
exmap marque les pages utilisées réellement par le noyau (c'est un module noyau), on a donc les pages utilisées uniquement par le processus analysées (125Ko dans mon cas).
Vmpeak correspond à la demande au système de pagination du noyau. J'ai 1Go dans mon cas, ce qui correspond à ma RAM (qui est inférieur au malloc de 3Go).
Mon cas de test est spécial, mais finalement, cela montre bien la complexité de mesure de la mémoire consommée.
Les journaux sont destinés à des informations qui ne sont pas suffisamment intéressantes
pour être validées en dépêche (sinon n'hésitez pas à proposer votre information en
dépêche), qui sont sans rapport avec Linux ou le libre, ou simplement pour donner votre
avis. Si vous désirez poser une question, merci d'utiliser 

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.