-
taille d'un process
bonjour,
je cherche a obtenir la taille memoire d'un process, a priori sans utiliser ni top ni ps.
mon besoins precis est de lancer beaucoup de petits process (duree d'execution < 1 seconde, d'ou le fait d'eviter top et ps) - des programmes de tests - et de comparer leurs executions (en occupation memoire, et si possible en temps d'execution aussi).
Existe-t-il un moyen deja existant ?
en ce moment, j'essaye de lancer le programme avec strace, puis de calculer l'encombrement a partir des brk et mmap.
Pour le temps d'execution, j'utilise date avant et apres... avec le desavantage que ce n'est pas du temps cpu.
Alex
-
Bonjour,
Tu ne précises pas l'OS que tu utilises.
Sur un Linux 2.4 et + tu peux directement consulter
/proc/<pid> (ou pid est le PID de ton process à mesurer)
Code:
1 2
|
cat /proc/<pid>/status |
te donne accès à différentes informations entre autre :
VmSize: Taille (ko) de la mémoire virtuelle
VmLck: Taille (ko) de la partie verrouillée en MC de la mémoire virtuelle
VmRSS: Taille (ko) résidente (en MC) de la mémoire virtuelle
VmData: Taille (ko) en mémoire virtuelle du segment de données.
VmStk: Taille (ko) en mémoire virtuelle de la pile.
VmExe: Taille (ko) en mémoire virtuelle de l'exécutable spécifique.
VmLib: Taille (ko) en mémoire virtuelle des libs.
-
j'utilise un linux redhat 2.4.21-9.ELsmp (RH-WS_3.0.U1).
Quelle est la frequence de rafraichissement des fichiers /proc/<pid> ?
hormis un format de lecture plus facile, je ne vois pas la difference avec ps ou top: l'information recueillie depend du moment ou on fait l'echantillonage, on obtient une valeur approximative (je cherche a calculer la valeur max, si possible sans faire d'attente active).
-
/proc et /sys, c'est une vue temps réel de ton système.
Dans ta demande tu voulais :
"la taille memoire d'un process, a priori sans utiliser ni top ni ps."
"temps d'execution aussi"
Sans top ni ps le plus court chemin est de regarder directement dans /proc et /sys.
Je ne t'ai fourni que les indications du fichier status, il existe plein d'autres infos attachées à ton process que tu peux exploiter, à toi d'adapter ces informations dans un shell, qui peut d'ailleurs être le shell que tu executes toutes les secondes.
Pour le time, il suffit de lancer avant ton shell la command : time tonshell.sh
-
merci beaucoup pour les infos
j'ai mon bonheur et mon malheur dans time de tcsh (version GNU 1.7) :
il trace aussi la memoire (memory, io, pagefault, swap) :-)
mais pas sur toutes les plateformes, pas sur la mienne :-(