time
est une commande brillante si vous voulez savoir combien de temps prend une commande donnée.
Je cherche quelque chose de similaire qui puisse mesurer l'utilisation maximale de RAM du programme et des enfants. De préférence, il convient de distinguer entre la mémoire allouée qui a été utilisée et non utilisée. Peut-être pourrait-il même donner l’utilisation médiane de la mémoire (c’est-à-dire l’utilisation de la mémoire à laquelle vous devriez vous attendre lorsqu’il est exécuté longtemps).
Donc j'aimerais faire:
rammeassure my_program my_args
et obtenir une sortie similaire à:
Max memory allocated: 10233303 Bytes
Max memory used: 7233303 Bytes
Median memory allocation: 5233303 Bytes
J'ai regardé memusg
https://gist.github.com/526585/590293d6527c91e48fcb08db8de9fd6c88a6d82 mais je considère que c'est un peu un bidouillage.
./tstime -t bash -c 'perl -e "\$a=\"x\"x100000000;\$b=\$a.\$a;\$b=\"\";\$a=\"\";sleep 10;"'
glibc
(et d'autres bibliothèques assorties, ils sont appelés "partagés" pour quelque chose). De nombreux démons chargent la configuration dans la mémoire et les enfants fork (2), qui partagent ensuite les données de configuration. Ensuite, il y a des données dans les tampons readahead / writebehind gérés par le noyau. Et puis, il existe des services qui constituent un ensemble de processus faiblement couplés (pensez à votre environnement de bureau et à ses applets et éléments d'arrière-plan).time
est intégré à votre shell. Si vous aimeztime
mais avez besoin de plus d’informations, essayez GNUtime
en-v
mode verbose ( ):Recherchez le paquet "time" ou "gnutime" dans votre gestionnaire de paquets.
la source
wait3
remplit une structure décrite dansgetrusage(2)
: 'Tous les champs n'ont pas de sens sous Linux. [..] '.tstime
10652 Ko. Encore une fois sous Ubuntu 10.04./usr/bin/time -v perl -e '$a="x"x100000000;$b=$a.$a;sleep 10;'
. top dit qu'il faut environ 570 Mo, mais le temps dit 2,3 Go. En pratique, ce nombre ne m’est pas utile.Peut-être exagéré, mais je viens de trouver que cet
valgrind
outil est nommémassif
. Je l'ai testé surxterm
:Et vous obtenez un graphique d'utilisation de la mémoire agréable:
avec des informations d'utilisation de la mémoire trop détaillées. Détails dans le manuel valgrind .
Les programmes fonctionneront environ 20 fois plus lentement. Aussi, j'ai couru quelques commandes à l'intérieur du
xterm
. Leur empreinte mémoire a été prise en compte car--trace-children=yes
l’option est là!la source
Même si le sujet est assez ancien, je souhaite partager un autre projet issu de la fonctionnalité du noyau Linux de cgroups.
https://github.com/gsauthof/cgmemtime :
la source
On dirait que tstime ne fonctionne plus sous non-root sous Linux> = 3.0. Voici un utilitaire d'interrogation que j'ai écrit pour pirater le problème: https://github.com/jhclark/memusg/blob/master/memusg
la source
/usr/bin/time -v
donne la sortie correcte dans les nouvelles versions. Dans les versions plus anciennes, il suffit de diviser par 4 pour obtenir le montant correct.