2010-12-02 20 views
1

Comment puis-je mesurer le haut (maximum) utilisation de la mémoire de certains programm?Mesure la consommation de mémoire supérieure (programme linux)

Il fait beaucoup de malloc/gratuit, et fonctionne plutôt vite, donc je ne peux pas voir la mémoire max en haut.

Je veux smth comme time utilitaire:

$ time ./program 
real xx sec 
user xx sec 
sys xx sec 

et

$ mem_report ./program 
max memory used xx mb 
shared mem  xx mb 
+0

Je comprends que vous voulez un programme existant, ne vous? Parce que si c'est votre programme, vous pouvez le gérer d'une manière différente. –

+0

Quelle langue? Pourquoi ne pas l'exécuter depuis le débogueur/a? – initall

+0

Oui, il s'agit de mesurer un exécutable existant. Il est écrit en C, mais je veux obtenir un utilitaire, facile à utiliser comme 'time'. L'exécution à partir du débogueur n'aide pas, n'est-ce pas? – osgx

Répondre

1

L'appel time est votre shell. Si vous appelez /usr/bin/time, le programme, vous obtiendrez quelques connaissances de l'utilisation de la mémoire résident. Notez cependant qu'il peut ne pas compter les fichiers mappés en mémoire, la mémoire partagée et d'autres détails dont vous pourriez avoir besoin.

+0

Ce n'est pas le cas, seules les erreurs de page sont signalées, mais pas la mémoire. '(0avgtext + 0avgdata 0maxresident) k 0inputs + 0outputs (+ 1major 1822minor) pagefaults 0swaps' – osgx

+0

C'est étrange. Même un doux 'wc' de'/etc/hosts' donne une certaine utilisation de RSS. Peut-être que votre programme se termine bien avant qu'un sondage des statistiques se produise. –

+0

donc l'utilitaire '/ usr/bin/time' utilise aussi l'interrogation? le temps d'exécution est 0.3 sec d'utilisateur, 3 sec de réel. – osgx

0

Si vous êtes sous Linux, vous pouvez envelopper votre programme dans un script qui interroge:

# for your current process 
/proc/self/statm 

# or a process you know the pid of 
/proc/{pid}/statm 

et écrit les résultats - vous pouvez les regrouper par la suite.

+0

l'interrogation est incorrecte pour les programmes en cours d'exécution – osgx