Existe-t-il un outil qui exécutera une ligne de commande et indiquera le total d'utilisation maximale de la RAM?
J'imagine quelque chose d'analogue à / usr / bin / time
linux
command-line
memory-management
jes5199
la source
la source
[ Edit : Works on Ubuntu 14.04:
/usr/bin/time -v command
Assurez-vous d'utiliser le chemin complet.]On dirait que
/usr/bin/time
cela vous donne ces informations, si vous réussissez-v
(c'est sur Ubuntu 8.10). Voir, par exemple,Maximum resident set size
ci - dessous:la source
/bin/time -v
le résout.time -l
sur MacOS, donne une sortie similaire.(C'est une vieille question déjà répondue .. mais juste pour mémoire :)
J'ai été inspiré par le script de Yang et j'ai trouvé ce petit outil, nommé memusg . J'ai simplement augmenté le taux d'échantillonnage à 0,1 pour gérer les processus de vie très courts. Au lieu de surveiller un seul processus, je l'ai fait mesurer la somme rss du groupe de processus. (Oui, j'écris beaucoup de programmes distincts qui fonctionnent ensemble) Il fonctionne actuellement sur Mac OS X et Linux. L'usage devait être similaire à celui de
time
:Cela ne montre que le pic pour le moment, mais je suis intéressé par de légères extensions pour enregistrer d'autres statistiques (approximatives).
Il est bon d'avoir un outil aussi simple pour jeter un œil avant de commencer un profilage sérieux.
la source
ps -o rss=
où rss est la taille réelle de la mémoire (ensemble résident) du processus (en unités de 1024 octets) à partir de ma page de manuel BSD.Valgrind one-liner:
valgrind --tool=massif --pages-as-heap=yes --massif-out-file=massif.out ./test.sh; grep mem_heap_B massif.out | sed -e 's/mem_heap_B=\(.*\)/\1/' | sort -g | tail -n 1
Notez l'utilisation de --pages-as-heap pour mesurer toute la mémoire d'un processus. Plus d'informations ici: http://valgrind.org/docs/manual/ms-manual.html
la source
time
, Je te quitte.valgrind --massif
. Vous pouvez également utiliser l'ms_print
outil qui l'accompagne pour une sortie pratique (y compris des graphiques d'utilisation ascii au fil du temps)time
cela, prenant au moins 10 fois plus de temps sur une commande commels
.Sous Linux:
Utilisez
/usr/bin/time -v <program> <args>
et recherchez « Taille maximale du jeu de résidents ».(À ne pas confondre avec la
time
commande intégrée Bash ! Utilisez donc le chemin complet ,/usr/bin/time
)Par exemple:
Sur BSD, MacOS:
Utilisation
/usr/bin/time -l <program> <args>
, à la recherche de " taille maximale de l'ensemble de résidents ":la source
sudo apt-get install time
Peut-être que (gnu) time (1) fait déjà ce que vous voulez. Par exemple:
Mais d'autres outils de profilage peuvent donner des résultats plus précis en fonction de ce que vous recherchez.
la source
time
est une commande intégrée lors de l'utilisationcsh
. Si vous utilisez le chemin exact, il vous permettra d'exécuter la commande externe. Pour autant que je sache, seule la version GNU prend en charge l'option de format./ usr / bin / time fait peut-être ce que vous voulez, en fait. Quelque chose comme.
Voir l'heure (1) pour plus de détails ...
la source
Sur MacOS Sierra, utilisez:
Vous pouvez utiliser
grep
pour prendre ce que vous voulez peut-être.la source
command time -l
place de/usr/bin/time -l
laquelle votre shell appellera en fait un binaire appelé à latime
place de la fonction intégrée. (Oui, cecommand
n'est pas un espace réservé,command time
c'est différent de justetime
.)Si le processus s'exécute pendant au moins quelques secondes, vous pouvez utiliser le script bash suivant, qui exécutera la ligne de commande donnée, puis imprimera pour stderr le pic RSS (remplacez
rss
tout autre attribut qui vous intéresse). Il est un peu léger et il fonctionne pour moi avec leps
inclus dans Ubuntu 9.04 (que je ne peux pas dire pourtime
).la source
la source
Eh bien, si vous voulez vraiment montrer le pic de mémoire et quelques statistiques plus approfondies, je recommande d'utiliser un profileur tel que valgrind . Un bon front-end valgrind est alleyoop .
la source
Vous pouvez utiliser un outil comme Valgrind pour ce faire.
la source
Voici (basé sur les autres réponses) un script très simple qui surveille un processus déjà en cours. Vous venez de l'exécuter avec le pid du processus que vous souhaitez regarder comme argument:
Exemple d'utilisation:
la source
Utilisez Massif: http://valgrind.org/docs/manual/ms-manual.html
la source
Heaptrack est un outil KDE qui possède une interface graphique et une interface texte. Je trouve plus approprié que valgrind de comprendre l'utilisation de la mémoire d'un processus car il fournit plus de détails et de graphiques de flamme. C'est aussi plus rapide car il vérifie moins ce valgrind. Et cela vous donne l'utilisation maximale de la mémoire.
Quoi qu'il en soit, le suivi des rss et des vss est trompeur car les pages peuvent être partagées, c'est pourquoi cela
memusg
. Ce que vous devez vraiment faire est de suivre la sommePss
dans/proc/[pid]/smaps
ou à l' utilisationpmap
. Le moniteur système GNOME le faisait auparavant mais c'était trop cher.la source
Réinventer la roue, avec un script bash fait à la main. Rapide et propre.
Mon cas d'utilisation: je voulais surveiller une machine Linux qui a moins de RAM et je voulais prendre un instantané de l'utilisation par conteneur lorsqu'elle fonctionne sous une utilisation intensive.
Exemple de sortie:
la source
Sur macOS, vous pouvez utiliser DTrace à la place. L'application "Instruments" est une belle interface graphique pour cela, elle est livrée avec XCode afaik.
la source
'htop' est la meilleure commande pour voir quel processus utilise la quantité de RAM .....
pour plus de détails http://manpages.ubuntu.com/manpages/precise/man1/htop.1.html
la source
Désolé, je suis la première fois ici et je ne peux que poser des questions…
Utilisé suggéré:
puis:
c'est très différent de ce que la
top
commande montre au même moment:quelles sont les unités mesurées de Valgrind ??
Le
/usr/bin/time -v ./test.sh
jamais répondu - vous devez directement nourrir l'exécutable pour/usr/bin/time
aimer:la source